diff --git a/python-api-src/lib_replay_unit.cpp b/python-api-src/lib_replay_unit.cpp index 9dfd83d1c2973ce871ef7fa859684e9f1591b2fa..7a70770dffa7c1738104f451276f1b6f9aaaf3bb 100644 --- a/python-api-src/lib_replay_unit.cpp +++ b/python-api-src/lib_replay_unit.cpp @@ -4,41 +4,41 @@ namespace py = pybind11; void define_replay_unit(py::module & m) { - py::class_<UnitInformation>(m, "ReplayUnit") - .def_property_readonly("id", &UnitInformation::getID) - .def_property_readonly("unit_type", &UnitInformation::getType, "The id of the type") - .def_property_readonly("unit_type_name", &UnitInformation::getTypeName, "The name of the type") - .def_property_readonly("position", &UnitInformation::getPosition, "The :class:`library.Point2D` of the unit") - .def_property_readonly("tile_position", &UnitInformation::getTilePosition, "The :class:`library.Point2DI` of the unit") - .def_property_readonly("hit_points", &UnitInformation::getHitPoints) - .def_property_readonly("shields", &UnitInformation::getShields) - .def_property_readonly("energy", &UnitInformation::getEnergy) - .def_property_readonly("player", &UnitInformation::getPlayer) - .def_property_readonly("build_percentage", &UnitInformation::getBuildPercentage) - .def_property_readonly("weapon_cooldown", &UnitInformation::getWeaponCooldown) - .def_property_readonly("is_completed", &UnitInformation::isCompleted) - .def_property_readonly("is_being_constructed", &UnitInformation::isBeingConstructed) - .def_property_readonly("is_cloaked", &UnitInformation::isCloaked) - .def_property_readonly("is_flying", &UnitInformation::isFlying) - .def_property_readonly("buffs", &UnitInformation::buffs) - .def_property_readonly("is_alive", &UnitInformation::isAlive) - .def_property_readonly("is_powered", &UnitInformation::isPowered) - .def_property_readonly("is_idle", &UnitInformation::isIdle) - .def_property_readonly("is_burrowed", &UnitInformation::isBurrowed) - .def_property_readonly("is_valid", &UnitInformation::isValid) - .def_property_readonly("is_training", &UnitInformation::isTraining) - .def_property_readonly("is_blip", &UnitInformation::isBlip) + py::class_<ReplayUnit>(m, "ReplayUnit") + .def_property_readonly("id", &ReplayUnit::getID) + .def_property_readonly("unit_type", &ReplayUnit::getType, "The id of the type") + .def_property_readonly("unit_type_name", &ReplayUnit::getTypeName, "The name of the type") + .def_property_readonly("position", &ReplayUnit::getPosition, "The :class:`library.Point2D` of the unit") + .def_property_readonly("tile_position", &ReplayUnit::getTilePosition, "The :class:`library.Point2DI` of the unit") + .def_property_readonly("hit_points", &ReplayUnit::getHitPoints) + .def_property_readonly("shields", &ReplayUnit::getShields) + .def_property_readonly("energy", &ReplayUnit::getEnergy) + .def_property_readonly("player", &ReplayUnit::getPlayer) + .def_property_readonly("build_percentage", &ReplayUnit::getBuildPercentage) + .def_property_readonly("weapon_cooldown", &ReplayUnit::getWeaponCooldown) + .def_property_readonly("is_completed", &ReplayUnit::isCompleted) + .def_property_readonly("is_being_constructed", &ReplayUnit::isBeingConstructed) + .def_property_readonly("is_cloaked", &ReplayUnit::isCloaked) + .def_property_readonly("is_flying", &ReplayUnit::isFlying) + .def_property_readonly("buffs", &ReplayUnit::buffs) + .def_property_readonly("is_alive", &ReplayUnit::isAlive) + .def_property_readonly("is_powered", &ReplayUnit::isPowered) + .def_property_readonly("is_idle", &ReplayUnit::isIdle) + .def_property_readonly("is_burrowed", &ReplayUnit::isBurrowed) + .def_property_readonly("is_valid", &ReplayUnit::isValid) + .def_property_readonly("is_training", &ReplayUnit::isTraining) + .def_property_readonly("is_blip", &ReplayUnit::isBlip) // Has target and target crashes if the target died in the same frame - //.def_property_readonly("target", &UnitInformation::getTarget) - //.def_property_readonly("has_target", &UnitInformation::hasTarget) - .def_property_readonly("max_hit_points", &UnitInformation::getMaxHitPoints) - .def_property_readonly("progress", &UnitInformation::getProgress) - .def_property_readonly("current_ability_id", &UnitInformation::getCurrentAbilityID, "The AbilityID of currently used ability") - .def_property_readonly("facing", &UnitInformation::getFacing) - .def_property_readonly("radius", &UnitInformation::getRadius) - .def_property_readonly("is_carrying_minerals", &UnitInformation::isCarryingMinerals) - .def("__hash__", [](const UnitInformation & unit) { return std::hash<const sc2::Unit *>{}(unit.getUnitPtr()); }) + //.def_property_readonly("target", &ReplayUnit::getTarget) + //.def_property_readonly("has_target", &ReplayUnit::hasTarget) + .def_property_readonly("max_hit_points", &ReplayUnit::getMaxHitPoints) + .def_property_readonly("progress", &ReplayUnit::getProgress) + .def_property_readonly("current_ability_id", &ReplayUnit::getCurrentAbilityID, "The AbilityID of currently used ability") + .def_property_readonly("facing", &ReplayUnit::getFacing) + .def_property_readonly("radius", &ReplayUnit::getRadius) + .def_property_readonly("is_carrying_minerals", &ReplayUnit::isCarryingMinerals) + .def("__hash__", [](const ReplayUnit & unit) { return std::hash<const sc2::Unit *>{}(unit.getUnitPtr()); }) .def(py::self == py::self) - .def("__repr__", [](const UnitInformation & unit) { return "<Unit of type: '" + unit.getTypeName() + "'>"; }) + .def("__repr__", [](const ReplayUnit & unit) { return "<Unit of type: '" + unit.getTypeName() + "'>"; }) ; } diff --git a/python-api-src/library.cpp b/python-api-src/library.cpp index 21611296f50f063c9d88e725b04d5ba731f1e4ef..1ec48212a0fa9b30beef9c3901cd7cc8c87d01dd 100644 --- a/python-api-src/library.cpp +++ b/python-api-src/library.cpp @@ -99,7 +99,6 @@ PYBIND11_MODULE(library, m) .def("on_step", &IDAReplayObserver::OnStep) .def("on_game_end", &IDAReplayObserver::OnGameEnd) .def("get_all_units", &IDAReplayObserver::GetAllUnits, "Returns a list of all units") - .def("on_unit_destroyed", &IDAReplayObserver::OnUnitInfomationDestroyed, "unit"_a) ; py::class_<sc2::PlayerSetup>(m, "PlayerSetup"); diff --git a/src/IDAReplayObserver.cpp b/src/IDAReplayObserver.cpp index 26c57d0dd4e8ea849b899f9692cb74242a8f0374..13728f586a0b3293b36dd0d5c89c4e3b1f7ff54e 100644 --- a/src/IDAReplayObserver.cpp +++ b/src/IDAReplayObserver.cpp @@ -3,14 +3,11 @@ void IDAReplayObserver::setUnits() { - m_allUnits.clear(); for (auto & unit : Observation()->GetUnits()) { - m_allUnits.push_back(UnitInformation(unit, *this)); + m_allUnits.push_back(ReplayUnit(unit, *this)); } - - } IDAReplayObserver::IDAReplayObserver(): @@ -20,10 +17,7 @@ IDAReplayObserver::IDAReplayObserver(): void IDAReplayObserver::OnGameStart() { - - setUnits(); - } void IDAReplayObserver::OnStep() @@ -37,21 +31,19 @@ void IDAReplayObserver::OnGameEnd() void IDAReplayObserver::OnUnitDestroyed(const sc2::Unit* unit) { - UnitInformation unitInformation = UnitInformation(unit, *this); + ReplayUnit unitInformation = ReplayUnit(unit, *this); OnUnitInfomationDestroyed(&unitInformation); } +void IDAReplayObserver::OnUnitInfomationDestroyed(const ReplayUnit *) +{ +} + -UnitInformation IDAReplayObserver::GetUnit(const CCUnitID tag) const +ReplayUnit IDAReplayObserver::GetUnit(const CCUnitID tag) const { - std::cout << tag << std::endl; - if (tag == 0) { - std::cout << "TAG == 0" << std::endl; - } - UnitInformation(Observation()->GetUnit(tag), *(IDAReplayObserver *)this); - std::cout << "OK" << std::endl; - return UnitInformation(Observation()->GetUnit(tag), *(IDAReplayObserver *)this); + return ReplayUnit(Observation()->GetUnit(tag), *(IDAReplayObserver *)this); } @@ -59,7 +51,7 @@ UnitInformation IDAReplayObserver::GetUnit(const CCUnitID tag) const -const std::vector<UnitInformation>& IDAReplayObserver::GetAllUnits() const +const std::vector<ReplayUnit>& IDAReplayObserver::GetAllUnits() const { return m_allUnits; diff --git a/src/IDAReplayObserver.h b/src/IDAReplayObserver.h index 16eaae6e52205295d850b1850085bb7375e89748..b23393a2ef8b4e94e9e98e6c8f02b36fd90fd443 100644 --- a/src/IDAReplayObserver.h +++ b/src/IDAReplayObserver.h @@ -4,33 +4,27 @@ #include <limits> #include "Common.h" -#include "UnitInformation.h" +#include "ReplayUnit.h" -class UnitInformation; +class ReplayUnit; class IDAReplayObserver : public sc2::ReplayObserver { - - - void setUnits(); - std::vector<UnitInformation> m_allUnits; + std::vector<ReplayUnit> m_allUnits; public: IDAReplayObserver(); - - void OnGameStart() override; void OnStep() override; void OnGameEnd() override; void OnUnitDestroyed(const sc2::Unit*) override; - virtual void OnUnitInfomationDestroyed(const UnitInformation*); - - UnitInformation GetUnit(const CCUnitID tag) const; + void OnUnitInfomationDestroyed(const ReplayUnit*); + ReplayUnit GetUnit(const CCUnitID tag) const; - const std::vector<UnitInformation> & GetAllUnits() const; + const std::vector<ReplayUnit> & GetAllUnits() const; }; diff --git a/src/UnitInformation.cpp b/src/ReplayUnit.cpp similarity index 81% rename from src/UnitInformation.cpp rename to src/ReplayUnit.cpp index a33b23f2433097a55bbd51a465f1eeff1660c168..1bab9381607394099b2d292bc4c6281db9da854f 100644 --- a/src/UnitInformation.cpp +++ b/src/ReplayUnit.cpp @@ -1,25 +1,25 @@ -#include "UnitInformation.h" +#include "ReplayUnit.h" -UnitInformation::UnitInformation(const sc2::Unit * unit, IDAReplayObserver & replayObserver) +ReplayUnit::ReplayUnit(const sc2::Unit * unit, IDAReplayObserver & replayObserver) : m_replayObserver(&replayObserver), Unit(unit) { } - std::string UnitInformation::getType() const + std::string ReplayUnit::getType() const { return m_unit->unit_type.to_string(); } - std::string UnitInformation::getTypeName() const + std::string ReplayUnit::getTypeName() const { return sc2::UnitTypeToName(m_unit->unit_type); } -bool UnitInformation::hasTarget() const +bool ReplayUnit::hasTarget() const { BOT_ASSERT(isValid(), "Unit is not valid"); std::cout << "HAS TARGET" << std::endl; @@ -43,7 +43,7 @@ bool UnitInformation::hasTarget() const return false; } -UnitInformation UnitInformation::getTarget() const +ReplayUnit ReplayUnit::getTarget() const { BOT_ASSERT(isValid(), "Unit is not valid"); @@ -64,7 +64,7 @@ UnitInformation UnitInformation::getTarget() const return m_replayObserver->GetUnit(t_id); } - UnitInformation this_unit = UnitInformation(m_unit, *m_replayObserver); + ReplayUnit this_unit = ReplayUnit(m_unit, *m_replayObserver); return this_unit; } diff --git a/src/UnitInformation.h b/src/ReplayUnit.h similarity index 55% rename from src/UnitInformation.h rename to src/ReplayUnit.h index 8352c5ba43fdfc27503a851c984a922ef9c65135..171dfc6823739b7180ee2a07d119f9a2ed5788f2 100644 --- a/src/UnitInformation.h +++ b/src/ReplayUnit.h @@ -4,18 +4,17 @@ class IDAReplayObserver; -class UnitInformation: public Unit +//! A Unit that have a replayobserver insted of an Agent, +class ReplayUnit: public Unit { mutable IDAReplayObserver * m_replayObserver; - - public: - UnitInformation(const sc2::Unit * unit, IDAReplayObserver & replayObserver); + ReplayUnit(const sc2::Unit * unit, IDAReplayObserver & replayObserver); std::string getType() const; std::string getTypeName() const; bool hasTarget() const; - UnitInformation getTarget() const; + ReplayUnit getTarget() const; }; \ No newline at end of file