#include "IDAReplayObserver.h" #include "Util.h" #include <pybind11/pybind11.h> void IDAReplayObserver::setUnits() { m_allUnits.clear(); for (auto & unit : Observation()->GetUnits()) { m_allUnits.push_back(ReplayUnit(unit, *this)); } } IDAReplayObserver::IDAReplayObserver(): sc2::ReplayObserver() { } void IDAReplayObserver::OnGameStart() { setUnits(); } void IDAReplayObserver::OnStep() { setUnits(); } void IDAReplayObserver::OnGameEnd() { } void IDAReplayObserver::OnUnitDestroyed(const sc2::Unit* unit) { ReplayUnit unitInformation = ReplayUnit(unit, *this); OnReplayUnitDestroyed(&unitInformation); } 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 { return ReplayUnit(Observation()->GetUnit(tag), *(IDAReplayObserver *)this); } const std::vector<ReplayUnit>& IDAReplayObserver::GetAllUnits() const { return m_allUnits; } CCRace IDAReplayObserver::GetPlayerRace(int player) { return ReplayControl()->GetReplayInfo().players[player].race; } std::string IDAReplayObserver::GetReplayPath() { return ReplayControl()->GetReplayInfo().replay_path; } sc2::GameResult IDAReplayObserver::GetResultForPlayer(int player) { return ReplayControl()->GetReplayInfo().players[player].game_result; }