#pragma once

#include "nlohmann/json.hpp"
#include <string>
#include <vector>
#include <fstream>
#include <iostream>
#include "sc2api/sc2_typeenums.h"


struct BuildAlternative
{
    sc2::UNIT_TYPEID type;
    std::vector<sc2::UNIT_TYPEID> buildings_needed;
    std::vector<sc2::UNIT_TYPEID> addons_needed;
};

class TechTreeImproved
{
    std::map<sc2::UNIT_TYPEID, std::vector<BuildAlternative>> data;
public:
    TechTreeImproved();
    void LoadData();
    const std::vector<BuildAlternative> & GetBuildAlternatives(sc2::UNIT_TYPEID) const;
    std::vector<std::pair<sc2::UNIT_TYPEID, BuildAlternative>> TechTreeImproved::HowToBuild(sc2::UNIT_TYPEID unit);
};