Skip to content
Snippets Groups Projects
IDAReplayObserver.cpp 2.47 KiB
Newer Older
Rojikku98's avatar
Rojikku98 committed
#include "IDAReplayObserver.h"
Rojikku98's avatar
Rojikku98 committed
#include "Util.h"
#include <pybind11/pybind11.h>

Rojikku98's avatar
Rojikku98 committed

void IDAReplayObserver::setUnits()
{
	m_allUnits.clear();
Edvin Bergström's avatar
Edvin Bergström committed
	m_allUnitsID.clear();
Rojikku98's avatar
Rojikku98 committed
	for (auto & unit : Observation()->GetUnits())
	{
Edvin Bergström's avatar
Edvin Bergström committed
		ReplayUnit replayUnit = ReplayUnit(unit, *this);
		m_allUnits.push_back(replayUnit);
		m_allUnitsID.insert(replayUnit.getID());
Rojikku98's avatar
Rojikku98 committed
	}
}

IDAReplayObserver::IDAReplayObserver():
Edvin Bergström's avatar
Edvin Bergström committed
	sc2::ReplayObserver(),
	m_techTree(*this)
Rojikku98's avatar
Rojikku98 committed
{
}

void IDAReplayObserver::OnGameStart()
{
	setUnits();
Edvin Bergström's avatar
Edvin Bergström committed
	m_techTree.onStart();

Rojikku98's avatar
Rojikku98 committed
}

void IDAReplayObserver::OnStep()
{
	setUnits();
Rojikku98's avatar
Rojikku98 committed
}

void IDAReplayObserver::OnGameEnd()
{
}
Rojikku98's avatar
Rojikku98 committed

void IDAReplayObserver::OnUnitDestroyed(const sc2::Unit* unit)
{
Rojikku98's avatar
Rojikku98 committed
	ReplayUnit unitInformation = ReplayUnit(unit, *this);
	OnReplayUnitDestroyed(&unitInformation);
void IDAReplayObserver::OnReplayUnitDestroyed(const ReplayUnit *)
Rojikku98's avatar
Rojikku98 committed
{
Rojikku98's avatar
Rojikku98 committed
}

void IDAReplayObserver::OnUnitCreated(const sc2::Unit * unit)
{
	ReplayUnit unitInformation = ReplayUnit(unit, *this);
	OnReplayUnitCreated(&unitInformation);
}

void IDAReplayObserver::OnReplayUnitCreated(const ReplayUnit *)
{
}

void IDAReplayObserver::OnBuildingConstructionComplete(const sc2::Unit *unit)
{
	ReplayUnit unitInformation = ReplayUnit(unit, *this);
	OnReplayUnitCreated(&unitInformation);
}


Rojikku98's avatar
Rojikku98 committed
ReplayUnit IDAReplayObserver::GetUnit(const CCUnitID tag) const
Edvin Bergström's avatar
Edvin Bergström committed
{	
	
		return ReplayUnit(Observation()->GetUnit(tag), *(IDAReplayObserver *)this);

}

bool IDAReplayObserver::UnitExists(const CCUnitID tag) const
{
	return m_allUnitsID.find(tag) != m_allUnitsID.end();
	
Rojikku98's avatar
Rojikku98 committed
}

Rojikku98's avatar
Rojikku98 committed
const std::vector<ReplayUnit>& IDAReplayObserver::GetAllUnits() const
Rojikku98's avatar
Rojikku98 committed
{
Rojikku98's avatar
Rojikku98 committed

Rojikku98's avatar
Rojikku98 committed
	return m_allUnits;
}

Rojikku98's avatar
Rojikku98 committed
CCRace IDAReplayObserver::GetPlayerRace(int player)
{	
	return ReplayControl()->GetReplayInfo().players[player].race;
}

std::string IDAReplayObserver::GetReplayPath()
Rojikku98's avatar
Rojikku98 committed
{
Rojikku98's avatar
Rojikku98 committed
	return ReplayControl()->GetReplayInfo().replay_path;
}
Rojikku98's avatar
Rojikku98 committed

Rojikku98's avatar
Rojikku98 committed
sc2::GameResult IDAReplayObserver::GetResultForPlayer(int player)
{
	return ReplayControl()->GetReplayInfo().players[player].game_result;
Rojikku98's avatar
Rojikku98 committed
}

Edvin Bergström's avatar
Edvin Bergström committed
const TechTree & IDAReplayObserver::GetTechTree() const
{
	return m_techTree;
}

const TypeData & IDAReplayObserver::Data(const UnitType & type) const
{
	return m_techTree.getData(type);
}

const TypeData & IDAReplayObserver::Data(const CCUpgrade & type) const
{
	return m_techTree.getData(type);
}

const TypeData & IDAReplayObserver::Data(const MetaType & type) const
{
	return m_techTree.getData(type);
}

const TypeData & IDAReplayObserver::Data(const Unit & unit) const
{
	return m_techTree.getData(unit.getType());
}

Rojikku98's avatar
Rojikku98 committed