diff options
Diffstat (limited to 'pokescripting/MoveWrapper.h')
| -rw-r--r-- | pokescripting/MoveWrapper.h | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/MoveWrapper.h b/pokescripting/MoveWrapper.h index 7dbb48cf..aac393a9 100644 --- a/pokescripting/MoveWrapper.h +++ b/pokescripting/MoveWrapper.h @@ -32,17 +32,23 @@ class POKESCRIPTING_EXPORT MoveWrapper : public ObjectWrapper Q_OBJECT public: - MoveWrapper(const Pokemod::Move* move, QObject* parent); + static MoveWrapper* create(const Pokemod::Move* move, QObject* parent) + { + if (!m_instances.contains(move->id())) + m_instances[move->id()] = new MoveWrapper(move, parent); + return qobject_cast<MoveWrapper*>(m_instances[move->id()]); + } public slots: QString name() const; Pokemod::Fraction accuracy() const; int power() const; - const TypeWrapper* type() const; + TypeWrapper* type(); bool special() const; int powerPoints() const; int priority() const; QString description() const; private: + MoveWrapper(const Pokemod::Move* move, QObject* parent); MoveWrapper& operator=(const MoveWrapper& rhs); const Pokemod::Move* m_move; @@ -69,9 +75,9 @@ inline int MoveWrapper::power() const return m_move->power(); } -inline const TypeWrapper* MoveWrapper::type() const +inline TypeWrapper* MoveWrapper::type() { - return new TypeWrapper(pokemod()->typeById(m_move->type()), const_cast<MoveWrapper*>(this)); + return TypeWrapper::create(pokemod()->typeById(m_move->type()), this); } inline bool MoveWrapper::special() const |
