Move map/layout loaded state to Project

This commit is contained in:
GriffinR
2025-03-16 19:29:26 -04:00
parent 854880f9f8
commit 8dcb66ca52
5 changed files with 29 additions and 18 deletions

View File

@@ -68,12 +68,10 @@ public:
void setNeedsHealLocation(bool needsHealLocation) { m_needsHealLocation = needsHealLocation; }
void setIsPersistedToFile(bool persistedToFile) { m_isPersistedToFile = persistedToFile; }
void setHasUnsavedDataChanges(bool unsavedDataChanges) { m_hasUnsavedDataChanges = unsavedDataChanges; }
void setLoaded(bool loaded) { m_loaded = loaded; }
bool needsHealLocation() const { return m_needsHealLocation; }
bool isPersistedToFile() const { return m_isPersistedToFile; }
bool hasUnsavedDataChanges() const { return m_hasUnsavedDataChanges; }
bool loaded() const { return m_loaded; }
void resetEvents();
QList<Event *> getEvents(Event::Group group = Event::Group::None) const;
@@ -121,7 +119,6 @@ private:
bool m_hasUnsavedDataChanges = false;
bool m_needsHealLocation = false;
bool m_scriptsLoaded = false;
bool m_loaded = false;
QMap<Event::Group, QList<Event *>> m_events;
QSet<Event *> m_ownedEvents; // for memory management

View File

@@ -22,7 +22,6 @@ public:
static QString layoutConstantFromName(const QString &name);
bool loaded = false;
bool hasUnsavedDataChanges = false;
QString id;

View File

@@ -92,6 +92,11 @@ public:
// Note: This does not guarantee the map is loaded.
Map* getMap(const QString &mapName) { return this->maps.value(mapName); }
bool isMapLoaded(const Map *map) const { return map && isMapLoaded(map->name()); }
bool isMapLoaded(const QString &mapName) const { return this->loadedMapNames.contains(mapName); }
bool isLayoutLoaded(const Layout *layout) const { return layout && isLayoutLoaded(layout->id); }
bool isLayoutLoaded(const QString &layoutId) const { return this->loadedLayoutIds.contains(layoutId); }
QMap<QString, Tileset*> tilesetCache;
Tileset* loadTileset(QString, Tileset *tileset = nullptr);
Tileset* getTileset(QString, bool forceLoad = false);
@@ -260,6 +265,15 @@ private:
QHash<QString, QString> speciesToIconPath;
QHash<QString, Map*> maps;
// Maps/layouts represented in these sets have been fully loaded from the project.
// If a valid map name / layout id is not in these sets, a Map / Layout object exists
// for it in Project::maps / Project::mapLayouts, but it has been minimally populated
// (i.e. for a map layout it only has the data read from layouts.json, none of its assets
// have been loaded, and for a map it only has the data needed to identify it in the map
// list, none of the rest of its data in map.json).
QSet<QString> loadedMapNames;
QSet<QString> loadedLayoutIds;
const QRegularExpression re_gbapalExtension;
const QRegularExpression re_bppExtension;