map_catalog.h 910 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <QObject>
  3. #include <QSet>
  4. #include <QVariantList>
  5. #include <QVariantMap>
  6. namespace Game::Map {
  7. class MapCatalog : public QObject {
  8. Q_OBJECT
  9. public:
  10. explicit MapCatalog(QObject *parent = nullptr);
  11. static auto availableMaps() -> QVariantList;
  12. Q_INVOKABLE void load_maps_async();
  13. [[nodiscard]] auto isLoading() const -> bool { return m_loading; }
  14. [[nodiscard]] auto maps() const -> const QVariantList & { return m_maps; }
  15. signals:
  16. void map_loaded(QVariantMap mapData);
  17. void all_maps_loaded();
  18. void loading_changed(bool loading);
  19. private:
  20. void load_next_map();
  21. static auto loadSingleMap(const QString &filePath) -> QVariantMap;
  22. void ensure_campaign_map_paths_loaded();
  23. QStringList m_pendingFiles;
  24. QVariantList m_maps;
  25. QSet<QString> m_campaign_map_paths;
  26. bool m_campaign_map_paths_loaded = false;
  27. bool m_loading = false;
  28. };
  29. } // namespace Game::Map