//
// Created by Dan Crosby on 4/17/22.
//

#ifndef EAGLE0_MAPINFOCALCULATOR_HPP
#define EAGLE0_MAPINFOCALCULATOR_HPP

#include <map>
#include <string>

#include "src/main/cpp/net/eagle0/shardok/library/action_point_distances/ActionPointDistancesCache.hpp"

using namespace shardok;
using std::map;
using std::string;

struct OneMapInfo {
    uint32_t castleCount;
    string name;
    map<int, int> positionsRequiringCrossing;
} __attribute__((aligned(64)));

auto CalculateMap(
        const string& mapName,
        const std::shared_ptr<ActionPointDistancesCache>& apdCache,
        const BattalionTypeSPtr& battalionType) -> OneMapInfo;

#endif  // EAGLE0_MAPINFOCALCULATOR_HPP
