#pragma once
#include "AbstractUIObserver.h"
#include "SimulationControllerFacade.h"
#include "AbstractSimulationResultDTO.h"


class ClientFacade: virtual public AbstractUIObserver
{
public:
	virtual void AbstractUIObserver::updateStep() = 0;
	virtual void AbstractUIObserver::updateSimulation() = 0;
	virtual void AbstractUIObserver::updateMultipleSimulations() = 0;
	void AbstractUIObserver::setSimulationResultDTO(AbstractSimulationResultDTO* simulationResult);
	AbstractSimulationResultDTO* getSimulationResultDTO();
	void sendAction(AbstractAction* action);
	void setSimulationControllerFacade(SimulationControllerFacade* _simulationControllerFacade);
	SimulationControllerFacade* getSimulationControllerFacade();
private:
	SimulationControllerFacade* simulationControllerFacade;
	AbstractSimulationResultDTO* _simulationResult;
};