summaryrefslogtreecommitdiffstats
path: root/pokescripting/TileWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pokescripting/TileWrapper.h')
-rw-r--r--pokescripting/TileWrapper.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/TileWrapper.h b/pokescripting/TileWrapper.h
index babc304e..0bf72ed2 100644
--- a/pokescripting/TileWrapper.h
+++ b/pokescripting/TileWrapper.h
@@ -32,12 +32,18 @@ class POKESCRIPTING_EXPORT TileWrapper : public ObjectWrapper
Q_OBJECT
public:
- TileWrapper(const Pokemod::Tile* tile, QObject* parent);
+ static TileWrapper* create(const Pokemod::Tile* tile, QObject* parent)
+ {
+ if (!m_instances.contains(tile->id()))
+ m_instances[tile->id()] = new TileWrapper(tile, parent);
+ return qobject_cast<TileWrapper*>(m_instances[tile->id()]);
+ }
public slots:
QString name() const;
- const SpriteWrapper* sprite() const;
+ SpriteWrapper* sprite();
bool from(const int direction) const;
private:
+ TileWrapper(const Pokemod::Tile* tile, QObject* parent);
TileWrapper& operator=(const TileWrapper& rhs);
const Pokemod::Tile* m_tile;
@@ -54,9 +60,9 @@ inline QString TileWrapper::name() const
return m_tile->name();
}
-inline const Pokescripting::SpriteWrapper* TileWrapper::sprite() const
+inline Pokescripting::SpriteWrapper* TileWrapper::sprite()
{
- return new SpriteWrapper(pokemod()->spriteById(m_tile->sprite()), const_cast<TileWrapper*>(this));
+ return SpriteWrapper::create(pokemod()->spriteById(m_tile->sprite()), this);
}
inline bool TileWrapper::from(const int direction) const