Files
aee-arcade/source/game/scenes/game_scene.hpp
T

46 lines
1.3 KiB
C++

#pragma once
#include <memory>
#include <string>
#include <vector>
#include "core/scene/scene.hpp"
#include "game/entities/entity_manager.hpp"
#include "game/map/tilemap.hpp"
class Player;
class GameScene : public Scene {
public:
// Conjunt de rutes que defineixen una piràmide concreta (mapa + tilemap
// + sprites del jugador + música). Cada piràmide serà un Config distint;
// `defaultConfig()` retorna la primera (Defaults::Pyramid).
struct Config {
std::string map_yaml;
std::string player_sprite;
std::string player_yaml;
std::string music_track;
};
[[nodiscard]] static auto defaultConfig() -> Config;
explicit GameScene(Config config = defaultConfig());
~GameScene() override;
void update(int delta_ms) override;
void render() override;
private:
Config config_;
Tilemap tilemap_;
// Gestor d'entitats del nivell (sarcòfags, porta, momia, antorxa,
// etc.). Viu aquí perquè la seua vida coincideix amb la de la escena;
// cada entitat del nivell es carrega al ctor via loadFromLevel.
EntityManager entity_manager_;
// Vector des del principi: AEE suportarà multijugador local; cada Player
// té els seus propis Controls i entra al vector amb una crida extra.
std::vector<std::unique_ptr<Player>> players_;
};