From af77350e7d14062aac5fe7d60308da536646eaac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Bergstr=C3=B6m?= <davbe125@student.liu.se> Date: Thu, 19 Jul 2018 16:49:00 +0200 Subject: [PATCH] Move conversion of TECHLAB types to C++ --- src/TechTreeImproved.cpp | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/TechTreeImproved.cpp b/src/TechTreeImproved.cpp index 84a394fd5..7cdd25589 100644 --- a/src/TechTreeImproved.cpp +++ b/src/TechTreeImproved.cpp @@ -26,12 +26,31 @@ void add_requirement(BuildDescription & description, json & requirement) } else if (type == "unitCount") { + // Units that needs to be completed at the unit location -> Addons if (requirement["state"] == "CompleteOnlyAtUnit") { for (auto & unit : requirement["unit"]) { //std::cout << "Addon: " << sc2::UnitTypeToName(static_cast<sc2::UNIT_TYPEID>(unit)) << " (" << unit << ")" << std::endl; - description.addons_needed.push_back(static_cast<sc2::UNIT_TYPEID>(unit)); + sc2::UNIT_TYPEID unit_typeid = static_cast<sc2::UNIT_TYPEID>(unit); + if (unit_typeid == sc2::UNIT_TYPEID::TERRAN_TECHLAB) + { + switch (description.producer_type) + { + case sc2::UNIT_TYPEID::TERRAN_BARRACKS: + unit_typeid = sc2::UNIT_TYPEID::TERRAN_BARRACKSTECHLAB; + break; + case sc2::UNIT_TYPEID::TERRAN_FACTORY: + unit_typeid = sc2::UNIT_TYPEID::TERRAN_FACTORYTECHLAB; + break; + case sc2::UNIT_TYPEID::TERRAN_STARPORT: + unit_typeid = sc2::UNIT_TYPEID::TERRAN_STARPORTTECHLAB; + break; + default: + std::cout << "Unknown producer type for TECHLAB addon: " << sc2::UnitTypeToName(unit_typeid) << std::endl; + } + } + description.addons_needed.push_back(unit_typeid); } } else if (requirement["state"] == "CompleteOnly") -- GitLab