Commit 10d46e1e authored by Сулимов Игорь Андреевич's avatar Сулимов Игорь Андреевич
Browse files

Beginning of builders

parent ed63cb72
No related merge requests found
Showing with 78 additions and 8 deletions
+78 -8
#pragma once
#include "IGameBuilder.h"
class CommonBuilder: public IGameBuilder {
public:
virtual void create_rooms() override {}; ///@todo
virtual void set_rooms_sides() override {}; ///@todo
void create_context(float dynamic_objects_ratio) override; ///@todo
void create_state(IStateManager& state_manager,
sf::VideoMode video_mode, const std::string& window_title) override; ///@todo
void set_all_to_state() override; ///@todo
std::unique_ptr<GameState> get_game() override; ///@todo
virtual ~CommonBuilder() = default;
protected:
float m_width;
float m_height;
float m_room_size;
size_t m_rooms_in_row;
size_t m_rooms_in_col;
std::vector<std::vector<Room*>> m_rooms;
private:
GameContext m_context;
std::unique_ptr<GameState> m_game_state;
};
#pragma once
#include "Builder/Builders/CommonBuilder.h"
class ComplexBuilder: public CommonBuilder {
public:
void create_rooms() override; ///@todo
void set_rooms_sides() override; ///@todo
};
\ No newline at end of file
#pragma once
#include "States/GameState.h"
class IGameBuilder {
public:
virtual void create_rooms() = 0;
virtual void set_rooms_sides() = 0;
virtual void create_context(float dynamic_objects_ratio) = 0;
virtual void create_state(IStateManager& state_manager,
sf::VideoMode video_mode, const std::string& window_title ) = 0;
virtual void set_all_to_state() = 0;
virtual std::unique_ptr<GameState> get_game() = 0;
virtual ~IGameBuilder() = default;
};
\ No newline at end of file
#pragma once
#include "Builder/Builders/CommonBuilder.h"
class SimpleBuilder: public CommonBuilder {
public:
void create_rooms() override; ///@todo
void set_rooms_sides() override; ///@todo
};
\ No newline at end of file
#pragma once
#include "Builder/Builders/IGameBuilder.h"
class GameBuilderDirector {
public:
std::unique_ptr<GameState> build(IStateManager& state_manager); ///@todo
public:
GameBuilderDirector(std::unique_ptr<IGameBuilder> ptr_builder,
const sf::VideoMode& video_mode, const std::string& window_title,
float dynamic_objects_ratio); ///@todo
private:
std::string m_window_title;
sf::VideoMode m_video_mode;
float m_dynamic_object_ratio;
std::unique_ptr<IGameBuilder> m_ptr_builder;
};
\ No newline at end of file
#pragma once
class GameBuilderDirector {
};
\ No newline at end of file
#pragma once
#include "ChangeStateCommand.h"
#include "Builders/GameBuilderDirector.h"
#include "Builder/GameBuilderDirector.h"
class GameCommand: public ChangeStateCommand {
public:
......
......@@ -8,7 +8,7 @@ class ContextManager {
public:
void reset(GameContext&& context);
GameContext& get_current_context();
void save_current_context(); ///@todo
void save_current_context();
void restore_previous_context();
private:
GameContext m_initial_context;
......
......@@ -13,7 +13,7 @@ GameContext& ContextManager::get_current_context() {
}
void ContextManager::save_current_context() {
m_contexts.emplace(get_current_context().clone());
}
void ContextManager::restore_previous_context() {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment