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

#ifndef EAGLE0_MAPINFOCALCULATOR_HPP
#define EAGLE0_MAPINFOCALCULATOR_HPP

#include <cstdint>
#include <map>
#include <memory>
#include <string>

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

struct alignas(64) OneMapInfo {
    uint32_t castleCount;
    std::string name;
    std::map<int, int> positionsRequiringCrossing;
};

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

#endif  // EAGLE0_MAPINFOCALCULATOR_HPP
