#include "IDAReplayObserver.h"
#include "Util.h"

void IDAReplayObserver::setUnits()
{
	
	m_allUnits.clear();
	for (auto & unit : Observation()->GetUnits())
	{
		m_allUnits.push_back(UnitInformation(unit, *this));
	}
	

}

IDAReplayObserver::IDAReplayObserver():
	sc2::ReplayObserver()
{
}

void IDAReplayObserver::OnGameStart()
{
	

	setUnits();

}

void IDAReplayObserver::OnStep()
{
	setUnits();
}

void IDAReplayObserver::OnGameEnd()
{
}

void IDAReplayObserver::OnUnitDestroyed(const sc2::Unit* unit)
{
	UnitInformation unitInformation = UnitInformation(unit, *this);
	OnUnitInfomationDestroyed(&unitInformation);
}



UnitInformation 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);
}






const std::vector<UnitInformation>& IDAReplayObserver::GetAllUnits() const
{

	return m_allUnits;
}