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