summaryrefslogtreecommitdiffstats
path: root/pokescripting/CoinListObjectWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pokescripting/CoinListObjectWrapper.h')
-rw-r--r--pokescripting/CoinListObjectWrapper.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/pokescripting/CoinListObjectWrapper.h b/pokescripting/CoinListObjectWrapper.h
index 6fb71cea..117b6d11 100644
--- a/pokescripting/CoinListObjectWrapper.h
+++ b/pokescripting/CoinListObjectWrapper.h
@@ -33,14 +33,20 @@ class POKESCRIPTING_EXPORT CoinListObjectWrapper : public ObjectWrapper
Q_OBJECT
public:
- CoinListObjectWrapper(const Pokemod::CoinListObject* object, QObject* parent);
+ static CoinListObjectWrapper* create(const Pokemod::CoinListObject* object, QObject* parent)
+ {
+ if (!m_instances.contains(object->id()))
+ m_instances[object->id()] = new CoinListObjectWrapper(object, parent);
+ return qobject_cast<CoinListObjectWrapper*>(m_instances[object->id()]);
+ }
public slots:
int type() const;
- const ItemWrapper* itemObject() const;
- const SpeciesWrapper* speciesObject() const;
+ ItemWrapper* itemObject();
+ SpeciesWrapper* speciesObject();
int amount() const;
int cost() const;
private:
+ CoinListObjectWrapper(const Pokemod::CoinListObject* object, QObject* parent);
CoinListObjectWrapper& operator=(const CoinListObjectWrapper& rhs);
const Pokemod::CoinListObject* m_object;
@@ -57,17 +63,17 @@ inline int CoinListObjectWrapper::type() const
return m_object->type();
}
-inline const ItemWrapper* CoinListObjectWrapper::itemObject() const
+inline ItemWrapper* CoinListObjectWrapper::itemObject()
{
if (m_object->type() == Pokemod::CoinListObject::Item)
- return new ItemWrapper(pokemod()->itemById(m_object->object()), const_cast<CoinListObjectWrapper*>(this));
+ return ItemWrapper::create(pokemod()->itemById(m_object->object()), this);
return NULL;
}
-inline const SpeciesWrapper* CoinListObjectWrapper::speciesObject() const
+inline SpeciesWrapper* CoinListObjectWrapper::speciesObject()
{
if (m_object->type() == Pokemod::CoinListObject::Species)
- return new SpeciesWrapper(pokemod()->speciesById(m_object->object()), const_cast<CoinListObjectWrapper*>(this));
+ return SpeciesWrapper::create(pokemod()->speciesById(m_object->object()), this);
return NULL;
}