mission_loader.h 1.2 KB

12345678910111213141516171819202122232425262728293031
  1. #pragma once
  2. #include "mission_definition.h"
  3. #include <QJsonObject>
  4. #include <QString>
  5. namespace Game::Mission {
  6. class MissionLoader {
  7. public:
  8. static auto loadFromJsonFile(const QString &file_path,
  9. MissionDefinition &out_mission,
  10. QString *error_msg = nullptr) -> bool;
  11. private:
  12. static auto parsePosition(const QJsonObject &obj) -> Position;
  13. static auto parseUnitSetup(const QJsonObject &obj) -> UnitSetup;
  14. static auto parseBuildingSetup(const QJsonObject &obj) -> BuildingSetup;
  15. static auto parseResources(const QJsonObject &obj) -> Resources;
  16. static auto parsePlayerSetup(const QJsonObject &obj) -> PlayerSetup;
  17. static auto parseAIPersonality(const QJsonObject &obj) -> AIPersonality;
  18. static auto parseWaveComposition(const QJsonObject &obj) -> WaveComposition;
  19. static auto parseWave(const QJsonObject &obj) -> Wave;
  20. static auto parseAISetup(const QJsonObject &obj) -> AISetup;
  21. static auto parseCondition(const QJsonObject &obj) -> Condition;
  22. static auto parseEventTrigger(const QJsonObject &obj) -> EventTrigger;
  23. static auto parseEventAction(const QJsonObject &obj) -> EventAction;
  24. static auto parseGameEvent(const QJsonObject &obj) -> GameEvent;
  25. };
  26. } // namespace Game::Mission