From 321c3be0a2942fe2835f61036be52340ae13e501 Mon Sep 17 00:00:00 2001
From: Rojikku98 <be.edvin@gmail.com>
Date: Tue, 28 Jul 2020 11:11:27 +0200
Subject: [PATCH] Added OnUnitDestroyed and OnUnitCreated

---
 python-api-src/library.cpp |  2 ++
 python-api-src/library.h   | 21 +++++++++++++++++++++
 src/IDAReplayObserver.cpp  | 26 ++++++++++++++++++++++++--
 src/IDAReplayObserver.h    |  5 ++++-
 4 files changed, 51 insertions(+), 3 deletions(-)

diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp
index a7459c8a1..72b261813 100644
--- a/python-api-src/library.cpp
+++ b/python-api-src/library.cpp
@@ -102,6 +102,8 @@ PYBIND11_MODULE(library, m)
 		.def("get_player_race", &IDAReplayObserver::GetPlayerRace,"player_id"_a)
 		.def("get_replay_path", &IDAReplayObserver::GetReplayPath)
 		.def("get_result_for_player", &IDAReplayObserver::GetResultForPlayer, "player_id"_a)
+		.def("on_unit_destroyed", &IDAReplayObserver::OnReplayUnitDestroyed, "unit"_a)
+		.def("on_unit_created", &IDAReplayObserver::OnReplayUnitCreated, "unit"_a)
 		;
 
 	
diff --git a/python-api-src/library.h b/python-api-src/library.h
index 89118af07..3f9114d06 100644
--- a/python-api-src/library.h
+++ b/python-api-src/library.h
@@ -95,6 +95,27 @@ public:
 
 		);
 	}
+	void OnReplayUnitDestroyed(const ReplayUnit *unit) override
+	{
+		PYBIND11_OVERLOAD_NAME(
+			void,
+			IDAReplayObserver,
+			"on_unit_destroyed",
+			OnReplayUnitDestroyed,
+			unit
+		);
+	}
+	void OnReplayUnitCreated(const ReplayUnit *unit) override
+	{
+		PYBIND11_OVERLOAD_NAME(
+			void,
+			IDAReplayObserver,
+			"on_unit_created",
+			OnReplayUnitCreated,
+			unit
+		);
+	}
+	
 };
 
 // The functions below are all defined in different .cpp files, in order 
diff --git a/src/IDAReplayObserver.cpp b/src/IDAReplayObserver.cpp
index d2b5c61cf..b9ed6d12e 100644
--- a/src/IDAReplayObserver.cpp
+++ b/src/IDAReplayObserver.cpp
@@ -1,5 +1,7 @@
 #include "IDAReplayObserver.h"
 #include "Util.h"
+#include <pybind11/pybind11.h>
+
 
 void IDAReplayObserver::setUnits()
 {
@@ -32,13 +34,33 @@ void IDAReplayObserver::OnGameEnd()
 void IDAReplayObserver::OnUnitDestroyed(const sc2::Unit* unit)
 {
 	ReplayUnit unitInformation = ReplayUnit(unit, *this);
-	OnUnitInfomationDestroyed(&unitInformation);
+	OnReplayUnitDestroyed(&unitInformation);
 }
 
-void IDAReplayObserver::OnUnitInfomationDestroyed(const ReplayUnit *)
+void IDAReplayObserver::OnReplayUnitDestroyed(const ReplayUnit *)
 {
+	
 }
 
+void IDAReplayObserver::OnUnitCreated(const sc2::Unit * unit)
+{
+	ReplayUnit unitInformation = ReplayUnit(unit, *this);
+	std::cout << "OnUnitCreated" << std::endl;
+	OnReplayUnitCreated(&unitInformation);
+}
+
+void IDAReplayObserver::OnReplayUnitCreated(const ReplayUnit *)
+{
+}
+
+void IDAReplayObserver::OnBuildingConstructionComplete(const sc2::Unit *unit)
+{
+	ReplayUnit unitInformation = ReplayUnit(unit, *this);
+	std::cout << "OnBuildingConstructionComplete" << std::endl;
+	OnReplayUnitCreated(&unitInformation);
+}
+
+
 
 
 ReplayUnit IDAReplayObserver::GetUnit(const CCUnitID tag) const
diff --git a/src/IDAReplayObserver.h b/src/IDAReplayObserver.h
index 8791b180e..503726f42 100644
--- a/src/IDAReplayObserver.h
+++ b/src/IDAReplayObserver.h
@@ -20,7 +20,10 @@ public:
 	void OnStep() override;
 	void OnGameEnd() override;
 	void OnUnitDestroyed(const sc2::Unit*) override;
-	void OnUnitInfomationDestroyed(const ReplayUnit*);
+	virtual void OnReplayUnitDestroyed(const ReplayUnit*);
+	void OnUnitCreated(const sc2::Unit*);
+	virtual void OnReplayUnitCreated(const ReplayUnit*);
+	void OnBuildingConstructionComplete(const sc2::Unit*);
 
 	ReplayUnit GetUnit(const CCUnitID tag) const;
 
-- 
GitLab