//
// Created by Dan Crosby on 5/10/21.
//

#ifndef EAGLE0_AIDISTANCEDEBUF_HPP
#define EAGLE0_AIDISTANCEDEBUF_HPP

#include "AIAttackLocations.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/action_point_distances/ActionPointDistances.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/action_point_distances/ActionPointDistancesCache.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/map/CoordsSet.hpp"
#include "src/main/cpp/net/eagle0/shardok/library/settings/GameSettings.hpp"

namespace shardok {

using std::shared_ptr;
using std::vector;

auto DefenderDistanceBuf(
        const Coords &defenderLocation,
        const HexMap *hexMap,
        const MapId &mapId,
        const vector<const Unit *> &attackerUnits,
        const APDCache &apdCache,
        const ALCache &alCache,
        const SettingsGetter &settings,
        int braveWaterActionPointCost,
        bool lateGame,
        bool includeUndead) -> double;

}  // namespace shardok
#endif  // EAGLE0_AIDISTANCEDEBUF_HPP
