-
Авдеев Евгений Владимирович authored231a3787
#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;
//};