diff options
Diffstat (limited to 'pokescripting/TrainerWrapper.h')
| -rw-r--r-- | pokescripting/TrainerWrapper.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/TrainerWrapper.h b/pokescripting/TrainerWrapper.h index 963e153f..ba24d105 100644 --- a/pokescripting/TrainerWrapper.h +++ b/pokescripting/TrainerWrapper.h @@ -32,11 +32,16 @@ class POKESCRIPTING_EXPORT TrainerWrapper : public ObjectWrapper Q_OBJECT public: - TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent); + static TrainerWrapper* create(const Pokemod::Trainer* trainer, QObject* parent) + { + if (!m_instances.contains(trainer->id())) + m_instances[trainer->id()] = new TrainerWrapper(trainer, parent); + return qobject_cast<TrainerWrapper*>(m_instances[trainer->id()]); + } public slots: QString name() const; int moneyFactor() const; - const SkinWrapper* skin() const; + SkinWrapper* skin(); int depth() const; int teamIntel() const; int moveIntel() const; @@ -44,6 +49,7 @@ class POKESCRIPTING_EXPORT TrainerWrapper : public ObjectWrapper int abilityIntel() const; int statIntel() const; private: + TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent); TrainerWrapper& operator=(const TrainerWrapper& rhs); const Pokemod::Trainer* m_trainer; @@ -65,9 +71,9 @@ inline int TrainerWrapper::TrainerWrapper::moneyFactor() const return m_trainer->moneyFactor(); } -inline const Pokescripting::SkinWrapper* TrainerWrapper::TrainerWrapper::skin() const +inline Pokescripting::SkinWrapper* TrainerWrapper::TrainerWrapper::skin() { - return new SkinWrapper(pokemod()->skinById(m_trainer->skin()), const_cast<TrainerWrapper*>(this)); + return SkinWrapper::create(pokemod()->skinById(m_trainer->skin()), this); } inline int TrainerWrapper::TrainerWrapper::depth() const |
