ChangeStateCommand.h 1.27 KiB
#pragma once
#include "./../State/IState.h"
#include "../Builder/Builders.h"
class ISelectCommand {
public:
	virtual ~ISelectCommand() = default;
	virtual void execute() = 0;
class ChangeStateCommand : public ISelectCommand {
public:
	ChangeStateCommand(IStateManager& state_manager) : m_state_manager(state_manager) {};
protected:
	IStateManager& m_state_manager;
class ExitCommand : public ChangeStateCommand {
	using ChangeStateCommand::ChangeStateCommand;
	void execute() override;
//class CloseCommand : public ChangeStateCommand {
//	using ChangeStateCommand::ChangeStateCommand;
//	void execute() override;
//};
class GameCommand : public ChangeStateCommand {
public:
	GameCommand(IStateManager& state_manager, std::unique_ptr<GameBuilderDirector>&& ptr_director): ChangeStateCommand(state_manager), m_ptr_director(std::move(ptr_director)) {};
	void execute() override;
private:
	std::unique_ptr<GameBuilderDirector> m_ptr_director;
//class TutorCommand : public ChangeStateCommand {
//public:
//	TutorCommand(IStateManager& state_manager, std::unique_ptr<GameBuilderDirector>&& ptr_director) : ChangeStateCommand(state_manager), m_ptr_director(std::move(ptr_director)) {};
//	void execute() override;
//private:
//	std::unique_ptr<GameBuilderDirector> m_ptr_director;
//};