diff options
Diffstat (limited to 'pokescripting/MapWildListWrapper.h')
| -rw-r--r-- | pokescripting/MapWildListWrapper.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/MapWildListWrapper.h b/pokescripting/MapWildListWrapper.h index cf37a07a..b11a2346 100644 --- a/pokescripting/MapWildListWrapper.h +++ b/pokescripting/MapWildListWrapper.h @@ -32,13 +32,19 @@ class POKESCRIPTING_EXPORT MapWildListWrapper : public ObjectWrapper Q_OBJECT public: - MapWildListWrapper(const Pokemod::MapWildList* wildList, QObject* parent); + static MapWildListWrapper* create(const Pokemod::MapWildList* wildList, QObject* parent) + { + if (!m_instances.contains(wildList->id())) + m_instances[wildList->id()] = new MapWildListWrapper(wildList, parent); + return qobject_cast<MapWildListWrapper*>(m_instances[wildList->id()]); + } public slots: QString name() const; - const MapWildListEncounterWrapper* encounter(const int index) const; + MapWildListEncounterWrapper* encounter(const int index); int encounterCount() const; private: + MapWildListWrapper(const Pokemod::MapWildList* wildList, QObject* parent); MapWildListWrapper& operator=(const MapWildListWrapper& rhs); const Pokemod::MapWildList* m_wildList; @@ -55,9 +61,9 @@ inline QString MapWildListWrapper::name() const return m_wildList->name(); } -inline const MapWildListEncounterWrapper* MapWildListWrapper::encounter(const int index) const +inline MapWildListEncounterWrapper* MapWildListWrapper::encounter(const int index) { - return new MapWildListEncounterWrapper(m_wildList->encounter(index), const_cast<MapWildListWrapper*>(this)); + return MapWildListEncounterWrapper::create(m_wildList->encounter(index), this); } inline int MapWildListWrapper::encounterCount() const |
