//
// Created by Dan Crosby on 8/30/23.
//

#ifndef EAGLE0_AIDEFENDERSTRATEGYSELECTOR_HPP
#define EAGLE0_AIDEFENDERSTRATEGYSELECTOR_HPP

#include "src/main/cpp/net/eagle0/shardok/ai/AIAttackLocations.hpp"
#include "src/main/cpp/net/eagle0/shardok/ai/AIStrategy.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/map/CoordsSet.hpp"
#include "src/main/flatbuffer/net/eagle0/shardok/storage/game_state.hpp"

namespace shardok {
class AIDefenderStrategySelector {
    using GameState = net::eagle0::shardok::storage::fb::GameState;

public:
    static auto BestDefenderStrategy(
            const GameState* gameState,
            const CoordsSet& criticalTileCoords,
            const APDCache& apdCache,
            const SettingsGetter& settings) -> AIStrategy;
};
}  // namespace shardok

#endif  // EAGLE0_AIDEFENDERSTRATEGYSELECTOR_HPP
