#include <GameBuilders.h>
Открытые члены | |
void | create_rooms () override |
Создаем все комнаты | |
void | set_rooms_sides () override |
CommonBuilder (float width, float height, float room_size) | |
![]() | |
CommonBuilder (float width, float height, float room_size) | |
void | create_context (float static_objects_ratio, float dynamic_objects_ratio, int players) override |
Создает контекст для игры | |
void | create_state (IStateManager &state_manager, const sf::VideoMode &mode, const std::string &window_title) override |
Cоздаем состояние GameState, используя имя, режим окна и сслыку на менеджер состояний | |
void | set_all_to_state () override |
Созданный лабиринт и контекст назначаем созданному состоянию игры GameState. | |
std::unique_ptr< GameState > | get_game () override |
Получить результат строителя. | |
Дополнительные унаследованные члены | |
![]() | |
float | m_width |
float | m_height |
float | m_room_size |
std::vector< std::vector< Room * > > | m_rooms |
GameContext | m_context |
std::unique_ptr< GameState > | m_game_state |
простой строитель для уровней EASY и MEDIUM
|
overridevirtual |
Создаем все комнаты
Сетку комнат храним в классе CommonBuilder В SimpleBuilder все возможное пространство заполняем комнатами. В set_rooms_sides() создаем проходы вправо/влево и вверх/вниз, стены делаем только на контуре. В ComplexBuilder формирует "решетчатый" лабиринт по алгоритму Эллера
слева "менюшка" и справа игра
Замещает IGameBuilder.
|
overridevirtual |
нулевая строка -> создаем стену сверху
создаем проходы сверху и снизу
если строка в нулевом столбце -> создаем стену слева
создаем проходы вправо и влево
если последняя строка -> создаем стену снизу
если комнаты в последнем столбце -> создаем стену справа
Замещает IGameBuilder.