46 lines
1.3 KiB
C++
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_;
|
|
};
|