summaryrefslogtreecommitdiffstats
path: root/pokescripting/MoveWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pokescripting/MoveWrapper.h')
-rw-r--r--pokescripting/MoveWrapper.h14
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