diff options
Diffstat (limited to 'pokescripting/TileWrapper.h')
| -rw-r--r-- | pokescripting/TileWrapper.h | 14 |
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 |
