#pragma once

#include <deque>
#include <limits>

#include "Common.h"
#include "ReplayUnit.h"

class ReplayUnit;

class IDAReplayObserver : public sc2::ReplayObserver
{
	void setUnits();
	std::vector<ReplayUnit>       m_allUnits;

public:
	IDAReplayObserver();
	
	void OnGameStart() override;
	void OnStep() override;
	void OnGameEnd() override;
	void OnUnitDestroyed(const sc2::Unit*) override;
	void OnUnitInfomationDestroyed(const ReplayUnit*);

	ReplayUnit GetUnit(const CCUnitID tag) const;

	const std::vector<ReplayUnit> & GetAllUnits() const;

};