Skip to content
Snippets Groups Projects
TechTreeImproved.h 858 B
Newer Older
  • Learn to ignore specific revisions
  • #pragma once
    
    #include "nlohmann/json.hpp"
    #include <string>
    #include <vector>
    #include <fstream>
    #include <iostream>
    #include "sc2api/sc2_typeenums.h"
    
    
    
    struct BuildDescription
    
        sc2::UNIT_TYPEID producer_type;
    
        sc2::UNIT_TYPEID result_type;
    
        sc2::AbilityID ability_used;
        float time;
    
    
        std::vector<sc2::UNIT_TYPEID> buildings_needed;
        std::vector<sc2::UNIT_TYPEID> addons_needed;
    };
    
    class TechTreeImproved
    {
    
        std::vector<BuildDescription> data;
        std::map<sc2::UNIT_TYPEID, std::vector<BuildDescription>> producer_to_data;
        std::map<sc2::UNIT_TYPEID, std::vector<BuildDescription>> result_to_data;
    
        void parse_unit(nlohmann::json::iterator it);
    
    public:
        TechTreeImproved();
        void LoadData();
    
        // Given a unit, how can we build it?
        const std::vector<BuildDescription> & HowToBuild(sc2::UnitTypeID unit) const;