summaryrefslogtreecommitdiffstats
path: root/pokescripting/TrainerWrapper.h
diff options
context:
space:
mode:
Diffstat (limited to 'pokescripting/TrainerWrapper.h')
-rw-r--r--pokescripting/TrainerWrapper.h14
1 files changed, 10 insertions, 4 deletions
diff --git a/pokescripting/TrainerWrapper.h b/pokescripting/TrainerWrapper.h
index 963e153f..ba24d105 100644
--- a/pokescripting/TrainerWrapper.h
+++ b/pokescripting/TrainerWrapper.h
@@ -32,11 +32,16 @@ class POKESCRIPTING_EXPORT TrainerWrapper : public ObjectWrapper
Q_OBJECT
public:
- TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent);
+ static TrainerWrapper* create(const Pokemod::Trainer* trainer, QObject* parent)
+ {
+ if (!m_instances.contains(trainer->id()))
+ m_instances[trainer->id()] = new TrainerWrapper(trainer, parent);
+ return qobject_cast<TrainerWrapper*>(m_instances[trainer->id()]);
+ }
public slots:
QString name() const;
int moneyFactor() const;
- const SkinWrapper* skin() const;
+ SkinWrapper* skin();
int depth() const;
int teamIntel() const;
int moveIntel() const;
@@ -44,6 +49,7 @@ class POKESCRIPTING_EXPORT TrainerWrapper : public ObjectWrapper
int abilityIntel() const;
int statIntel() const;
private:
+ TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent);
TrainerWrapper& operator=(const TrainerWrapper& rhs);
const Pokemod::Trainer* m_trainer;
@@ -65,9 +71,9 @@ inline int TrainerWrapper::TrainerWrapper::moneyFactor() const
return m_trainer->moneyFactor();
}
-inline const Pokescripting::SkinWrapper* TrainerWrapper::TrainerWrapper::skin() const
+inline Pokescripting::SkinWrapper* TrainerWrapper::TrainerWrapper::skin()
{
- return new SkinWrapper(pokemod()->skinById(m_trainer->skin()), const_cast<TrainerWrapper*>(this));
+ return SkinWrapper::create(pokemod()->skinById(m_trainer->skin()), this);
}
inline int TrainerWrapper::TrainerWrapper::depth() const