An error occurred while loading the file. Please try again.
-
Печенин Данила Михайлович authored328c752c
#pragma once
#include <BasicAbstractions/Command.h>
#include <BasicAbstractions/IState.h>
#include <States/ExitState/ExitState.h>
#include <States/GameState/GameBuilder/GameBuilderDirector.h>
struct ChangeStateCommand : ISelectCommand {
explicit ChangeStateCommand(IStateManager& state_manager) : m_state_manager(state_manager) {}
protected:
IStateManager& m_state_manager;
};
struct ExitCommand : ChangeStateCommand {
using ChangeStateCommand::ChangeStateCommand;
void execute() override { m_state_manager.set_next_state(std::make_unique<ExitState>(m_state_manager)); }
};
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 { m_state_manager.set_next_state(std::move(m_ptr_director->build(m_state_manager))); }
private:
std::unique_ptr<GameBuilderDirector> m_ptr_director;
};