summaryrefslogtreecommitdiffstats
path: root/pokescripting/MapEffectWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pokescripting/MapEffectWrapper.h')
-rw-r--r--pokescripting/MapEffectWrapper.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/MapEffectWrapper.h b/pokescripting/MapEffectWrapper.h
index bf2bb127..a4fbb19f 100644
--- a/pokescripting/MapEffectWrapper.h
+++ b/pokescripting/MapEffectWrapper.h
@@ -32,12 +32,18 @@ class POKESCRIPTING_EXPORT MapEffectWrapper : public ObjectWrapper
Q_OBJECT
public:
- MapEffectWrapper(const Pokemod::MapEffect* effect, QObject* parent);
+ static MapEffectWrapper* create(const Pokemod::MapEffect* effect, QObject* parent)
+ {
+ if (!m_instances.contains(effect->id()))
+ m_instances[effect->id()] = new MapEffectWrapper(effect, parent);
+ return qobject_cast<MapEffectWrapper*>(m_instances[effect->id()]);
+ }
public slots:
QString name() const;
- const SkinWrapper* skin() const;
+ SkinWrapper* skin();
bool isGhost() const;
private:
+ MapEffectWrapper(const Pokemod::MapEffect* effect, QObject* parent);
MapEffectWrapper& operator=(const MapEffectWrapper& rhs);
const Pokemod::MapEffect* m_effect;
@@ -54,9 +60,9 @@ inline QString MapEffectWrapper::name() const
return m_effect->name();
}
-inline const Pokescripting::SkinWrapper* MapEffectWrapper::skin() const
+inline Pokescripting::SkinWrapper* MapEffectWrapper::skin()
{
- return new SkinWrapper(pokemod()->skinById(m_effect->skin()), const_cast<MapEffectWrapper*>(this));
+ return SkinWrapper::create(pokemod()->skinById(m_effect->skin()), this);
}
inline bool MapEffectWrapper::isGhost() const