//
// Created by Dan Crosby on 4/7/21.
//

#ifndef EAGLE0_AISCOREUTILITIES_HPP
#define EAGLE0_AISCOREUTILITIES_HPP

#include <vector>

#include "src/main/cpp/net/eagle0/shardok/library/ShardokCTypes.h"
#include "src/main/flatbuffer/net/eagle0/shardok/storage/game_state.hpp"
#include "src/main/flatbuffer/net/eagle0/shardok/storage/unit.hpp"

namespace shardok {

using ScoreValue = double;

using std::vector;

using GameState = net::eagle0::shardok::storage::fb::GameState;
using PlayerInfo = net::eagle0::shardok::storage::fb::PlayerInfo;
using Unit = net::eagle0::shardok::storage::fb::Unit;

auto HasAttachedHeroWithProfession(
        const Unit *unit,
        net::eagle0::shardok::storage::fb::Profession profession) -> bool;

auto CastleClaimCapableAttackerUnitCount(const GameState *gameState) -> int;
auto PlayerInfoForPid(const GameState *gs, PlayerId pid) -> const PlayerInfo *;

}  // namespace shardok

#endif  // EAGLE0_AISCOREUTILITIES_HPP
