level_orchestrator.h 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #pragma once
  2. #include <QString>
  3. #include <QVariantList>
  4. #include <functional>
  5. #include <memory>
  6. class LoadingProgressTracker;
  7. namespace Engine::Core {
  8. class World;
  9. }
  10. namespace Render::GL {
  11. class Renderer;
  12. class Camera;
  13. class GroundRenderer;
  14. class TerrainRenderer;
  15. class BiomeRenderer;
  16. class RiverRenderer;
  17. class RoadRenderer;
  18. class RiverbankRenderer;
  19. class BridgeRenderer;
  20. class FogRenderer;
  21. class StoneRenderer;
  22. class PlantRenderer;
  23. class PineRenderer;
  24. class OliveRenderer;
  25. class FireCampRenderer;
  26. class RainRenderer;
  27. } // namespace Render::GL
  28. namespace Game::Systems {
  29. struct LevelSnapshot;
  30. class VictoryService;
  31. } // namespace Game::Systems
  32. class MinimapManager;
  33. class EntityCache;
  34. struct LevelLoadResult {
  35. bool success = false;
  36. QString error_message;
  37. int updated_player_id = 1;
  38. };
  39. class LevelOrchestrator {
  40. public:
  41. struct RendererRefs {
  42. Render::GL::Renderer *renderer;
  43. Render::GL::Camera *camera;
  44. Render::GL::GroundRenderer *ground;
  45. Render::GL::TerrainRenderer *terrain;
  46. Render::GL::BiomeRenderer *biome;
  47. Render::GL::RiverRenderer *river;
  48. Render::GL::RoadRenderer *road;
  49. Render::GL::RiverbankRenderer *riverbank;
  50. Render::GL::BridgeRenderer *bridge;
  51. Render::GL::FogRenderer *fog;
  52. Render::GL::StoneRenderer *stone;
  53. Render::GL::PlantRenderer *plant;
  54. Render::GL::PineRenderer *pine;
  55. Render::GL::OliveRenderer *olive;
  56. Render::GL::FireCampRenderer *firecamp;
  57. Render::GL::RainRenderer *rain;
  58. };
  59. using VisibilityReadyCallback = std::function<void()>;
  60. using OwnerUpdateCallback = std::function<void()>;
  61. LevelLoadResult load_skirmish(
  62. const QString &map_path, const QVariantList &player_configs,
  63. int selected_player_id, Engine::Core::World &world,
  64. const RendererRefs &renderers, Game::Systems::LevelSnapshot &level,
  65. EntityCache &entity_cache, Game::Systems::VictoryService *victory_service,
  66. MinimapManager *minimap_manager, VisibilityReadyCallback visibility_ready,
  67. OwnerUpdateCallback owner_update, bool allow_default_player_barracks,
  68. LoadingProgressTracker *progress_tracker = nullptr);
  69. };