diff options
Diffstat (limited to 'pokescripting/MapTrainerTeamMemberWrapper.h')
| -rw-r--r-- | pokescripting/MapTrainerTeamMemberWrapper.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/MapTrainerTeamMemberWrapper.h b/pokescripting/MapTrainerTeamMemberWrapper.h index b8495745..c0330469 100644 --- a/pokescripting/MapTrainerTeamMemberWrapper.h +++ b/pokescripting/MapTrainerTeamMemberWrapper.h @@ -36,15 +36,21 @@ class POKESCRIPTING_EXPORT MapTrainerTeamMemberWrapper : public ObjectWrapper Q_OBJECT public: - MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent); + static MapTrainerTeamMemberWrapper* create(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent) + { + if (!m_instances.contains(teamMember->id())) + m_instances[teamMember->id()] = new MapTrainerTeamMemberWrapper(teamMember, parent); + return qobject_cast<MapTrainerTeamMemberWrapper*>(m_instances[teamMember->id()]); + } public slots: - const SpeciesWrapper* species() const; + SpeciesWrapper* species(); int level() const; bool ability(const int ability) const; bool item(const int item) const; bool move(const int move) const; bool nature(const int nature) const; private: + MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent); MapTrainerTeamMemberWrapper& operator=(const MapTrainerTeamMemberWrapper& rhs); const Pokemod::MapTrainerTeamMember* m_teamMember; @@ -56,9 +62,9 @@ inline MapTrainerTeamMemberWrapper::MapTrainerTeamMemberWrapper(const Pokemod::M { } -inline const SpeciesWrapper* MapTrainerTeamMemberWrapper::species() const +inline SpeciesWrapper* MapTrainerTeamMemberWrapper::species() { - return new SpeciesWrapper(pokemod()->speciesById(m_teamMember->species()), const_cast<MapTrainerTeamMemberWrapper*>(this)); + return SpeciesWrapper::create(pokemod()->speciesById(m_teamMember->species()), this); } inline int MapTrainerTeamMemberWrapper::level() const |
