From c601ee80e841a1aef2911652bc173bed7461f919 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20Bergstr=C3=B6m?= <davbe125@student.liu.se>
Date: Thu, 28 Jun 2018 11:38:51 +0200
Subject: [PATCH] Add constructors for UnitType objects

Note the implicit conversion between UNIT_TYPEID and UnitTypeID. This
allows for the creation of UnitType objects directly from UNIT_TYPEID.
---
 python-api-src/lib_unittype.cpp |  1 +
 python-api-src/library.cpp      | 12 ++++++++++++
 2 files changed, 13 insertions(+)

diff --git a/python-api-src/lib_unittype.cpp b/python-api-src/lib_unittype.cpp
index 0586d1b..c3535b4 100644
--- a/python-api-src/lib_unittype.cpp
+++ b/python-api-src/lib_unittype.cpp
@@ -5,6 +5,7 @@ namespace py = pybind11;
 void define_unittype(py::module & m)
 {
     py::class_<UnitType>(m, "UnitType")
+        .def(py::init<const sc2::UnitTypeID &, IDABot &>())
         .def("is", &UnitType::is, "Check if UnitType is UnitTypeID")
         .def(py::self == py::self)
         .def_property_readonly("name", &UnitType::getName)
diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp
index c5a4e4f..855f447 100644
--- a/python-api-src/library.cpp
+++ b/python-api-src/library.cpp
@@ -26,6 +26,18 @@ PYBIND11_MODULE(library, m)
         .value("Protoss", sc2::Race::Protoss)
         .value("Random", sc2::Race::Random);
 
+    /*
+    TODO: These also needs to be defined
+
+    typedef SC2Type<ABILITY_ID>   AbilityID;
+    typedef SC2Type<UPGRADE_ID>   UpgradeID;
+    typedef SC2Type<BUFF_ID>      BuffID;
+    */
+    py::class_<sc2::UnitTypeID>(m, "UnitTypeID")
+        .def(py::init<sc2::UNIT_TYPEID>());
+
+    py::implicitly_convertible<sc2::UNIT_TYPEID, sc2::UnitTypeID>();
+
     py::class_<sc2::Agent>(m, "Agent")
         .def(py::init());
 
-- 
GitLab