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