#include "game_level.hpp" #include "levelmanager.hpp" #include "components.hpp" namespace Game { using std::shared_ptr, std::string, std::make_shared; shared_ptr LEVELS; bool initialized = false; void init() { if(!initialized) { LEVELS = make_shared(); initialized = true; } } LevelManager& get_the_manager() { dbc::check(initialized, "Forgot to call Game::init()"); return *LEVELS; } shared_ptr current_world() { dbc::check(initialized, "Forgot to call Game::init()"); return current().world; } shared_ptr create_bossfight() { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->create_bossfight(current_world()); } GameLevel& create_level() { dbc::check(initialized, "Forgot to call Game::init()"); LEVELS->create_level(current_world()); return next(); } GameLevel &next() { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->next(); } GameLevel &previous() { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->previous(); } GameLevel ¤t() { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->current(); } size_t current_index() { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->current_index(); } GameLevel &get(size_t index) { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->get(index); } DinkyECS::Entity spawn_enemy(const std::string& named) { dbc::check(initialized, "Forgot to call Game::init()"); return LEVELS->spawn_enemy(named); } components::Position& player_position() { dbc::check(initialized, "Forgot to call Game::init()"); auto world = current_world(); auto& player = world->get_the(); return world->get(player.entity); } DinkyECS::Entity the_player() { dbc::check(initialized, "Forgot to call Game::init()"); return current().player; } }