From 7ea8c3ee65b95e4000daa3cf24d5810def154e6a Mon Sep 17 00:00:00 2001 From: Rojikku98 <be.edvin@gmail.com> Date: Mon, 27 Jul 2020 09:45:01 +0200 Subject: [PATCH] Some cleanup --- python-api-src/lib_replay_unit.cpp | 68 ++++++++++----------- python-api-src/library.cpp | 1 - src/IDAReplayObserver.cpp | 26 +++----- src/IDAReplayObserver.h | 18 ++---- src/{UnitInformation.cpp => ReplayUnit.cpp} | 14 ++--- src/{UnitInformation.h => ReplayUnit.h} | 9 ++- 6 files changed, 60 insertions(+), 76 deletions(-) rename src/{UnitInformation.cpp => ReplayUnit.cpp} (81%) rename src/{UnitInformation.h => ReplayUnit.h} (55%) diff --git a/python-api-src/lib_replay_unit.cpp b/python-api-src/lib_replay_unit.cpp index 9dfd83d..7a70770 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 2161129..1ec4821 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 26c57d0..13728f5 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 16eaae6..b23393a 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 a33b23f..1bab938 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 8352c5b..171dfc6 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 -- GitLab