#pragma once #include <deque> #include <limits> #include "Common.h" #include "MapTools.h" #include "BaseLocationManager.h" #include "UnitInfoManager.h" #include "BuildingPlacer.h" #include "TechTree.h" #include "TechTreeImproved.h" #include "MetaType.h" #include "Unit.h" class IDAReplayObserver : public sc2::ReplayObserver { MapTools m_map; BaseLocationManager m_bases; UnitInfoManager m_unitInfo; TechTree m_techTree; BuildingPlacer m_buildingPlacer; std::vector<Unit> m_allUnits; std::vector<CCPosition> m_baseLocations; void setUnits(); void OnError(const std::vector<sc2::ClientError> & client_errors, const std::vector<std::string> & protocol_errors = {}) override; public: IDAReplayObserver(); void OnGameStart() override; void OnStep() override; const std::vector<Unit> & GetAllUnits() const; };