serialization.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. #pragma once
  2. #include <QJsonDocument>
  3. #include <QJsonObject>
  4. #include <QString>
  5. #include <vector>
  6. namespace Game::Map {
  7. class TerrainHeightMap;
  8. struct BiomeSettings;
  9. struct RoadSegment;
  10. } // namespace Game::Map
  11. namespace Engine::Core {
  12. class Serialization {
  13. public:
  14. static auto serialize_entity(const class Entity *entity) -> QJsonObject;
  15. static void deserialize_entity(class Entity *entity, const QJsonObject &json);
  16. static auto serialize_world(const class World *world) -> QJsonDocument;
  17. static void deserialize_world(class World *world, const QJsonDocument &doc);
  18. static auto serialize_terrain(const Game::Map::TerrainHeightMap *height_map,
  19. const Game::Map::BiomeSettings &biome,
  20. const std::vector<Game::Map::RoadSegment> &roads)
  21. -> QJsonObject;
  22. static void deserialize_terrain(Game::Map::TerrainHeightMap *height_map,
  23. Game::Map::BiomeSettings &biome,
  24. std::vector<Game::Map::RoadSegment> &roads,
  25. const QJsonObject &json);
  26. static auto save_to_file(const QString &filename,
  27. const QJsonDocument &doc) -> bool;
  28. static auto load_from_file(const QString &filename) -> QJsonDocument;
  29. };
  30. } // namespace Engine::Core