You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
992 B
40 lines
992 B
#pragma once
|
|
|
|
#include "dinkyecs.hpp"
|
|
#include "gui/boss_fight_ui.hpp"
|
|
#include "dinkyecs.hpp"
|
|
#include "lights.hpp"
|
|
#include "map.hpp"
|
|
#include <memory>
|
|
#include "spatialmap.hpp"
|
|
|
|
namespace components {
|
|
struct Position;
|
|
}
|
|
|
|
struct GameLevel {
|
|
size_t index;
|
|
DinkyECS::Entity player;
|
|
std::shared_ptr<Map> map = nullptr;
|
|
std::shared_ptr<DinkyECS::World> world = nullptr;
|
|
std::shared_ptr<lighting::LightRender> lights = nullptr;
|
|
std::shared_ptr<SpatialMap> collision = nullptr;
|
|
};
|
|
|
|
|
|
namespace Game {
|
|
std::shared_ptr<gui::BossFightUI> create_bossfight();
|
|
size_t new_level(std::shared_ptr<DinkyECS::World> prev_world);
|
|
GameLevel& create_level();
|
|
|
|
void init();
|
|
GameLevel &next();
|
|
GameLevel &previous();
|
|
GameLevel ¤t();
|
|
size_t current_index();
|
|
std::shared_ptr<DinkyECS::World> current_world();
|
|
GameLevel &get(size_t index);
|
|
DinkyECS::Entity spawn_enemy(const std::string& named);
|
|
components::Position& player_position();
|
|
DinkyECS::Entity the_player();
|
|
}
|
|
|