diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp index a7459c8a1f796febd73981912fb025dd861bd985..72b261813f844f485d0bc68717c4d7c995bb8605 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 89118af074c70399f6cb23c63fe5689775567451..3f9114d0685218dec0f51e838031976f622c5709 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 d2b5c61cf7f82dc73b896c4d39b8c2346186b963..b9ed6d12e129328da250cbdd16c7426af27f9643 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 8791b180eadac99eaabf63c7250eb95f77127d53..503726f429d351ce098309e913bb2a87001a036f 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;