level_loader.h 1012 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. #pragma once
  2. #include "map_definition.h"
  3. #include <QString>
  4. #include <cstdint>
  5. #include <memory>
  6. namespace Engine::Core {
  7. class World;
  8. using EntityID = unsigned int;
  9. } // namespace Engine::Core
  10. namespace Render::GL {
  11. class Renderer;
  12. class Camera;
  13. } // namespace Render::GL
  14. namespace Game::Map {
  15. struct LevelLoadResult {
  16. bool ok = false;
  17. QString map_name;
  18. QString errorMessage;
  19. Engine::Core::EntityID player_unit_id = 0;
  20. float cam_fov = 45.0F;
  21. float cam_near = 0.1F;
  22. float cam_far = 1000.0F;
  23. int grid_width = 50;
  24. int grid_height = 50;
  25. float tile_size = 1.0F;
  26. int max_troops_per_player = 500;
  27. VictoryConfig victoryConfig;
  28. RainSettings rainSettings;
  29. std::uint32_t biome_seed = 0;
  30. };
  31. class LevelLoader {
  32. public:
  33. static auto
  34. loadFromAssets(const QString &map_path, Engine::Core::World &world,
  35. Render::GL::Renderer &renderer, Render::GL::Camera &camera,
  36. bool allow_default_player_barracks = true) -> LevelLoadResult;
  37. };
  38. } // namespace Game::Map