diff options
Diffstat (limited to 'pokescripting')
72 files changed, 759 insertions, 590 deletions
diff --git a/pokescripting/AbilityWrapper.cpp b/pokescripting/AbilityWrapper.cpp index d66d4fd7..c7641c87 100644 --- a/pokescripting/AbilityWrapper.cpp +++ b/pokescripting/AbilityWrapper.cpp @@ -18,7 +18,17 @@ // header include #include "AbilityWrapper.h" -Pokescripting::AbilityWrapper::AbilityWrapper(const Pokemod::Ability* ability, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::AbilityWrapper* Pokescripting::AbilityWrapper::create(const Pokemod::Ability* ability, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, ability->id()))) + m_instances[Signiture(parent, ability->id())] = new AbilityWrapper(ability, parent); + return qobject_cast<AbilityWrapper*>(m_instances[Signiture(parent, ability->id())]); +} + +Pokescripting::AbilityWrapper::AbilityWrapper(const Pokemod::Ability* ability, PokemodWrapper* parent) : ObjectWrapper(ability, parent), m_ability(ability) { diff --git a/pokescripting/AbilityWrapper.h b/pokescripting/AbilityWrapper.h index 172a8660..88279ab7 100644 --- a/pokescripting/AbilityWrapper.h +++ b/pokescripting/AbilityWrapper.h @@ -31,20 +31,15 @@ class POKESCRIPTING_EXPORT AbilityWrapper : public ObjectWrapper Q_OBJECT public: - static AbilityWrapper* create(const Pokemod::Ability* ability, QObject* parent) - { - if (!m_instances.contains(ability->id())) - m_instances[ability->id()] = new AbilityWrapper(ability, parent); - return qobject_cast<AbilityWrapper*>(m_instances[ability->id()]); - } - public slots: - QString name() const; - int priority() const; - QString description() const; - Pokemod::Script battleScript() const; - Pokemod::Script worldScript() const; + static AbilityWrapper* create(const Pokemod::Ability* ability, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE int priority() const; + Q_SCRIPTABLE QString description() const; + Q_SCRIPTABLE Pokemod::Script battleScript() const; + Q_SCRIPTABLE Pokemod::Script worldScript() const; private: - AbilityWrapper(const Pokemod::Ability* ability, QObject* parent); + AbilityWrapper(const Pokemod::Ability* ability, PokemodWrapper* parent); AbilityWrapper& operator=(const AbilityWrapper& rhs); const Pokemod::Ability* m_ability; diff --git a/pokescripting/AuthorWrapper.cpp b/pokescripting/AuthorWrapper.cpp index 693b496e..53834074 100644 --- a/pokescripting/AuthorWrapper.cpp +++ b/pokescripting/AuthorWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "AuthorWrapper.h" -Pokescripting::AuthorWrapper::AuthorWrapper(const Pokemod::Author* author, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::AuthorWrapper* Pokescripting::AuthorWrapper::create(const Pokemod::Author* author, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, author->id()))) + m_instances[Signiture(parent, author->id())] = new AuthorWrapper(author, parent); + return qobject_cast<AuthorWrapper*>(m_instances[Signiture(parent, author->id())]); +} + +Pokescripting::AuthorWrapper::AuthorWrapper(const Pokemod::Author* author, PokemodWrapper* parent) : ObjectWrapper(author, parent), m_author(author) { diff --git a/pokescripting/AuthorWrapper.h b/pokescripting/AuthorWrapper.h index 98259c7f..41ef6015 100644 --- a/pokescripting/AuthorWrapper.h +++ b/pokescripting/AuthorWrapper.h @@ -31,18 +31,13 @@ class POKESCRIPTING_EXPORT AuthorWrapper : public ObjectWrapper Q_OBJECT public: - static AuthorWrapper* create(const Pokemod::Author* author, QObject* parent) - { - if (!m_instances.contains(author->id())) - m_instances[author->id()] = new AuthorWrapper(author, parent); - return qobject_cast<AuthorWrapper*>(m_instances[author->id()]); - } - public slots: - QString name() const; - QString email() const; - QString role() const; + static AuthorWrapper* create(const Pokemod::Author* author, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE QString email() const; + Q_SCRIPTABLE QString role() const; private: - AuthorWrapper(const Pokemod::Author* author, QObject* parent); + AuthorWrapper(const Pokemod::Author* author, PokemodWrapper* parent); AuthorWrapper& operator=(const AuthorWrapper& rhs); const Pokemod::Author* m_author; diff --git a/pokescripting/BadgeWrapper.cpp b/pokescripting/BadgeWrapper.cpp index 7fdcfef7..0d495a15 100644 --- a/pokescripting/BadgeWrapper.cpp +++ b/pokescripting/BadgeWrapper.cpp @@ -19,9 +19,16 @@ #include "BadgeWrapper.h" // Pokescripting includes -#include "SpriteWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::BadgeWrapper::BadgeWrapper(const Pokemod::Badge* badge, QObject* parent) : +Pokescripting::BadgeWrapper* Pokescripting::BadgeWrapper::create(const Pokemod::Badge* badge, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, badge->id()))) + m_instances[Signiture(parent, badge->id())] = new BadgeWrapper(badge, parent); + return qobject_cast<BadgeWrapper*>(m_instances[Signiture(parent, badge->id())]); +} + +Pokescripting::BadgeWrapper::BadgeWrapper(const Pokemod::Badge* badge, PokemodWrapper* parent) : ObjectWrapper(badge, parent), m_badge(badge) { @@ -34,12 +41,12 @@ QString Pokescripting::BadgeWrapper::name() const Pokescripting::SpriteWrapper* Pokescripting::BadgeWrapper::face() { - return SpriteWrapper::create(pokemod()->spriteById(m_badge->face()), this); + return pokemod()->sprite(m_badge->face()); } Pokescripting::SpriteWrapper* Pokescripting::BadgeWrapper::badge() { - return SpriteWrapper::create(pokemod()->spriteById(m_badge->badge()), this); + return pokemod()->sprite(m_badge->badge()); } int Pokescripting::BadgeWrapper::obey() const @@ -47,7 +54,7 @@ int Pokescripting::BadgeWrapper::obey() const return m_badge->obey(); } -Pokemod::Fraction Pokescripting::BadgeWrapper::stat(const int stat) const +Pokemod::Fraction Pokescripting::BadgeWrapper::stat(const Pokemod::Stat stat) const { return m_badge->stat(stat); } diff --git a/pokescripting/BadgeWrapper.h b/pokescripting/BadgeWrapper.h index fa518e7a..6aafd808 100644 --- a/pokescripting/BadgeWrapper.h +++ b/pokescripting/BadgeWrapper.h @@ -34,20 +34,15 @@ class POKESCRIPTING_EXPORT BadgeWrapper : public ObjectWrapper Q_OBJECT public: - static BadgeWrapper* create(const Pokemod::Badge* badge, QObject* parent) - { - if (!m_instances.contains(badge->id())) - m_instances[badge->id()] = new BadgeWrapper(badge, parent); - return qobject_cast<BadgeWrapper*>(m_instances[badge->id()]); - } - public slots: - QString name() const; - SpriteWrapper* face(); - SpriteWrapper* badge(); - int obey() const; - Pokemod::Fraction stat(const int stat) const; + static BadgeWrapper* create(const Pokemod::Badge* badge, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE SpriteWrapper* face(); + Q_SCRIPTABLE SpriteWrapper* badge(); + Q_SCRIPTABLE int obey() const; + Q_SCRIPTABLE Pokemod::Fraction stat(const Pokemod::Stat stat) const; private: - BadgeWrapper(const Pokemod::Badge* badge, QObject* parent); + BadgeWrapper(const Pokemod::Badge* badge, PokemodWrapper* parent); BadgeWrapper& operator=(const BadgeWrapper& rhs); const Pokemod::Badge* m_badge; diff --git a/pokescripting/CMakeLists.txt b/pokescripting/CMakeLists.txt index 0a827711..30afbb0e 100644 --- a/pokescripting/CMakeLists.txt +++ b/pokescripting/CMakeLists.txt @@ -98,9 +98,11 @@ SET_TARGET_PROPERTIES(pokescripting PROPERTIES VERSION ${POKEGEN_VERSION} SOVERSION ${POKEGEN_SOVERSION} + LINK_INTERFACE_LIBRARIES "" ) TARGET_LINK_LIBRARIES(pokescripting ${QT_QTCORE_LIBRARY} + ${QT_QTGUI_LIBRARY} ${PHONON_LIBRARY} ${KDE4_KROSSCORE_LIBRARY} pokemod diff --git a/pokescripting/CoinListObjectWrapper.cpp b/pokescripting/CoinListObjectWrapper.cpp index 06ab5dc8..fc33444d 100644 --- a/pokescripting/CoinListObjectWrapper.cpp +++ b/pokescripting/CoinListObjectWrapper.cpp @@ -19,16 +19,23 @@ #include "CoinListObjectWrapper.h" // Pokescripting includes -#include "ItemWrapper.h" -#include "SpeciesWrapper.h" +#include "CoinListWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::CoinListObjectWrapper::CoinListObjectWrapper(const Pokemod::CoinListObject* object, QObject* parent) : +Pokescripting::CoinListObjectWrapper* Pokescripting::CoinListObjectWrapper::create(const Pokemod::CoinListObject* object, CoinListWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, object->id()))) + m_instances[Signiture(parent, object->id())] = new CoinListObjectWrapper(object, parent); + return qobject_cast<CoinListObjectWrapper*>(m_instances[Signiture(parent, object->id())]); +} + +Pokescripting::CoinListObjectWrapper::CoinListObjectWrapper(const Pokemod::CoinListObject* object, CoinListWrapper* parent) : ObjectWrapper(object, parent), m_object(object) { } -int Pokescripting::CoinListObjectWrapper::type() const +Pokemod::CoinListObject::Type Pokescripting::CoinListObjectWrapper::type() const { return m_object->type(); } @@ -36,14 +43,14 @@ int Pokescripting::CoinListObjectWrapper::type() const Pokescripting::ItemWrapper* Pokescripting::CoinListObjectWrapper::itemObject() { if (m_object->type() == Pokemod::CoinListObject::Item) - return ItemWrapper::create(pokemod()->itemById(m_object->object()), this); + return pokemod()->item(m_object->object()); return NULL; } Pokescripting::SpeciesWrapper* Pokescripting::CoinListObjectWrapper::speciesObject() { if (m_object->type() == Pokemod::CoinListObject::Species) - return SpeciesWrapper::create(pokemod()->speciesById(m_object->object()), this); + return pokemod()->species(m_object->object()); return NULL; } diff --git a/pokescripting/CoinListObjectWrapper.h b/pokescripting/CoinListObjectWrapper.h index 1b86840f..f8de0489 100644 --- a/pokescripting/CoinListObjectWrapper.h +++ b/pokescripting/CoinListObjectWrapper.h @@ -27,6 +27,7 @@ namespace Pokescripting { // Forward declarations +class CoinListWrapper; class ItemWrapper; class SpeciesWrapper; @@ -35,20 +36,15 @@ class POKESCRIPTING_EXPORT CoinListObjectWrapper : public ObjectWrapper Q_OBJECT public: - 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; - ItemWrapper* itemObject(); - SpeciesWrapper* speciesObject(); - int amount() const; - int cost() const; + static CoinListObjectWrapper* create(const Pokemod::CoinListObject* object, CoinListWrapper* parent); + + Q_SCRIPTABLE Pokemod::CoinListObject::Type type() const; + Q_SCRIPTABLE ItemWrapper* itemObject(); + Q_SCRIPTABLE SpeciesWrapper* speciesObject(); + Q_SCRIPTABLE int amount() const; + Q_SCRIPTABLE int cost() const; private: - CoinListObjectWrapper(const Pokemod::CoinListObject* object, QObject* parent); + CoinListObjectWrapper(const Pokemod::CoinListObject* object, CoinListWrapper* parent); CoinListObjectWrapper& operator=(const CoinListObjectWrapper& rhs); const Pokemod::CoinListObject* m_object; diff --git a/pokescripting/CoinListWrapper.cpp b/pokescripting/CoinListWrapper.cpp index 86841f2f..38807810 100644 --- a/pokescripting/CoinListWrapper.cpp +++ b/pokescripting/CoinListWrapper.cpp @@ -20,8 +20,16 @@ // Pokescripting includes #include "CoinListObjectWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::CoinListWrapper::CoinListWrapper(const Pokemod::CoinList* coinList, QObject* parent) : +Pokescripting::CoinListWrapper* Pokescripting::CoinListWrapper::create(const Pokemod::CoinList* coinList, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, coinList->id()))) + m_instances[Signiture(parent, coinList->id())] = new CoinListWrapper(coinList, parent); + return qobject_cast<CoinListWrapper*>(m_instances[Signiture(parent, coinList->id())]); +} + +Pokescripting::CoinListWrapper::CoinListWrapper(const Pokemod::CoinList* coinList, PokemodWrapper* parent) : ObjectWrapper(coinList, parent), m_coinList(coinList) { diff --git a/pokescripting/CoinListWrapper.h b/pokescripting/CoinListWrapper.h index 9b9bc63e..d702d585 100644 --- a/pokescripting/CoinListWrapper.h +++ b/pokescripting/CoinListWrapper.h @@ -19,7 +19,6 @@ #define __POKESCRIPTING_COINLISTWRAPPER__ // Pokescripting includes -#include "CoinListObjectWrapper.h" #include "ObjectWrapper.h" // Pokemod includes @@ -27,25 +26,24 @@ namespace Pokescripting { +// Forward declarations +class CoinListObjectWrapper; +class PokemodWrapper; + class POKESCRIPTING_EXPORT CoinListWrapper : public ObjectWrapper { Q_OBJECT public: - static CoinListWrapper* create(const Pokemod::CoinList* coinList, QObject* parent) - { - if (!m_instances.contains(coinList->id())) - m_instances[coinList->id()] = new CoinListWrapper(coinList, parent); - return qobject_cast<CoinListWrapper*>(m_instances[coinList->id()]); - } - public slots: - QString name() const; - Pokemod::Script script() const; + static CoinListWrapper* create(const Pokemod::CoinList* coinList, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Script script() const; - CoinListObjectWrapper* object(const int index); - int objectCount() const; + Q_SCRIPTABLE CoinListObjectWrapper* object(const int index); + Q_SCRIPTABLE int objectCount() const; private: - CoinListWrapper(const Pokemod::CoinList* coinList, QObject* parent); + CoinListWrapper(const Pokemod::CoinList* coinList, PokemodWrapper* parent); CoinListWrapper& operator=(const CoinListWrapper& rhs); const Pokemod::CoinList* m_coinList; diff --git a/pokescripting/Config.h b/pokescripting/Config.h index 338c4bb6..7d66807b 100644 --- a/pokescripting/Config.h +++ b/pokescripting/Config.h @@ -41,12 +41,13 @@ class POKESCRIPTING_EXPORT Config : public QObject public: Config(QObject* parent); + + Q_SCRIPTABLE QVariant value(const QString& name, const bool recursive = true) const; + Q_SCRIPTABLE bool hasValue(const QString& name, const bool recursive = false) const; public slots: void addValue(const QString& name, const QVariant& value); void setValue(const QString& name, const QVariant& value); void removeValue(const QString& name); - QVariant value(const QString& name, const bool recursive = true) const; - bool hasValue(const QString& name, const bool recursive = false) const; virtual void writeBack(); private: diff --git a/pokescripting/EggGroupWrapper.cpp b/pokescripting/EggGroupWrapper.cpp index 217d84a8..2f3f9051 100644 --- a/pokescripting/EggGroupWrapper.cpp +++ b/pokescripting/EggGroupWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "EggGroupWrapper.h" -Pokescripting::EggGroupWrapper::EggGroupWrapper(const Pokemod::EggGroup* eggGroup, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::EggGroupWrapper* Pokescripting::EggGroupWrapper::create(const Pokemod::EggGroup* eggGroup, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, eggGroup->id()))) + m_instances[Signiture(parent, eggGroup->id())] = new EggGroupWrapper(eggGroup, parent); + return qobject_cast<EggGroupWrapper*>(m_instances[Signiture(parent, eggGroup->id())]); +} + +Pokescripting::EggGroupWrapper::EggGroupWrapper(const Pokemod::EggGroup* eggGroup, PokemodWrapper* parent) : ObjectWrapper(eggGroup, parent), m_eggGroup(eggGroup) { diff --git a/pokescripting/EggGroupWrapper.h b/pokescripting/EggGroupWrapper.h index 53665e3a..c0552b35 100644 --- a/pokescripting/EggGroupWrapper.h +++ b/pokescripting/EggGroupWrapper.h @@ -31,16 +31,11 @@ class POKESCRIPTING_EXPORT EggGroupWrapper : public ObjectWrapper Q_OBJECT public: - static EggGroupWrapper* create(const Pokemod::EggGroup* eggGroup, QObject* parent) - { - if (!m_instances.contains(eggGroup->id())) - m_instances[eggGroup->id()] = new EggGroupWrapper(eggGroup, parent); - return qobject_cast<EggGroupWrapper*>(m_instances[eggGroup->id()]); - } - public slots: - QString name() const; + static EggGroupWrapper* create(const Pokemod::EggGroup* eggGroup, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; private: - EggGroupWrapper(const Pokemod::EggGroup* eggGroup, QObject* parent); + EggGroupWrapper(const Pokemod::EggGroup* eggGroup, PokemodWrapper* parent); EggGroupWrapper& operator=(const EggGroupWrapper& rhs); const Pokemod::EggGroup* m_eggGroup; diff --git a/pokescripting/GlobalScriptWrapper.cpp b/pokescripting/GlobalScriptWrapper.cpp index 5e219aed..34a3fa62 100644 --- a/pokescripting/GlobalScriptWrapper.cpp +++ b/pokescripting/GlobalScriptWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "GlobalScriptWrapper.h" -Pokescripting::GlobalScriptWrapper::GlobalScriptWrapper(const Pokemod::GlobalScript* globalScript, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::GlobalScriptWrapper* Pokescripting::GlobalScriptWrapper::create(const Pokemod::GlobalScript* globalScript, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, globalScript->id()))) + m_instances[Signiture(parent, globalScript->id())] = new GlobalScriptWrapper(globalScript, parent); + return qobject_cast<GlobalScriptWrapper*>(m_instances[Signiture(parent, globalScript->id())]); +} + +Pokescripting::GlobalScriptWrapper::GlobalScriptWrapper(const Pokemod::GlobalScript* globalScript, PokemodWrapper* parent) : ObjectWrapper(globalScript, parent), m_globalScript(globalScript) { diff --git a/pokescripting/GlobalScriptWrapper.h b/pokescripting/GlobalScriptWrapper.h index 00496e77..739cc60b 100644 --- a/pokescripting/GlobalScriptWrapper.h +++ b/pokescripting/GlobalScriptWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT GlobalScriptWrapper : public ObjectWrapper Q_OBJECT public: - static GlobalScriptWrapper* create(const Pokemod::GlobalScript* globalScript, QObject* parent) - { - if (!m_instances.contains(globalScript->id())) - m_instances[globalScript->id()] = new GlobalScriptWrapper(globalScript, parent); - return qobject_cast<GlobalScriptWrapper*>(m_instances[globalScript->id()]); - } - public slots: - QString name() const; - Pokemod::Script script() const; + static GlobalScriptWrapper* create(const Pokemod::GlobalScript* globalScript, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - GlobalScriptWrapper(const Pokemod::GlobalScript* globalScript, QObject* parent); + GlobalScriptWrapper(const Pokemod::GlobalScript* globalScript, PokemodWrapper* parent); GlobalScriptWrapper& operator=(const GlobalScriptWrapper& rhs); const Pokemod::GlobalScript* m_globalScript; diff --git a/pokescripting/ItemTypeWrapper.cpp b/pokescripting/ItemTypeWrapper.cpp index 947b148c..f7014d0d 100644 --- a/pokescripting/ItemTypeWrapper.cpp +++ b/pokescripting/ItemTypeWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "ItemTypeWrapper.h" -Pokescripting::ItemTypeWrapper::ItemTypeWrapper(const Pokemod::ItemType* itemType, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::ItemTypeWrapper* Pokescripting::ItemTypeWrapper::create(const Pokemod::ItemType* itemType, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, itemType->id()))) + m_instances[Signiture(parent, itemType->id())] = new ItemTypeWrapper(itemType, parent); + return qobject_cast<ItemTypeWrapper*>(m_instances[Signiture(parent, itemType->id())]); +} + +Pokescripting::ItemTypeWrapper::ItemTypeWrapper(const Pokemod::ItemType* itemType, PokemodWrapper* parent) : ObjectWrapper(itemType, parent), m_itemType(itemType) { diff --git a/pokescripting/ItemTypeWrapper.h b/pokescripting/ItemTypeWrapper.h index 2669ac25..2570b098 100644 --- a/pokescripting/ItemTypeWrapper.h +++ b/pokescripting/ItemTypeWrapper.h @@ -31,19 +31,14 @@ class POKESCRIPTING_EXPORT ItemTypeWrapper : public ObjectWrapper Q_OBJECT public: - static ItemTypeWrapper* create(const Pokemod::ItemType* itemType, QObject* parent) - { - if (!m_instances.contains(itemType->id())) - m_instances[itemType->id()] = new ItemTypeWrapper(itemType, parent); - return qobject_cast<ItemTypeWrapper*>(m_instances[itemType->id()]); - } - public slots: - QString name() const; - int computer() const; - int player() const; - int count() const; + static ItemTypeWrapper* create(const Pokemod::ItemType* itemType, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE int computer() const; + Q_SCRIPTABLE int player() const; + Q_SCRIPTABLE int count() const; private: - ItemTypeWrapper(const Pokemod::ItemType* itemType, QObject* parent); + ItemTypeWrapper(const Pokemod::ItemType* itemType, PokemodWrapper* parent); ItemTypeWrapper& operator=(const ItemTypeWrapper& rhs); const Pokemod::ItemType* m_itemType; diff --git a/pokescripting/ItemWrapper.cpp b/pokescripting/ItemWrapper.cpp index bcb9682a..002efea6 100644 --- a/pokescripting/ItemWrapper.cpp +++ b/pokescripting/ItemWrapper.cpp @@ -19,9 +19,16 @@ #include "ItemWrapper.h" // Pokescripting includes -#include "ItemTypeWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::ItemWrapper::ItemWrapper(const Pokemod::Item* item, QObject* parent) : +Pokescripting::ItemWrapper* Pokescripting::ItemWrapper::create(const Pokemod::Item* item, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, item->id()))) + m_instances[Signiture(parent, item->id())] = new ItemWrapper(item, parent); + return qobject_cast<ItemWrapper*>(m_instances[Signiture(parent, item->id())]); +} + +Pokescripting::ItemWrapper::ItemWrapper(const Pokemod::Item* item, PokemodWrapper* parent) : ObjectWrapper(item, parent), m_item(item) { @@ -39,7 +46,7 @@ bool Pokescripting::ItemWrapper::sellable() const Pokescripting::ItemTypeWrapper* Pokescripting::ItemWrapper::type() { - return ItemTypeWrapper::create(pokemod()->itemTypeById(m_item->type()), this); + return pokemod()->itemType(m_item->type()); } int Pokescripting::ItemWrapper::price() const diff --git a/pokescripting/ItemWrapper.h b/pokescripting/ItemWrapper.h index 65b71239..c650ff9b 100644 --- a/pokescripting/ItemWrapper.h +++ b/pokescripting/ItemWrapper.h @@ -34,21 +34,16 @@ class POKESCRIPTING_EXPORT ItemWrapper : public ObjectWrapper Q_OBJECT public: - static ItemWrapper* create(const Pokemod::Item* item, QObject* parent) - { - if (!m_instances.contains(item->id())) - m_instances[item->id()] = new ItemWrapper(item, parent); - return qobject_cast<ItemWrapper*>(m_instances[item->id()]); - } - public slots: - QString name() const; - bool sellable() const; - ItemTypeWrapper* type(); - int price() const; - QString description() const; - Pokemod::Script script() const; + static ItemWrapper* create(const Pokemod::Item* item, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE bool sellable() const; + Q_SCRIPTABLE ItemTypeWrapper* type(); + Q_SCRIPTABLE int price() const; + Q_SCRIPTABLE QString description() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - ItemWrapper(const Pokemod::Item* item, QObject* parent); + ItemWrapper(const Pokemod::Item* item, PokemodWrapper* parent); ItemWrapper& operator=(const ItemWrapper& rhs); const Pokemod::Item* m_item; diff --git a/pokescripting/MapEffectWrapper.cpp b/pokescripting/MapEffectWrapper.cpp index 9274ade8..ac1d7c41 100644 --- a/pokescripting/MapEffectWrapper.cpp +++ b/pokescripting/MapEffectWrapper.cpp @@ -19,9 +19,17 @@ #include "MapEffectWrapper.h" // Pokescripting includes -#include "SkinWrapper.h" +#include "MapWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapEffectWrapper::MapEffectWrapper(const Pokemod::MapEffect* effect, QObject* parent) : +Pokescripting::MapEffectWrapper* Pokescripting::MapEffectWrapper::create(const Pokemod::MapEffect* effect, MapWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, effect->id()))) + m_instances[Signiture(parent, effect->id())] = new MapEffectWrapper(effect, parent); + return qobject_cast<MapEffectWrapper*>(m_instances[Signiture(parent, effect->id())]); +} + +Pokescripting::MapEffectWrapper::MapEffectWrapper(const Pokemod::MapEffect* effect, MapWrapper* parent) : ObjectWrapper(effect, parent), m_effect(effect) { @@ -41,7 +49,7 @@ QPoint Pokescripting::MapEffectWrapper::coordinate() const Pokescripting::SkinWrapper* Pokescripting::MapEffectWrapper::skin() { - return SkinWrapper::create(pokemod()->skinById(m_effect->skin()), this); + return pokemod()->skin(m_effect->skin()); } bool Pokescripting::MapEffectWrapper::isGhost() const diff --git a/pokescripting/MapEffectWrapper.h b/pokescripting/MapEffectWrapper.h index c053937f..1a686bb0 100644 --- a/pokescripting/MapEffectWrapper.h +++ b/pokescripting/MapEffectWrapper.h @@ -27,6 +27,7 @@ namespace Pokescripting { // Forward declarations +class MapWrapper; class SkinWrapper; class POKESCRIPTING_EXPORT MapEffectWrapper : public ObjectWrapper @@ -34,20 +35,15 @@ class POKESCRIPTING_EXPORT MapEffectWrapper : public ObjectWrapper Q_OBJECT public: - 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; - QPoint coordinate() const; - SkinWrapper* skin(); - bool isGhost() const; - Pokemod::Script script() const; + static MapEffectWrapper* create(const Pokemod::MapEffect* effect, MapWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE QPoint coordinate() const; + Q_SCRIPTABLE SkinWrapper* skin(); + Q_SCRIPTABLE bool isGhost() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - MapEffectWrapper(const Pokemod::MapEffect* effect, QObject* parent); + MapEffectWrapper(const Pokemod::MapEffect* effect, MapWrapper* parent); MapEffectWrapper& operator=(const MapEffectWrapper& rhs); const Pokemod::MapEffect* m_effect; diff --git a/pokescripting/MapTrainerTeamMemberWrapper.cpp b/pokescripting/MapTrainerTeamMemberWrapper.cpp index 38609e3d..a7b52c35 100644 --- a/pokescripting/MapTrainerTeamMemberWrapper.cpp +++ b/pokescripting/MapTrainerTeamMemberWrapper.cpp @@ -19,13 +19,17 @@ #include "MapTrainerTeamMemberWrapper.h" // Pokescripting includes -#include "AbilityWrapper.h" -#include "ItemWrapper.h" -#include "MoveWrapper.h" -#include "NatureWrapper.h" -#include "SpeciesWrapper.h" +#include "MapTrainerWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapTrainerTeamMemberWrapper::MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent) : +Pokescripting::MapTrainerTeamMemberWrapper* Pokescripting::MapTrainerTeamMemberWrapper::create(const Pokemod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, teamMember->id()))) + m_instances[Signiture(parent, teamMember->id())] = new MapTrainerTeamMemberWrapper(teamMember, parent); + return qobject_cast<MapTrainerTeamMemberWrapper*>(m_instances[Signiture(parent, teamMember->id())]); +} + +Pokescripting::MapTrainerTeamMemberWrapper::MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent) : ObjectWrapper(teamMember, parent), m_teamMember(teamMember) { @@ -33,7 +37,7 @@ Pokescripting::MapTrainerTeamMemberWrapper::MapTrainerTeamMemberWrapper(const Po Pokescripting::SpeciesWrapper* Pokescripting::MapTrainerTeamMemberWrapper::species() { - return SpeciesWrapper::create(pokemod()->speciesById(m_teamMember->species()), this); + return pokemod()->species(m_teamMember->species()); } int Pokescripting::MapTrainerTeamMemberWrapper::level() const @@ -48,7 +52,7 @@ QList<Pokescripting::AbilityWrapper*> Pokescripting::MapTrainerTeamMemberWrapper QList<int> abilityIds = m_teamMember->abilities(); QList<AbilityWrapper*> abilities; foreach (int id, abilityIds) - abilities.append(AbilityWrapper::create(pokemod()->abilityById(id), this)); + abilities.append(pokemod()->ability(id)); return abilities; } @@ -57,7 +61,7 @@ QList<Pokescripting::ItemWrapper*> Pokescripting::MapTrainerTeamMemberWrapper::i QList<int> itemIds = m_teamMember->items(); QList<ItemWrapper*> items; foreach (int id, itemIds) - items.append(ItemWrapper::create(pokemod()->itemById(id), this)); + items.append(pokemod()->item(id)); return items; } @@ -66,7 +70,7 @@ QList<Pokescripting::MoveWrapper*> Pokescripting::MapTrainerTeamMemberWrapper::m QList<int> moveIds = m_teamMember->moves(); QList<MoveWrapper*> moves; foreach (int id, moveIds) - moves.append(MoveWrapper::create(pokemod()->moveById(id), this)); + moves.append(pokemod()->move(id)); return moves; } @@ -75,6 +79,6 @@ QList<Pokescripting::NatureWrapper*> Pokescripting::MapTrainerTeamMemberWrapper: QList<int> natureIds = m_teamMember->natures(); QList<NatureWrapper*> natures; foreach (int id, natureIds) - natures.append(NatureWrapper::create(pokemod()->natureById(id), this)); + natures.append(pokemod()->nature(id)); return natures; } diff --git a/pokescripting/MapTrainerTeamMemberWrapper.h b/pokescripting/MapTrainerTeamMemberWrapper.h index cfc264f8..0e9e3ea7 100644 --- a/pokescripting/MapTrainerTeamMemberWrapper.h +++ b/pokescripting/MapTrainerTeamMemberWrapper.h @@ -29,6 +29,7 @@ namespace Pokescripting // Forward declarations class AbilityWrapper; class ItemWrapper; +class MapTrainerWrapper; class MoveWrapper; class NatureWrapper; class SpeciesWrapper; @@ -38,21 +39,16 @@ class POKESCRIPTING_EXPORT MapTrainerTeamMemberWrapper : public ObjectWrapper Q_OBJECT public: - static MapTrainerTeamMemberWrapper* create(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent) - { - if (!m_instances.contains(teamMember->id())) - m_instances[teamMember->id()] = new MapTrainerTeamMemberWrapper(teamMember, parent); - return qobject_cast<MapTrainerTeamMemberWrapper*>(m_instances[teamMember->id()]); - } - public slots: - SpeciesWrapper* species(); - int level() const; - QList<AbilityWrapper*> abilities(); - QList<ItemWrapper*> items(); - QList<MoveWrapper*> moves(); - QList<NatureWrapper*> natures(); + static MapTrainerTeamMemberWrapper* create(const Pokemod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent); + + Q_SCRIPTABLE SpeciesWrapper* species(); + Q_SCRIPTABLE int level() const; + Q_SCRIPTABLE QList<AbilityWrapper*> abilities(); + Q_SCRIPTABLE QList<ItemWrapper*> items(); + Q_SCRIPTABLE QList<MoveWrapper*> moves(); + Q_SCRIPTABLE QList<NatureWrapper*> natures(); private: - MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, QObject* parent); + MapTrainerTeamMemberWrapper(const Pokemod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent); MapTrainerTeamMemberWrapper& operator=(const MapTrainerTeamMemberWrapper& rhs); const Pokemod::MapTrainerTeamMember* m_teamMember; diff --git a/pokescripting/MapTrainerWrapper.cpp b/pokescripting/MapTrainerWrapper.cpp index d4d71914..a3ac6050 100644 --- a/pokescripting/MapTrainerWrapper.cpp +++ b/pokescripting/MapTrainerWrapper.cpp @@ -19,10 +19,18 @@ #include "MapTrainerWrapper.h" // Pokescripting includes +#include "MapWrapper.h" #include "MapTrainerTeamMemberWrapper.h" -#include "TrainerWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapTrainerWrapper::MapTrainerWrapper(const Pokemod::MapTrainer* trainer, QObject* parent) : +Pokescripting::MapTrainerWrapper* Pokescripting::MapTrainerWrapper::create(const Pokemod::MapTrainer* trainer, MapWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, trainer->id()))) + m_instances[Signiture(parent, trainer->id())] = new MapTrainerWrapper(trainer, parent); + return qobject_cast<MapTrainerWrapper*>(m_instances[Signiture(parent, trainer->id())]); +} + +Pokescripting::MapTrainerWrapper::MapTrainerWrapper(const Pokemod::MapTrainer* trainer, MapWrapper* parent) : ObjectWrapper(trainer, parent), m_trainer(trainer) { @@ -35,7 +43,7 @@ QString Pokescripting::MapTrainerWrapper::name() const Pokescripting::TrainerWrapper* Pokescripting::MapTrainerWrapper::trainerClass() { - return TrainerWrapper::create(pokemod()->trainerById(m_trainer->trainerClass()), this); + return pokemod()->trainer(m_trainer->trainerClass()); } int Pokescripting::MapTrainerWrapper::numberFight() const diff --git a/pokescripting/MapTrainerWrapper.h b/pokescripting/MapTrainerWrapper.h index 8a3e061d..9d74709e 100644 --- a/pokescripting/MapTrainerWrapper.h +++ b/pokescripting/MapTrainerWrapper.h @@ -27,6 +27,7 @@ namespace Pokescripting { // Forward declarations +class MapWrapper; class MapTrainerTeamMemberWrapper; class TrainerWrapper; @@ -35,23 +36,18 @@ class POKESCRIPTING_EXPORT MapTrainerWrapper : public ObjectWrapper Q_OBJECT public: - static MapTrainerWrapper* create(const Pokemod::MapTrainer* trainer, QObject* parent) - { - if (!m_instances.contains(trainer->id())) - m_instances[trainer->id()] = new MapTrainerWrapper(trainer, parent); - return qobject_cast<MapTrainerWrapper*>(m_instances[trainer->id()]); - } - public slots: - QString name() const; - TrainerWrapper* trainerClass(); - int numberFight() const; - MapTrainerTeamMemberWrapper* leadTeamMember(); - Pokemod::Script script() const; + static MapTrainerWrapper* create(const Pokemod::MapTrainer* trainer, MapWrapper* parent); - MapTrainerTeamMemberWrapper* teamMember(const int index); - int teamMemberCount() const; + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE TrainerWrapper* trainerClass(); + Q_SCRIPTABLE int numberFight() const; + Q_SCRIPTABLE MapTrainerTeamMemberWrapper* leadTeamMember(); + Q_SCRIPTABLE Pokemod::Script script() const; + + Q_SCRIPTABLE MapTrainerTeamMemberWrapper* teamMember(const int index); + Q_SCRIPTABLE int teamMemberCount() const; private: - MapTrainerWrapper(const Pokemod::MapTrainer* trainer, QObject* parent); + MapTrainerWrapper(const Pokemod::MapTrainer* trainer, MapWrapper* parent); MapTrainerWrapper& operator=(const MapTrainerWrapper& rhs); const Pokemod::MapTrainer* m_trainer; diff --git a/pokescripting/MapWarpWrapper.cpp b/pokescripting/MapWarpWrapper.cpp index 8d1ade17..476c934d 100644 --- a/pokescripting/MapWarpWrapper.cpp +++ b/pokescripting/MapWarpWrapper.cpp @@ -18,10 +18,18 @@ // Header include #include "MapWarpWrapper.h" -// Pokemod includes -#include "../pokemod/Map.h" +// Pokescripting includes +#include "MapWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapWarpWrapper::MapWarpWrapper(const Pokemod::MapWarp* warp, QObject* parent) : +Pokescripting::MapWarpWrapper* Pokescripting::MapWarpWrapper::create(const Pokemod::MapWarp* warp, MapWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, warp->id()))) + m_instances[Signiture(parent, warp->id())] = new MapWarpWrapper(warp, parent); + return qobject_cast<MapWarpWrapper*>(m_instances[Signiture(parent, warp->id())]); +} + +Pokescripting::MapWarpWrapper::MapWarpWrapper(const Pokemod::MapWarp* warp, MapWrapper* parent) : ObjectWrapper(warp, parent), m_warp(warp) { @@ -39,14 +47,14 @@ QPoint Pokescripting::MapWarpWrapper::coordinate() const return m_warp->coordinate(); } -int Pokescripting::MapWarpWrapper::type() const +Pokemod::MapWarp::Type Pokescripting::MapWarpWrapper::type() const { return m_warp->type(); } Pokescripting::MapWarpWrapper* Pokescripting::MapWarpWrapper::toWarp() { - return new MapWarpWrapper(pokemod()->mapById(m_warp->toMap())->warpById(m_warp->toWarp()), this); + return pokemod()->map(m_warp->toMap())->warp(m_warp->toWarp()); } Pokemod::Script Pokescripting::MapWarpWrapper::script() const diff --git a/pokescripting/MapWarpWrapper.h b/pokescripting/MapWarpWrapper.h index aefbd18b..02988a39 100644 --- a/pokescripting/MapWarpWrapper.h +++ b/pokescripting/MapWarpWrapper.h @@ -26,25 +26,23 @@ namespace Pokescripting { +// Forward declartions +class MapWrapper; + class POKESCRIPTING_EXPORT MapWarpWrapper : public ObjectWrapper { Q_OBJECT public: - static MapWarpWrapper* create(const Pokemod::MapWarp* warp, QObject* parent) - { - if (!m_instances.contains(warp->id())) - m_instances[warp->id()] = new MapWarpWrapper(warp, parent); - return qobject_cast<MapWarpWrapper*>(m_instances[warp->id()]); - } - public slots: - QString name() const; - QPoint coordinate() const; - int type() const; - MapWarpWrapper* toWarp(); - Pokemod::Script script() const; + static MapWarpWrapper* create(const Pokemod::MapWarp* warp, MapWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE QPoint coordinate() const; + Q_SCRIPTABLE Pokemod::MapWarp::Type type() const; + Q_SCRIPTABLE MapWarpWrapper* toWarp(); + Q_SCRIPTABLE Pokemod::Script script() const; private: - MapWarpWrapper(const Pokemod::MapWarp* warp, QObject* parent); + MapWarpWrapper(const Pokemod::MapWarp* warp, MapWrapper* parent); MapWarpWrapper& operator=(const MapWarpWrapper& rhs); const Pokemod::MapWarp* m_warp; diff --git a/pokescripting/MapWildListEncounterWrapper.cpp b/pokescripting/MapWildListEncounterWrapper.cpp index 372db561..6d37d5ae 100644 --- a/pokescripting/MapWildListEncounterWrapper.cpp +++ b/pokescripting/MapWildListEncounterWrapper.cpp @@ -19,9 +19,17 @@ #include "MapWildListEncounterWrapper.h" // Pokescripting includes -#include "SpeciesWrapper.h" +#include "MapWildListWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapWildListEncounterWrapper::MapWildListEncounterWrapper(const Pokemod::MapWildListEncounter* encounter, QObject* parent) : +Pokescripting::MapWildListEncounterWrapper* Pokescripting::MapWildListEncounterWrapper::create(const Pokemod::MapWildListEncounter* encounter, MapWildListWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, encounter->id()))) + m_instances[Signiture(parent, encounter->id())] = new MapWildListEncounterWrapper(encounter, parent); + return qobject_cast<MapWildListEncounterWrapper*>(m_instances[Signiture(parent, encounter->id())]); +} + +Pokescripting::MapWildListEncounterWrapper::MapWildListEncounterWrapper(const Pokemod::MapWildListEncounter* encounter, MapWildListWrapper* parent) : ObjectWrapper(encounter, parent), m_encounter(encounter) { @@ -29,7 +37,7 @@ Pokescripting::MapWildListEncounterWrapper::MapWildListEncounterWrapper(const Po Pokescripting::SpeciesWrapper* Pokescripting::MapWildListEncounterWrapper::species() { - return SpeciesWrapper::create(pokemod()->speciesById(m_encounter->species()), this); + return pokemod()->species(m_encounter->species()); } int Pokescripting::MapWildListEncounterWrapper::level() const diff --git a/pokescripting/MapWildListEncounterWrapper.h b/pokescripting/MapWildListEncounterWrapper.h index 8bd518b3..fb760bc2 100644 --- a/pokescripting/MapWildListEncounterWrapper.h +++ b/pokescripting/MapWildListEncounterWrapper.h @@ -27,6 +27,7 @@ namespace Pokescripting { // Forward declarations +class MapWildListWrapper; class SpeciesWrapper; class POKESCRIPTING_EXPORT MapWildListEncounterWrapper : public ObjectWrapper @@ -34,18 +35,13 @@ class POKESCRIPTING_EXPORT MapWildListEncounterWrapper : public ObjectWrapper Q_OBJECT public: - static MapWildListEncounterWrapper* create(const Pokemod::MapWildListEncounter* encounter, QObject* parent) - { - if (!m_instances.contains(encounter->id())) - m_instances[encounter->id()] = new MapWildListEncounterWrapper(encounter, parent); - return qobject_cast<MapWildListEncounterWrapper*>(m_instances[encounter->id()]); - } - public slots: - SpeciesWrapper* species(); - int level() const; - int weight() const; + static MapWildListEncounterWrapper* create(const Pokemod::MapWildListEncounter* encounter, MapWildListWrapper* parent); + + Q_SCRIPTABLE SpeciesWrapper* species(); + Q_SCRIPTABLE int level() const; + Q_SCRIPTABLE int weight() const; private: - MapWildListEncounterWrapper(const Pokemod::MapWildListEncounter* encounter, QObject* parent); + MapWildListEncounterWrapper(const Pokemod::MapWildListEncounter* encounter, MapWildListWrapper* parent); MapWildListEncounterWrapper& operator=(const MapWildListEncounterWrapper& rhs); const Pokemod::MapWildListEncounter* m_encounter; diff --git a/pokescripting/MapWildListWrapper.cpp b/pokescripting/MapWildListWrapper.cpp index 3689cc1e..3b725b34 100644 --- a/pokescripting/MapWildListWrapper.cpp +++ b/pokescripting/MapWildListWrapper.cpp @@ -19,9 +19,17 @@ #include "MapWildListWrapper.h" // Pokescripting includes +#include "MapWrapper.h" #include "MapWildListEncounterWrapper.h" -Pokescripting::MapWildListWrapper::MapWildListWrapper(const Pokemod::MapWildList* wildList, QObject* parent) : +Pokescripting::MapWildListWrapper* Pokescripting::MapWildListWrapper::create(const Pokemod::MapWildList* wildList, MapWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, wildList->id()))) + m_instances[Signiture(parent, wildList->id())] = new MapWildListWrapper(wildList, parent); + return qobject_cast<MapWildListWrapper*>(m_instances[Signiture(parent, wildList->id())]); +} + +Pokescripting::MapWildListWrapper::MapWildListWrapper(const Pokemod::MapWildList* wildList, MapWrapper* parent) : ObjectWrapper(wildList, parent), m_wildList(wildList) { diff --git a/pokescripting/MapWildListWrapper.h b/pokescripting/MapWildListWrapper.h index 56ecb721..a7bd74f5 100644 --- a/pokescripting/MapWildListWrapper.h +++ b/pokescripting/MapWildListWrapper.h @@ -28,6 +28,7 @@ namespace Pokescripting { // Forward declarations +class MapWrapper; class MapWildListEncounterWrapper; class POKESCRIPTING_EXPORT MapWildListWrapper : public ObjectWrapper @@ -35,21 +36,16 @@ class POKESCRIPTING_EXPORT MapWildListWrapper : public ObjectWrapper Q_OBJECT public: - static MapWildListWrapper* create(const Pokemod::MapWildList* wildList, QObject* parent) - { - if (!m_instances.contains(wildList->id())) - m_instances[wildList->id()] = new MapWildListWrapper(wildList, parent); - return qobject_cast<MapWildListWrapper*>(m_instances[wildList->id()]); - } + static MapWildListWrapper* create(const Pokemod::MapWildList* wildList, MapWrapper* parent); Pokemod::Hat<MapWildListEncounterWrapper*> encounterHat(); - public slots: - QString name() const; - MapWildListEncounterWrapper* encounter(const int index); - int encounterCount() const; + Q_SCRIPTABLE QString name() const; + + Q_SCRIPTABLE MapWildListEncounterWrapper* encounter(const int index); + Q_SCRIPTABLE int encounterCount() const; private: - MapWildListWrapper(const Pokemod::MapWildList* wildList, QObject* parent); + MapWildListWrapper(const Pokemod::MapWildList* wildList, MapWrapper* parent); MapWildListWrapper& operator=(const MapWildListWrapper& rhs); const Pokemod::MapWildList* m_wildList; diff --git a/pokescripting/MapWrapper.cpp b/pokescripting/MapWrapper.cpp index 01b9fc5f..9564a995 100644 --- a/pokescripting/MapWrapper.cpp +++ b/pokescripting/MapWrapper.cpp @@ -23,9 +23,16 @@ #include "MapTrainerWrapper.h" #include "MapWarpWrapper.h" #include "MapWildListWrapper.h" -#include "TileWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MapWrapper::MapWrapper(const Pokemod::Map* map, QObject* parent) : +Pokescripting::MapWrapper* Pokescripting::MapWrapper::create(const Pokemod::Map* map, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, map->id()))) + m_instances[Signiture(parent, map->id())] = new MapWrapper(map, parent); + return qobject_cast<MapWrapper*>(m_instances[Signiture(parent, map->id())]); +} + +Pokescripting::MapWrapper::MapWrapper(const Pokemod::Map* map, PokemodWrapper* parent) : ObjectWrapper(map, parent), m_map(map) { @@ -61,14 +68,14 @@ Pokescripting::MapWarpWrapper* Pokescripting::MapWrapper::flyWarp() return MapWarpWrapper::create(m_map->warpById(m_map->flyWarp()), this); } -int Pokescripting::MapWrapper::type() const +Pokemod::Map::Type Pokescripting::MapWrapper::type() const { return m_map->type(); } Pokescripting::TileWrapper* Pokescripting::MapWrapper::tile(const int row, const int column) { - return TileWrapper::create(pokemod()->tileById(m_map->tile(row, column)), this); + return pokemod()->tile(m_map->tile(row, column)); } QPoint Pokescripting::MapWrapper::mapSize() const diff --git a/pokescripting/MapWrapper.h b/pokescripting/MapWrapper.h index 573dce4d..71b55270 100644 --- a/pokescripting/MapWrapper.h +++ b/pokescripting/MapWrapper.h @@ -38,30 +38,25 @@ class POKESCRIPTING_EXPORT MapWrapper : public ObjectWrapper Q_OBJECT public: - static MapWrapper* create(const Pokemod::Map* map, QObject* parent) - { - if (!m_instances.contains(map->id())) - m_instances[map->id()] = new MapWrapper(map, parent); - return qobject_cast<MapWrapper*>(m_instances[map->id()]); - } + static MapWrapper* create(const Pokemod::Map* map, PokemodWrapper* parent); MapEffectWrapper* effect(const int id); MapTrainerWrapper* trainer(const int id); MapWarpWrapper* warp(const int id); MapWildListWrapper* wildList(const int id); - public slots: - QString name() const; - MapWarpWrapper* flyWarp(); - int type() const; - TileWrapper* tile(const int row, const int column); - QPoint mapSize() const; - MapEffectWrapper* effect(const QString& name); - MapTrainerWrapper* trainer(const QString& name); - MapWarpWrapper* warp(const QString& name); - MapWildListWrapper* wildList(const QString& name); + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE MapWarpWrapper* flyWarp(); + Q_SCRIPTABLE Pokemod::Map::Type type() const; + Q_SCRIPTABLE TileWrapper* tile(const int row, const int column); + Q_SCRIPTABLE QPoint mapSize() const; + + Q_SCRIPTABLE MapEffectWrapper* effect(const QString& name); + Q_SCRIPTABLE MapTrainerWrapper* trainer(const QString& name); + Q_SCRIPTABLE MapWarpWrapper* warp(const QString& name); + Q_SCRIPTABLE MapWildListWrapper* wildList(const QString& name); private: - MapWrapper(const Pokemod::Map* map, QObject* parent); + MapWrapper(const Pokemod::Map* map, PokemodWrapper* parent); MapWrapper& operator=(const MapWrapper& rhs); const Pokemod::Map* m_map; diff --git a/pokescripting/MoveWrapper.cpp b/pokescripting/MoveWrapper.cpp index 10ca5032..1bf5d3f8 100644 --- a/pokescripting/MoveWrapper.cpp +++ b/pokescripting/MoveWrapper.cpp @@ -19,9 +19,16 @@ #include "MoveWrapper.h" // Pokescripting includes -#include "TypeWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::MoveWrapper::MoveWrapper(const Pokemod::Move* move, QObject* parent) : +Pokescripting::MoveWrapper* Pokescripting::MoveWrapper::create(const Pokemod::Move* move, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, move->id()))) + m_instances[Signiture(parent, move->id())] = new MoveWrapper(move, parent); + return qobject_cast<MoveWrapper*>(m_instances[Signiture(parent, move->id())]); +} + +Pokescripting::MoveWrapper::MoveWrapper(const Pokemod::Move* move, PokemodWrapper* parent) : ObjectWrapper(move, parent), m_move(move) { @@ -48,7 +55,7 @@ int Pokescripting::MoveWrapper::power() const Pokescripting::TypeWrapper* Pokescripting::MoveWrapper::type() { - return TypeWrapper::create(pokemod()->typeById(m_move->type()), this); + return pokemod()->type(m_move->type()); } bool Pokescripting::MoveWrapper::special() const diff --git a/pokescripting/MoveWrapper.h b/pokescripting/MoveWrapper.h index cd5d0f43..c17ff555 100644 --- a/pokescripting/MoveWrapper.h +++ b/pokescripting/MoveWrapper.h @@ -34,25 +34,20 @@ class POKESCRIPTING_EXPORT MoveWrapper : public ObjectWrapper Q_OBJECT public: - static MoveWrapper* create(const Pokemod::Move* move, QObject* parent) - { - if (!m_instances.contains(move->id())) - m_instances[move->id()] = new MoveWrapper(move, parent); - return qobject_cast<MoveWrapper*>(m_instances[move->id()]); - } - public slots: - QString name() const; - Pokemod::Fraction accuracy() const; - int power() const; - TypeWrapper* type(); - bool special() const; - int powerPoints() const; - int priority() const; - QString description() const; - Pokemod::Script battleScript() const; - Pokemod::Script worldScript() const; + static MoveWrapper* create(const Pokemod::Move* move, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Fraction accuracy() const; + Q_SCRIPTABLE int power() const; + Q_SCRIPTABLE TypeWrapper* type(); + Q_SCRIPTABLE bool special() const; + Q_SCRIPTABLE int powerPoints() const; + Q_SCRIPTABLE int priority() const; + Q_SCRIPTABLE QString description() const; + Q_SCRIPTABLE Pokemod::Script battleScript() const; + Q_SCRIPTABLE Pokemod::Script worldScript() const; private: - MoveWrapper(const Pokemod::Move* move, QObject* parent); + MoveWrapper(const Pokemod::Move* move, PokemodWrapper* parent); MoveWrapper& operator=(const MoveWrapper& rhs); const Pokemod::Move* m_move; diff --git a/pokescripting/NatureWrapper.cpp b/pokescripting/NatureWrapper.cpp index d4fc7efd..fa9f1c06 100644 --- a/pokescripting/NatureWrapper.cpp +++ b/pokescripting/NatureWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "NatureWrapper.h" -Pokescripting::NatureWrapper::NatureWrapper(const Pokemod::Nature* nature, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::NatureWrapper* Pokescripting::NatureWrapper::create(const Pokemod::Nature* nature, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, nature->id()))) + m_instances[Signiture(parent, nature->id())] = new NatureWrapper(nature, parent); + return qobject_cast<NatureWrapper*>(m_instances[Signiture(parent, nature->id())]); +} + +Pokescripting::NatureWrapper::NatureWrapper(const Pokemod::Nature* nature, PokemodWrapper* parent) : ObjectWrapper(nature, parent), m_nature(nature) { @@ -29,7 +39,7 @@ QString Pokescripting::NatureWrapper::name() const return m_nature->name(); } -Pokemod::Fraction Pokescripting::NatureWrapper::stat(const int stat) const +Pokemod::Fraction Pokescripting::NatureWrapper::stat(const Pokemod::Stat stat) const { return m_nature->stat(stat); } diff --git a/pokescripting/NatureWrapper.h b/pokescripting/NatureWrapper.h index c7feed18..9fa71fe6 100644 --- a/pokescripting/NatureWrapper.h +++ b/pokescripting/NatureWrapper.h @@ -31,18 +31,13 @@ class POKESCRIPTING_EXPORT NatureWrapper : public ObjectWrapper Q_OBJECT public: - static NatureWrapper* create(const Pokemod::Nature* nature, QObject* parent) - { - if (!m_instances.contains(nature->id())) - m_instances[nature->id()] = new NatureWrapper(nature, parent); - return qobject_cast<NatureWrapper*>(m_instances[nature->id()]); - } - public slots: - QString name() const; - Pokemod::Fraction stat(const int stat) const; - int weight() const; + static NatureWrapper* create(const Pokemod::Nature* nature, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Fraction stat(const Pokemod::Stat stat) const; + Q_SCRIPTABLE int weight() const; private: - NatureWrapper(const Pokemod::Nature* nature, QObject* parent); + NatureWrapper(const Pokemod::Nature* nature, PokemodWrapper* parent); NatureWrapper& operator=(const NatureWrapper& rhs); const Pokemod::Nature* m_nature; diff --git a/pokescripting/ObjectWrapper.cpp b/pokescripting/ObjectWrapper.cpp index 1158c46f..d1af3220 100644 --- a/pokescripting/ObjectWrapper.cpp +++ b/pokescripting/ObjectWrapper.cpp @@ -18,9 +18,12 @@ // Header include #include "ObjectWrapper.h" -QMap<int, Pokescripting::ObjectWrapper*> Pokescripting::ObjectWrapper::m_instances; +// Pokescripting includes +#include "PokemodWrapper.h" -Pokescripting::ObjectWrapper::ObjectWrapper(const Pokemod::Object* object, QObject* parent) : +QMap<Pokescripting::ObjectWrapper::Signiture, Pokescripting::ObjectWrapper*> Pokescripting::ObjectWrapper::m_instances; + +Pokescripting::ObjectWrapper::ObjectWrapper(const Pokemod::Object* object, ObjectWrapper* parent) : Config(parent), m_object(object) { @@ -31,7 +34,26 @@ int Pokescripting::ObjectWrapper::id() const return m_object->id(); } -const Pokemod::Pokemod* Pokescripting::ObjectWrapper::pokemod() const +const Pokescripting::ObjectWrapper* Pokescripting::ObjectWrapper::parent() const +{ + return m_parent; +} + +Pokescripting::ObjectWrapper* Pokescripting::ObjectWrapper::parent() +{ + return m_parent; +} + +const Pokescripting::PokemodWrapper* Pokescripting::ObjectWrapper::pokemod() const +{ + if (m_parent) + return m_parent->pokemod(); + return qobject_cast<const PokemodWrapper*>(m_parent); +} + +Pokescripting::PokemodWrapper* Pokescripting::ObjectWrapper::pokemod() { - return qobject_cast<const Pokemod::Pokemod*>(m_object->pokemod()); + if (m_parent) + return m_parent->pokemod(); + return qobject_cast<PokemodWrapper*>(m_parent); } diff --git a/pokescripting/ObjectWrapper.h b/pokescripting/ObjectWrapper.h index 69a15150..648b693b 100644 --- a/pokescripting/ObjectWrapper.h +++ b/pokescripting/ObjectWrapper.h @@ -28,22 +28,34 @@ // Qt includes #include <QtCore/QMap> #include <QtCore/QObject> +#include <QtCore/QPair> namespace Pokescripting { +// Forward declarations +class PokemodWrapper; + class POKESCRIPTING_EXPORT ObjectWrapper : public Config { Q_OBJECT Q_PROPERTY(int id READ id) public: - ObjectWrapper(const Pokemod::Object* object, QObject* parent); + typedef QPair<ObjectWrapper*, int> Signiture; + + ObjectWrapper(const Pokemod::Object* object, ObjectWrapper* parent); int id() const; - const Pokemod::Pokemod* pokemod() const; + + const ObjectWrapper* parent() const; + ObjectWrapper* parent(); + + const PokemodWrapper* pokemod() const; + PokemodWrapper* pokemod(); protected: - static QMap<int, ObjectWrapper*> m_instances; + static QMap<Signiture, ObjectWrapper*> m_instances; private: + ObjectWrapper* m_parent; const Pokemod::Object* m_object; }; } diff --git a/pokescripting/PokemodWrapper.cpp b/pokescripting/PokemodWrapper.cpp index 4e17f4f6..65befc51 100644 --- a/pokescripting/PokemodWrapper.cpp +++ b/pokescripting/PokemodWrapper.cpp @@ -44,8 +44,8 @@ #include "TypeWrapper.h" #include "WeatherWrapper.h" -Pokescripting::PokemodWrapper::PokemodWrapper(const Pokemod::Pokemod* pokemod, QObject* parent) : - ObjectWrapper(pokemod, parent), +Pokescripting::PokemodWrapper::PokemodWrapper(const Pokemod::Pokemod* pokemod) : + ObjectWrapper(pokemod, NULL), m_pokemod(pokemod) { } @@ -188,7 +188,7 @@ QString Pokescripting::PokemodWrapper::description() const Pokescripting::MapWarpWrapper* Pokescripting::PokemodWrapper::startWarp() { - return MapWarpWrapper::create(m_pokemod->mapById(m_pokemod->startMap())->warpById(m_pokemod->startWarp()), this); + return map(m_pokemod->startMap())->warp(m_pokemod->startWarp()); } Pokemod::Fraction Pokescripting::PokemodWrapper::effectiveness(const TypeWrapper* attacker, const TypeWrapper* defender) const diff --git a/pokescripting/PokemodWrapper.h b/pokescripting/PokemodWrapper.h index f30891b4..27dc56e0 100644 --- a/pokescripting/PokemodWrapper.h +++ b/pokescripting/PokemodWrapper.h @@ -58,7 +58,7 @@ class POKESCRIPTING_EXPORT PokemodWrapper : public ObjectWrapper Q_OBJECT public: - PokemodWrapper(const Pokemod::Pokemod* pokemod, QObject* parent); + PokemodWrapper(const Pokemod::Pokemod* pokemod); Pokemod::Hat<NatureWrapper*> natureHat(); @@ -84,36 +84,36 @@ class POKESCRIPTING_EXPORT PokemodWrapper : public ObjectWrapper TrainerWrapper* trainer(const int id); TypeWrapper* type(const int id); WeatherWrapper* weather(const int id); - public slots: - QString title() const; - QString version() const; - QString description() const; - MapWarpWrapper* startWarp(); - Pokemod::Fraction effectiveness(const TypeWrapper* attacker, const TypeWrapper* defender) const; - RulesWrapper* rules(); - AbilityWrapper* ability(const QString& name); - AuthorWrapper* author(const QString& name); - BadgeWrapper* badge(const QString& name); - CoinListWrapper* coinList(const QString& name); - EggGroupWrapper* eggGroup(const QString& name); - GlobalScriptWrapper* globalScript(const QString& name); - ItemWrapper* item(const QString& name); - ItemTypeWrapper* itemType(const QString& name); - MapWrapper* map(const QString& name); - MoveWrapper* move(const QString& name); - NatureWrapper* nature(const QString& name); - SkinWrapper* skin(const QString& name); - SoundWrapper* sound(const QString& name); - SpeciesWrapper* species(const QString& name); - SpriteWrapper* sprite(const QString& name); - StatusWrapper* status(const QString& name); - StoreWrapper* store(const QString& name); - TileWrapper* tile(const QString& name); - TimeWrapper* time(const QString& name); - TrainerWrapper* trainer(const QString& name); - TypeWrapper* type(const QString& name); - WeatherWrapper* weather(const QString& name); + Q_SCRIPTABLE QString title() const; + Q_SCRIPTABLE QString version() const; + Q_SCRIPTABLE QString description() const; + Q_SCRIPTABLE MapWarpWrapper* startWarp(); + Q_SCRIPTABLE Pokemod::Fraction effectiveness(const TypeWrapper* attacker, const TypeWrapper* defender) const; + Q_SCRIPTABLE RulesWrapper* rules(); + + Q_SCRIPTABLE AbilityWrapper* ability(const QString& name); + Q_SCRIPTABLE AuthorWrapper* author(const QString& name); + Q_SCRIPTABLE BadgeWrapper* badge(const QString& name); + Q_SCRIPTABLE CoinListWrapper* coinList(const QString& name); + Q_SCRIPTABLE EggGroupWrapper* eggGroup(const QString& name); + Q_SCRIPTABLE GlobalScriptWrapper* globalScript(const QString& name); + Q_SCRIPTABLE ItemWrapper* item(const QString& name); + Q_SCRIPTABLE ItemTypeWrapper* itemType(const QString& name); + Q_SCRIPTABLE MapWrapper* map(const QString& name); + Q_SCRIPTABLE MoveWrapper* move(const QString& name); + Q_SCRIPTABLE NatureWrapper* nature(const QString& name); + Q_SCRIPTABLE SkinWrapper* skin(const QString& name); + Q_SCRIPTABLE SoundWrapper* sound(const QString& name); + Q_SCRIPTABLE SpeciesWrapper* species(const QString& name); + Q_SCRIPTABLE SpriteWrapper* sprite(const QString& name); + Q_SCRIPTABLE StatusWrapper* status(const QString& name); + Q_SCRIPTABLE StoreWrapper* store(const QString& name); + Q_SCRIPTABLE TileWrapper* tile(const QString& name); + Q_SCRIPTABLE TimeWrapper* time(const QString& name); + Q_SCRIPTABLE TrainerWrapper* trainer(const QString& name); + Q_SCRIPTABLE TypeWrapper* type(const QString& name); + Q_SCRIPTABLE WeatherWrapper* weather(const QString& name); private: PokemodWrapper& operator=(const PokemodWrapper& rhs); diff --git a/pokescripting/RulesWrapper.cpp b/pokescripting/RulesWrapper.cpp index 86a40f88..e70e4af0 100644 --- a/pokescripting/RulesWrapper.cpp +++ b/pokescripting/RulesWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "RulesWrapper.h" -Pokescripting::RulesWrapper::RulesWrapper(const Pokemod::Rules* rules, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::RulesWrapper* Pokescripting::RulesWrapper::create(const Pokemod::Rules* rules, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, rules->id()))) + m_instances[Signiture(parent, rules->id())] = new RulesWrapper(rules, parent); + return qobject_cast<RulesWrapper*>(m_instances[Signiture(parent, rules->id())]); +} + +Pokescripting::RulesWrapper::RulesWrapper(const Pokemod::Rules* rules, PokemodWrapper* parent) : ObjectWrapper(rules, parent), m_rules(rules) { diff --git a/pokescripting/RulesWrapper.h b/pokescripting/RulesWrapper.h index db6d1afc..56af49a3 100644 --- a/pokescripting/RulesWrapper.h +++ b/pokescripting/RulesWrapper.h @@ -31,38 +31,33 @@ class POKESCRIPTING_EXPORT RulesWrapper : public ObjectWrapper Q_OBJECT public: - static RulesWrapper* create(const Pokemod::Rules* rules, QObject* parent) - { - if (!m_instances.contains(rules->id())) - m_instances[rules->id()] = new RulesWrapper(rules, parent); - return qobject_cast<RulesWrapper*>(m_instances[rules->id()]); - } - public slots: - bool genderAllowed() const; - bool breedingAllowed() const; - bool criticalDomains() const; - bool useTurns() const; - int numBoxes() const; - int boxSize() const; - int maxParty() const; - int maxFight() const; - int maxPlayers() const; - int maxHeldItems() const; - int maxAbilities() const; - int maxNatures() const; - int maxMoves() const; - int maxLevel() const; - int maxStages() const; - int maxMoney() const; - bool hardCash() const; - bool allowSwitchStyle() const; - bool specialSplit() const; - bool specialDVSplit() const; - bool effortValuesAllowed() const; - int maxTotalEV() const; - int maxEVPerStat() const; + static RulesWrapper* create(const Pokemod::Rules* rules, PokemodWrapper* parent); + + Q_SCRIPTABLE bool genderAllowed() const; + Q_SCRIPTABLE bool breedingAllowed() const; + Q_SCRIPTABLE bool criticalDomains() const; + Q_SCRIPTABLE bool useTurns() const; + Q_SCRIPTABLE int numBoxes() const; + Q_SCRIPTABLE int boxSize() const; + Q_SCRIPTABLE int maxParty() const; + Q_SCRIPTABLE int maxFight() const; + Q_SCRIPTABLE int maxPlayers() const; + Q_SCRIPTABLE int maxHeldItems() const; + Q_SCRIPTABLE int maxAbilities() const; + Q_SCRIPTABLE int maxNatures() const; + Q_SCRIPTABLE int maxMoves() const; + Q_SCRIPTABLE int maxLevel() const; + Q_SCRIPTABLE int maxStages() const; + Q_SCRIPTABLE int maxMoney() const; + Q_SCRIPTABLE bool hardCash() const; + Q_SCRIPTABLE bool allowSwitchStyle() const; + Q_SCRIPTABLE bool specialSplit() const; + Q_SCRIPTABLE bool specialDVSplit() const; + Q_SCRIPTABLE bool effortValuesAllowed() const; + Q_SCRIPTABLE int maxTotalEV() const; + Q_SCRIPTABLE int maxEVPerStat() const; private: - RulesWrapper(const Pokemod::Rules* rules, QObject* parent); + RulesWrapper(const Pokemod::Rules* rules, PokemodWrapper* parent); RulesWrapper& operator=(const RulesWrapper& rhs); const Pokemod::Rules* m_rules; diff --git a/pokescripting/SkinWrapper.cpp b/pokescripting/SkinWrapper.cpp index 8e9a8454..be19a8f1 100644 --- a/pokescripting/SkinWrapper.cpp +++ b/pokescripting/SkinWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "SkinWrapper.h" -Pokescripting::SkinWrapper::SkinWrapper(const Pokemod::Skin* skin, QObject* parent) : +// Pokemod scripting +#include "PokemodWrapper.h" + +Pokescripting::SkinWrapper* Pokescripting::SkinWrapper::create(const Pokemod::Skin* skin, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, skin->id()))) + m_instances[Signiture(parent, skin->id())] = new SkinWrapper(skin, parent); + return qobject_cast<SkinWrapper*>(m_instances[Signiture(parent, skin->id())]); +} + +Pokescripting::SkinWrapper::SkinWrapper(const Pokemod::Skin* skin, PokemodWrapper* parent) : ObjectWrapper(skin, parent), m_skin(skin) { diff --git a/pokescripting/SkinWrapper.h b/pokescripting/SkinWrapper.h index 8212befa..f1274791 100644 --- a/pokescripting/SkinWrapper.h +++ b/pokescripting/SkinWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT SkinWrapper : public ObjectWrapper Q_OBJECT public: - static SkinWrapper* create(const Pokemod::Skin* skin, QObject* parent) - { - if (!m_instances.contains(skin->id())) - m_instances[skin->id()] = new SkinWrapper(skin, parent); - return qobject_cast<SkinWrapper*>(m_instances[skin->id()]); - } - public slots: - QString name() const; - Pokemod::Script script() const; + static SkinWrapper* create(const Pokemod::Skin* skin, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - SkinWrapper(const Pokemod::Skin* skin, QObject* parent); + SkinWrapper(const Pokemod::Skin* skin, PokemodWrapper* parent); SkinWrapper& operator=(const SkinWrapper& rhs); const Pokemod::Skin* m_skin; diff --git a/pokescripting/SoundWrapper.cpp b/pokescripting/SoundWrapper.cpp index 62a092a5..4075f387 100644 --- a/pokescripting/SoundWrapper.cpp +++ b/pokescripting/SoundWrapper.cpp @@ -18,6 +18,9 @@ // Header include #include "SoundWrapper.h" +// Pokescripting includes +#include "PokemodWrapper.h" + // Qt includes #include <QtCore/QBuffer> @@ -25,7 +28,14 @@ #include <Phonon/MediaObject> #include <Phonon/MediaSource> -Pokescripting::SoundWrapper::SoundWrapper(const Pokemod::Sound* sound, QObject* parent) : +Pokescripting::SoundWrapper* Pokescripting::SoundWrapper::create(const Pokemod::Sound* sound, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, sound->id()))) + m_instances[Signiture(parent, sound->id())] = new SoundWrapper(sound, parent); + return qobject_cast<SoundWrapper*>(m_instances[Signiture(parent, sound->id())]); +} + +Pokescripting::SoundWrapper::SoundWrapper(const Pokemod::Sound* sound, PokemodWrapper* parent) : ObjectWrapper(sound, parent), m_sound(sound) { @@ -36,6 +46,11 @@ QString Pokescripting::SoundWrapper::name() const return m_sound->name(); } +Pokemod::Sound::Type Pokescripting::SoundWrapper::type() const +{ + return m_sound->type(); +} + Phonon::MediaObject* Pokescripting::SoundWrapper::data() { Phonon::MediaObject* media = new Phonon::MediaObject(this); diff --git a/pokescripting/SoundWrapper.h b/pokescripting/SoundWrapper.h index 7ad98e49..3af17f0c 100644 --- a/pokescripting/SoundWrapper.h +++ b/pokescripting/SoundWrapper.h @@ -37,17 +37,13 @@ class POKESCRIPTING_EXPORT SoundWrapper : public ObjectWrapper Q_OBJECT public: - static SoundWrapper* create(const Pokemod::Sound* sound, QObject* parent) - { - if (!m_instances.contains(sound->id())) - m_instances[sound->id()] = new SoundWrapper(sound, parent); - return qobject_cast<SoundWrapper*>(m_instances[sound->id()]); - } - public slots: - QString name() const; - Phonon::MediaObject* data(); + static SoundWrapper* create(const Pokemod::Sound* sound, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Sound::Type type() const; + Q_SCRIPTABLE Phonon::MediaObject* data(); private: - SoundWrapper(const Pokemod::Sound* sound, QObject* parent); + SoundWrapper(const Pokemod::Sound* sound, PokemodWrapper* parent); SoundWrapper& operator=(const SoundWrapper& rhs); const Pokemod::Sound* m_sound; diff --git a/pokescripting/SpeciesAbilityWrapper.cpp b/pokescripting/SpeciesAbilityWrapper.cpp index a3ae9ef4..fb392653 100644 --- a/pokescripting/SpeciesAbilityWrapper.cpp +++ b/pokescripting/SpeciesAbilityWrapper.cpp @@ -19,9 +19,17 @@ #include "SpeciesAbilityWrapper.h" // Pokescripting includes -#include "AbilityWrapper.h" +#include "PokemodWrapper.h" +#include "SpeciesWrapper.h" -Pokescripting::SpeciesAbilityWrapper::SpeciesAbilityWrapper(const Pokemod::SpeciesAbility* ability, QObject* parent) : +Pokescripting::SpeciesAbilityWrapper* Pokescripting::SpeciesAbilityWrapper::create(const Pokemod::SpeciesAbility* ability, SpeciesWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, ability->id()))) + m_instances[Signiture(parent, ability->id())] = new SpeciesAbilityWrapper(ability, parent); + return qobject_cast<SpeciesAbilityWrapper*>(m_instances[Signiture(parent, ability->id())]); +} + +Pokescripting::SpeciesAbilityWrapper::SpeciesAbilityWrapper(const Pokemod::SpeciesAbility* ability, SpeciesWrapper* parent) : ObjectWrapper(ability, parent), m_ability(ability) { @@ -29,7 +37,7 @@ Pokescripting::SpeciesAbilityWrapper::SpeciesAbilityWrapper(const Pokemod::Speci Pokescripting::AbilityWrapper* Pokescripting::SpeciesAbilityWrapper::ability() { - return AbilityWrapper::create(pokemod()->abilityById(m_ability->ability()), this); + return pokemod()->ability(m_ability->ability()); } int Pokescripting::SpeciesAbilityWrapper::weight() const diff --git a/pokescripting/SpeciesAbilityWrapper.h b/pokescripting/SpeciesAbilityWrapper.h index 96cfb390..62b0ee71 100644 --- a/pokescripting/SpeciesAbilityWrapper.h +++ b/pokescripting/SpeciesAbilityWrapper.h @@ -28,23 +28,19 @@ namespace Pokescripting { // Forward declarations class AbilityWrapper; +class SpeciesWrapper; class POKESCRIPTING_EXPORT SpeciesAbilityWrapper : public ObjectWrapper { Q_OBJECT public: - static SpeciesAbilityWrapper* create(const Pokemod::SpeciesAbility* ability, QObject* parent) - { - if (!m_instances.contains(ability->id())) - m_instances[ability->id()] = new SpeciesAbilityWrapper(ability, parent); - return qobject_cast<SpeciesAbilityWrapper*>(m_instances[ability->id()]); - } - public slots: - AbilityWrapper* ability(); - int weight() const; + static SpeciesAbilityWrapper* create(const Pokemod::SpeciesAbility* ability, SpeciesWrapper* parent); + + Q_SCRIPTABLE AbilityWrapper* ability(); + Q_SCRIPTABLE int weight() const; private: - SpeciesAbilityWrapper(const Pokemod::SpeciesAbility* ability, QObject* parent); + SpeciesAbilityWrapper(const Pokemod::SpeciesAbility* ability, SpeciesWrapper* parent); SpeciesAbilityWrapper& operator=(const SpeciesAbilityWrapper& rhs); const Pokemod::SpeciesAbility* m_ability; diff --git a/pokescripting/SpeciesItemWrapper.cpp b/pokescripting/SpeciesItemWrapper.cpp index dcab30a0..23d4afa1 100644 --- a/pokescripting/SpeciesItemWrapper.cpp +++ b/pokescripting/SpeciesItemWrapper.cpp @@ -19,9 +19,17 @@ #include "SpeciesItemWrapper.h" // Pokescripting includes -#include "ItemWrapper.h" +#include "PokemodWrapper.h" +#include "SpeciesWrapper.h" -Pokescripting::SpeciesItemWrapper::SpeciesItemWrapper(const Pokemod::SpeciesItem* item, QObject* parent) : +Pokescripting::SpeciesItemWrapper* Pokescripting::SpeciesItemWrapper::create(const Pokemod::SpeciesItem* item, SpeciesWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, item->id()))) + m_instances[Signiture(parent, item->id())] = new SpeciesItemWrapper(item, parent); + return qobject_cast<SpeciesItemWrapper*>(m_instances[Signiture(parent, item->id())]); +} + +Pokescripting::SpeciesItemWrapper::SpeciesItemWrapper(const Pokemod::SpeciesItem* item, SpeciesWrapper* parent) : ObjectWrapper(item, parent), m_item(item) { @@ -29,7 +37,7 @@ Pokescripting::SpeciesItemWrapper::SpeciesItemWrapper(const Pokemod::SpeciesItem Pokescripting::ItemWrapper* Pokescripting::SpeciesItemWrapper::item() { - return ItemWrapper::create(pokemod()->itemById(m_item->item()), this); + return pokemod()->item(m_item->item()); } int Pokescripting::SpeciesItemWrapper::weight() const diff --git a/pokescripting/SpeciesItemWrapper.h b/pokescripting/SpeciesItemWrapper.h index 51b426e9..713c48bb 100644 --- a/pokescripting/SpeciesItemWrapper.h +++ b/pokescripting/SpeciesItemWrapper.h @@ -28,23 +28,19 @@ namespace Pokescripting { // Forward declarations class ItemWrapper; +class SpeciesWrapper; class POKESCRIPTING_EXPORT SpeciesItemWrapper : public ObjectWrapper { Q_OBJECT public: - static SpeciesItemWrapper* create(const Pokemod::SpeciesItem* item, QObject* parent) - { - if (!m_instances.contains(item->id())) - m_instances[item->id()] = new SpeciesItemWrapper(item, parent); - return qobject_cast<SpeciesItemWrapper*>(m_instances[item->id()]); - } - public slots: - ItemWrapper* item(); - int weight() const; + static SpeciesItemWrapper* create(const Pokemod::SpeciesItem* item, SpeciesWrapper* parent); + + Q_SCRIPTABLE ItemWrapper* item(); + Q_SCRIPTABLE int weight() const; private: - SpeciesItemWrapper(const Pokemod::SpeciesItem* item, QObject* parent); + SpeciesItemWrapper(const Pokemod::SpeciesItem* item, SpeciesWrapper* parent); SpeciesItemWrapper& operator=(const SpeciesItemWrapper& rhs); const Pokemod::SpeciesItem* m_item; diff --git a/pokescripting/SpeciesMoveWrapper.cpp b/pokescripting/SpeciesMoveWrapper.cpp index 671f0e43..d1c33864 100644 --- a/pokescripting/SpeciesMoveWrapper.cpp +++ b/pokescripting/SpeciesMoveWrapper.cpp @@ -19,9 +19,17 @@ #include "SpeciesMoveWrapper.h" // Pokescripting includes -#include "MoveWrapper.h" +#include "PokemodWrapper.h" +#include "SpeciesWrapper.h" -Pokescripting::SpeciesMoveWrapper::SpeciesMoveWrapper(const Pokemod::SpeciesMove* move, QObject* parent) : +Pokescripting::SpeciesMoveWrapper* Pokescripting::SpeciesMoveWrapper::create(const Pokemod::SpeciesMove* move, SpeciesWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, move->id()))) + m_instances[Signiture(parent, move->id())] = new SpeciesMoveWrapper(move, parent); + return qobject_cast<SpeciesMoveWrapper*>(m_instances[Signiture(parent, move->id())]); +} + +Pokescripting::SpeciesMoveWrapper::SpeciesMoveWrapper(const Pokemod::SpeciesMove* move, SpeciesWrapper* parent) : ObjectWrapper(move, parent), m_move(move) { @@ -29,7 +37,7 @@ Pokescripting::SpeciesMoveWrapper::SpeciesMoveWrapper(const Pokemod::SpeciesMove Pokescripting::MoveWrapper* Pokescripting::SpeciesMoveWrapper::move() { - return MoveWrapper::create(pokemod()->moveById(m_move->move()), this); + return pokemod()->move(m_move->move()); } int Pokescripting::SpeciesMoveWrapper::level() const diff --git a/pokescripting/SpeciesMoveWrapper.h b/pokescripting/SpeciesMoveWrapper.h index 713514b4..08094ee0 100644 --- a/pokescripting/SpeciesMoveWrapper.h +++ b/pokescripting/SpeciesMoveWrapper.h @@ -27,23 +27,21 @@ namespace Pokescripting { +// Forward declarations +class SpeciesWrapper; + class POKESCRIPTING_EXPORT SpeciesMoveWrapper : public ObjectWrapper { Q_OBJECT public: - static SpeciesMoveWrapper* create(const Pokemod::SpeciesMove* move, QObject* parent) - { - if (!m_instances.contains(move->id())) - m_instances[move->id()] = new SpeciesMoveWrapper(move, parent); - return qobject_cast<SpeciesMoveWrapper*>(m_instances[move->id()]); - } - public slots: - MoveWrapper* move(); - int level() const; - int wild() const; + static SpeciesMoveWrapper* create(const Pokemod::SpeciesMove* move, SpeciesWrapper* parent); + + Q_SCRIPTABLE MoveWrapper* move(); + Q_SCRIPTABLE int level() const; + Q_SCRIPTABLE int wild() const; private: - SpeciesMoveWrapper(const Pokemod::SpeciesMove* move, QObject* parent); + SpeciesMoveWrapper(const Pokemod::SpeciesMove* move, SpeciesWrapper* parent); SpeciesMoveWrapper& operator=(const SpeciesMoveWrapper& rhs); const Pokemod::SpeciesMove* m_move; diff --git a/pokescripting/SpeciesWrapper.cpp b/pokescripting/SpeciesWrapper.cpp index 9c2737e4..23f76082 100644 --- a/pokescripting/SpeciesWrapper.cpp +++ b/pokescripting/SpeciesWrapper.cpp @@ -19,17 +19,19 @@ #include "SpeciesWrapper.h" // Pokescripting includes -#include "AbilityWrapper.h" -#include "EggGroupWrapper.h" -#include "ItemWrapper.h" -#include "SkinWrapper.h" +#include "PokemodWrapper.h" #include "SpeciesAbilityWrapper.h" #include "SpeciesItemWrapper.h" #include "SpeciesMoveWrapper.h" -#include "SpriteWrapper.h" -#include "TypeWrapper.h" -Pokescripting::SpeciesWrapper::SpeciesWrapper(const Pokemod::Species* species, QObject* parent) : +Pokescripting::SpeciesWrapper* Pokescripting::SpeciesWrapper::create(const Pokemod::Species* species, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, species->id()))) + m_instances[Signiture(parent, species->id())] = new SpeciesWrapper(species, parent); + return qobject_cast<SpeciesWrapper*>(m_instances[Signiture(parent, species->id())]); +} + +Pokescripting::SpeciesWrapper::SpeciesWrapper(const Pokemod::Species* species, PokemodWrapper* parent) : ObjectWrapper(species, parent), m_species(species) { @@ -56,17 +58,17 @@ QString Pokescripting::SpeciesWrapper::name() const return m_species->name(); } -int Pokescripting::SpeciesWrapper::baseStat(const int stat) const +int Pokescripting::SpeciesWrapper::baseStat(const Pokemod::Stat stat) const { return m_species->baseStat(stat); } -int Pokescripting::SpeciesWrapper::effortValue(const int stat) const +int Pokescripting::SpeciesWrapper::effortValue(const Pokemod::Stat stat) const { return m_species->effortValue(stat); } -int Pokescripting::SpeciesWrapper::growth() const +Pokemod::Species::Style Pokescripting::SpeciesWrapper::growth() const { return m_species->growth(); } @@ -124,27 +126,27 @@ QString Pokescripting::SpeciesWrapper::pokedexEntry() const Pokescripting::SpriteWrapper* Pokescripting::SpeciesWrapper::frontMaleSprite() { - return SpriteWrapper::create(pokemod()->spriteById(m_species->frontMaleSprite()), this); + return pokemod()->sprite(m_species->frontMaleSprite()); } Pokescripting::SpriteWrapper* Pokescripting::SpeciesWrapper::backMaleSprite() { - return SpriteWrapper::create(pokemod()->spriteById(m_species->backMaleSprite()), this); + return pokemod()->sprite(m_species->backMaleSprite()); } Pokescripting::SpriteWrapper* Pokescripting::SpeciesWrapper::frontFemaleSprite() { - return SpriteWrapper::create(pokemod()->spriteById(m_species->frontFemaleSprite()), this); + return pokemod()->sprite(m_species->frontFemaleSprite()); } Pokescripting::SpriteWrapper* Pokescripting::SpeciesWrapper::backFemaleSprite() { - return SpriteWrapper::create(pokemod()->spriteById(m_species->backFemaleSprite()), this); + return pokemod()->sprite(m_species->backFemaleSprite()); } Pokescripting::SkinWrapper* Pokescripting::SpeciesWrapper::skin() { - return SkinWrapper::create(pokemod()->skinById(m_species->skin()), this); + return pokemod()->skin(m_species->skin()); } Pokemod::Fraction Pokescripting::SpeciesWrapper::genderFactor() const @@ -169,7 +171,7 @@ QList<Pokescripting::TypeWrapper*> Pokescripting::SpeciesWrapper::types() QList<int> typeIds = m_species->types(); QList<TypeWrapper*> types; foreach (int id, typeIds) - types.append(TypeWrapper::create(pokemod()->typeById(id), this)); + types.append(pokemod()->type(id)); return types; } @@ -178,7 +180,7 @@ QList<Pokescripting::EggGroupWrapper*> Pokescripting::SpeciesWrapper::eggGroups( QList<int> eggGroupIds = m_species->eggGroups(); QList<EggGroupWrapper*> eggGroups; foreach (int id, eggGroupIds) - eggGroups.append(EggGroupWrapper::create(pokemod()->eggGroupById(id), this)); + eggGroups.append(pokemod()->eggGroup(id)); return eggGroups; } diff --git a/pokescripting/SpeciesWrapper.h b/pokescripting/SpeciesWrapper.h index bec1e688..f7837d3b 100644 --- a/pokescripting/SpeciesWrapper.h +++ b/pokescripting/SpeciesWrapper.h @@ -43,51 +43,46 @@ class POKESCRIPTING_EXPORT SpeciesWrapper : public ObjectWrapper Q_OBJECT public: - static SpeciesWrapper* create(const Pokemod::Species* species, QObject* parent) - { - if (!m_instances.contains(species->id())) - m_instances[species->id()] = new SpeciesWrapper(species, parent); - return qobject_cast<SpeciesWrapper*>(m_instances[species->id()]); - } + static SpeciesWrapper* create(const Pokemod::Species* species, PokemodWrapper* parent); Pokemod::Hat<AbilityWrapper*> abilityHat(); Pokemod::Hat<ItemWrapper*> itemHat(); - public slots: - QString name() const; - int baseStat(const int stat) const; - int effortValue(const int stat) const; - int growth() const; - int experienceValue() const; - int catchValue() const; - Pokemod::Fraction runChance() const; - Pokemod::Fraction fleeChance() const; - Pokemod::Fraction itemChance() const; - int pokedexNumber() const; - int weight() const; - int height() const; - QString pokedexEntry() const; - SpriteWrapper* frontMaleSprite(); - SpriteWrapper* backMaleSprite(); - SpriteWrapper* frontFemaleSprite(); - SpriteWrapper* backFemaleSprite(); - SkinWrapper* skin(); - Pokemod::Fraction genderFactor() const; - int eggSpecies() const; - int eggSteps() const; - QList<TypeWrapper*> types(); - QList<EggGroupWrapper*> eggGroups(); - Pokemod::Script evolution() const; - SpeciesAbilityWrapper* ability(const int index); - int abilityCount() const; + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE int baseStat(const Pokemod::Stat stat) const; + Q_SCRIPTABLE int effortValue(const Pokemod::Stat stat) const; + Q_SCRIPTABLE Pokemod::Species::Style growth() const; + Q_SCRIPTABLE int experienceValue() const; + Q_SCRIPTABLE int catchValue() const; + Q_SCRIPTABLE Pokemod::Fraction runChance() const; + Q_SCRIPTABLE Pokemod::Fraction fleeChance() const; + Q_SCRIPTABLE Pokemod::Fraction itemChance() const; + Q_SCRIPTABLE int pokedexNumber() const; + Q_SCRIPTABLE int weight() const; + Q_SCRIPTABLE int height() const; + Q_SCRIPTABLE QString pokedexEntry() const; + Q_SCRIPTABLE SpriteWrapper* frontMaleSprite(); + Q_SCRIPTABLE SpriteWrapper* backMaleSprite(); + Q_SCRIPTABLE SpriteWrapper* frontFemaleSprite(); + Q_SCRIPTABLE SpriteWrapper* backFemaleSprite(); + Q_SCRIPTABLE SkinWrapper* skin(); + Q_SCRIPTABLE Pokemod::Fraction genderFactor() const; + Q_SCRIPTABLE int eggSpecies() const; + Q_SCRIPTABLE int eggSteps() const; + Q_SCRIPTABLE QList<TypeWrapper*> types(); + Q_SCRIPTABLE QList<EggGroupWrapper*> eggGroups(); + Q_SCRIPTABLE Pokemod::Script evolution() const; - SpeciesItemWrapper* item(const int index); - int itemCount() const; + Q_SCRIPTABLE SpeciesAbilityWrapper* ability(const int index); + Q_SCRIPTABLE int abilityCount() const; + + Q_SCRIPTABLE SpeciesItemWrapper* item(const int index); + Q_SCRIPTABLE int itemCount() const; - SpeciesMoveWrapper* move(const int index); - int moveCount() const; + Q_SCRIPTABLE SpeciesMoveWrapper* move(const int index); + Q_SCRIPTABLE int moveCount() const; private: - SpeciesWrapper(const Pokemod::Species* species, QObject* parent); + SpeciesWrapper(const Pokemod::Species* species, PokemodWrapper* parent); SpeciesWrapper& operator=(const SpeciesWrapper& rhs); const Pokemod::Species* m_species; diff --git a/pokescripting/SpriteWrapper.cpp b/pokescripting/SpriteWrapper.cpp index 7c0bc396..47fd585b 100644 --- a/pokescripting/SpriteWrapper.cpp +++ b/pokescripting/SpriteWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "SpriteWrapper.h" -Pokescripting::SpriteWrapper::SpriteWrapper(const Pokemod::Sprite* sprite, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::SpriteWrapper* Pokescripting::SpriteWrapper::create(const Pokemod::Sprite* sprite, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, sprite->id()))) + m_instances[Signiture(parent, sprite->id())] = new SpriteWrapper(sprite, parent); + return qobject_cast<SpriteWrapper*>(m_instances[Signiture(parent, sprite->id())]); +} + +Pokescripting::SpriteWrapper::SpriteWrapper(const Pokemod::Sprite* sprite, PokemodWrapper* parent) : ObjectWrapper(sprite, parent), m_sprite(sprite) { diff --git a/pokescripting/SpriteWrapper.h b/pokescripting/SpriteWrapper.h index 5a579d29..87b101d5 100644 --- a/pokescripting/SpriteWrapper.h +++ b/pokescripting/SpriteWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT SpriteWrapper : public ObjectWrapper Q_OBJECT public: - static SpriteWrapper* create(const Pokemod::Sprite* sprite, QObject* parent) - { - if (!m_instances.contains(sprite->id())) - m_instances[sprite->id()] = new SpriteWrapper(sprite, parent); - return qobject_cast<SpriteWrapper*>(m_instances[sprite->id()]); - } - public slots: - QString name() const; - QPixmap sprite() const; + static SpriteWrapper* create(const Pokemod::Sprite* sprite, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE QPixmap sprite() const; private: - SpriteWrapper(const Pokemod::Sprite* sprite, QObject* parent); + SpriteWrapper(const Pokemod::Sprite* sprite, PokemodWrapper* parent); SpriteWrapper& operator=(const SpriteWrapper& rhs); const Pokemod::Sprite* m_sprite; diff --git a/pokescripting/StatusWrapper.cpp b/pokescripting/StatusWrapper.cpp index 2cfd0d30..0b662efe 100644 --- a/pokescripting/StatusWrapper.cpp +++ b/pokescripting/StatusWrapper.cpp @@ -18,9 +18,19 @@ // Header include #include "StatusWrapper.h" -Pokescripting::StatusWrapper::StatusWrapper(const Pokemod::Status* status, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::StatusWrapper* Pokescripting::StatusWrapper::create(const Pokemod::Status* status, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, status->id()))) + m_instances[Signiture(parent, status->id())] = new StatusWrapper(status, parent); + return qobject_cast<StatusWrapper*>(m_instances[Signiture(parent, status->id())]); +} + +Pokescripting::StatusWrapper::StatusWrapper(const Pokemod::Status* status, PokemodWrapper* parent) : ObjectWrapper(status, parent), - m_status(status) + m_status(status) { } diff --git a/pokescripting/StatusWrapper.h b/pokescripting/StatusWrapper.h index d06ecdae..2b6bafba 100644 --- a/pokescripting/StatusWrapper.h +++ b/pokescripting/StatusWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT StatusWrapper : public ObjectWrapper Q_OBJECT public: - static StatusWrapper* create(const Pokemod::Status* status, QObject* parent) - { - if (!m_instances.contains(status->id())) - m_instances[status->id()] = new StatusWrapper(status, parent); - return qobject_cast<StatusWrapper*>(m_instances[status->id()]); - } - public slots: - QString name() const; - Pokemod::Script script() const; + static StatusWrapper* create(const Pokemod::Status* status, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - StatusWrapper(const Pokemod::Status* status, QObject* parent); + StatusWrapper(const Pokemod::Status* status, PokemodWrapper* parent); StatusWrapper& operator=(const StatusWrapper& rhs); const Pokemod::Status* m_status; diff --git a/pokescripting/StoreWrapper.cpp b/pokescripting/StoreWrapper.cpp index cb368703..111d0bd0 100644 --- a/pokescripting/StoreWrapper.cpp +++ b/pokescripting/StoreWrapper.cpp @@ -19,9 +19,16 @@ #include "StoreWrapper.h" // Pokescripting includes -#include "ItemWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::StoreWrapper::StoreWrapper(const Pokemod::Store* store, QObject* parent) : +Pokescripting::StoreWrapper* Pokescripting::StoreWrapper::create(const Pokemod::Store* store, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, store->id()))) + m_instances[Signiture(parent, store->id())] = new StoreWrapper(store, parent); + return qobject_cast<StoreWrapper*>(m_instances[Signiture(parent, store->id())]); +} + +Pokescripting::StoreWrapper::StoreWrapper(const Pokemod::Store* store, PokemodWrapper* parent) : ObjectWrapper(store, parent), m_store(store) { @@ -37,6 +44,6 @@ QList<Pokescripting::ItemWrapper*> Pokescripting::StoreWrapper::items() QList<int> itemIds = m_store->items(); QList<ItemWrapper*> items; foreach (int id, itemIds) - items.append(ItemWrapper::create(pokemod()->itemById(id), this)); + items.append(pokemod()->item(id)); return items; } diff --git a/pokescripting/StoreWrapper.h b/pokescripting/StoreWrapper.h index c6ee315c..caf458b3 100644 --- a/pokescripting/StoreWrapper.h +++ b/pokescripting/StoreWrapper.h @@ -34,17 +34,12 @@ class POKESCRIPTING_EXPORT StoreWrapper : public ObjectWrapper Q_OBJECT public: - static StoreWrapper* create(const Pokemod::Store* store, QObject* parent) - { - if (!m_instances.contains(store->id())) - m_instances[store->id()] = new StoreWrapper(store, parent); - return qobject_cast<StoreWrapper*>(m_instances[store->id()]); - } - public slots: - QString name() const; - QList<ItemWrapper*> items(); + static StoreWrapper* create(const Pokemod::Store* store, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE QList<ItemWrapper*> items(); private: - StoreWrapper(const Pokemod::Store* store, QObject* parent); + StoreWrapper(const Pokemod::Store* store, PokemodWrapper* parent); StoreWrapper& operator=(const StoreWrapper& rhs); const Pokemod::Store* m_store; diff --git a/pokescripting/TileWrapper.cpp b/pokescripting/TileWrapper.cpp index a64f40c7..8cec95f5 100644 --- a/pokescripting/TileWrapper.cpp +++ b/pokescripting/TileWrapper.cpp @@ -19,9 +19,16 @@ #include "TileWrapper.h" // Pokescripting includes -#include "SpriteWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::TileWrapper::TileWrapper(const Pokemod::Tile* tile, QObject* parent) : +Pokescripting::TileWrapper* Pokescripting::TileWrapper::create(const Pokemod::Tile* tile, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, tile->id()))) + m_instances[Signiture(parent, tile->id())] = new TileWrapper(tile, parent); + return qobject_cast<TileWrapper*>(m_instances[Signiture(parent, tile->id())]); +} + +Pokescripting::TileWrapper::TileWrapper(const Pokemod::Tile* tile, PokemodWrapper* parent) : ObjectWrapper(tile, parent), m_tile(tile) { @@ -38,13 +45,13 @@ Pokescripting::SpriteWrapper* Pokescripting::TileWrapper::sprite() { // TODO: Check sprite dimensions } - return SpriteWrapper::create(pokemod()->spriteById(m_tile->sprite()), this); + return pokemod()->sprite(m_tile->sprite()); } -bool Pokescripting::TileWrapper::from(const int direction) const +bool Pokescripting::TileWrapper::from(const Pokemod::Direction direction) const { - if (value(QString("direction-%1").arg(Pokemod::DirectionStr[direction])).canConvert<bool>()) - return value(QString("direction-%1").arg(Pokemod::DirectionStr[direction])).toBool(); + if (value(QString("direction-%1").arg(direction)).canConvert<bool>()) + return value(QString("direction-%1").arg(direction)).toBool(); return m_tile->from(direction); } diff --git a/pokescripting/TileWrapper.h b/pokescripting/TileWrapper.h index 57722df3..0075b965 100644 --- a/pokescripting/TileWrapper.h +++ b/pokescripting/TileWrapper.h @@ -34,19 +34,14 @@ class POKESCRIPTING_EXPORT TileWrapper : public ObjectWrapper Q_OBJECT public: - 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; - SpriteWrapper* sprite(); - bool from(const int direction) const; - Pokemod::Script script() const; + static TileWrapper* create(const Pokemod::Tile* tile, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE SpriteWrapper* sprite(); + Q_SCRIPTABLE bool from(const Pokemod::Direction direction) const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - TileWrapper(const Pokemod::Tile* tile, QObject* parent); + TileWrapper(const Pokemod::Tile* tile, PokemodWrapper* parent); TileWrapper& operator=(const TileWrapper& rhs); const Pokemod::Tile* m_tile; diff --git a/pokescripting/TimeWrapper.cpp b/pokescripting/TimeWrapper.cpp index 0efd4237..1971582b 100644 --- a/pokescripting/TimeWrapper.cpp +++ b/pokescripting/TimeWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "TimeWrapper.h" -Pokescripting::TimeWrapper::TimeWrapper(const Pokemod::Time* time, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::TimeWrapper* Pokescripting::TimeWrapper::create(const Pokemod::Time* time, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, time->id()))) + m_instances[Signiture(parent, time->id())] = new TimeWrapper(time, parent); + return qobject_cast<TimeWrapper*>(m_instances[Signiture(parent, time->id())]); +} + +Pokescripting::TimeWrapper::TimeWrapper(const Pokemod::Time* time, PokemodWrapper* parent) : ObjectWrapper(time, parent), m_time(time) { diff --git a/pokescripting/TimeWrapper.h b/pokescripting/TimeWrapper.h index 9337f80d..d234d9f5 100644 --- a/pokescripting/TimeWrapper.h +++ b/pokescripting/TimeWrapper.h @@ -31,18 +31,13 @@ class POKESCRIPTING_EXPORT TimeWrapper : public ObjectWrapper Q_OBJECT public: - static TimeWrapper* create(const Pokemod::Time* time, QObject* parent) - { - if (!m_instances.contains(time->id())) - m_instances[time->id()] = new TimeWrapper(time, parent); - return qobject_cast<TimeWrapper*>(m_instances[time->id()]); - } - public slots: - QString name() const; - int hour() const; - int minute() const; + static TimeWrapper* create(const Pokemod::Time* time, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE int hour() const; + Q_SCRIPTABLE int minute() const; private: - TimeWrapper(const Pokemod::Time* time, QObject* parent); + TimeWrapper(const Pokemod::Time* time, PokemodWrapper* parent); TimeWrapper& operator=(const TimeWrapper& rhs); const Pokemod::Time* m_time; diff --git a/pokescripting/TrainerWrapper.cpp b/pokescripting/TrainerWrapper.cpp index 0c30ceb0..7f19bfb1 100644 --- a/pokescripting/TrainerWrapper.cpp +++ b/pokescripting/TrainerWrapper.cpp @@ -19,9 +19,16 @@ #include "TrainerWrapper.h" // Pokescripting includes -#include "SkinWrapper.h" +#include "PokemodWrapper.h" -Pokescripting::TrainerWrapper::TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent) : +Pokescripting::TrainerWrapper* Pokescripting::TrainerWrapper::create(const Pokemod::Trainer* trainer, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, trainer->id()))) + m_instances[Signiture(parent, trainer->id())] = new TrainerWrapper(trainer, parent); + return qobject_cast<TrainerWrapper*>(m_instances[Signiture(parent, trainer->id())]); +} + +Pokescripting::TrainerWrapper::TrainerWrapper(const Pokemod::Trainer* trainer, PokemodWrapper* parent) : ObjectWrapper(trainer, parent), m_trainer(trainer) { @@ -41,7 +48,7 @@ int Pokescripting::TrainerWrapper::TrainerWrapper::moneyFactor() const Pokescripting::SkinWrapper* Pokescripting::TrainerWrapper::TrainerWrapper::skin() { - return SkinWrapper::create(pokemod()->skinById(m_trainer->skin()), this); + return pokemod()->skin(m_trainer->skin()); } int Pokescripting::TrainerWrapper::TrainerWrapper::depth() const @@ -51,27 +58,27 @@ int Pokescripting::TrainerWrapper::TrainerWrapper::depth() const return m_trainer->depth(); } -int Pokescripting::TrainerWrapper::TrainerWrapper::teamIntel() const +Pokemod::Trainer::Intelligence Pokescripting::TrainerWrapper::TrainerWrapper::teamIntel() const { return m_trainer->teamIntel(); } -int Pokescripting::TrainerWrapper::TrainerWrapper::moveIntel() const +Pokemod::Trainer::Intelligence Pokescripting::TrainerWrapper::TrainerWrapper::moveIntel() const { return m_trainer->moveIntel(); } -int Pokescripting::TrainerWrapper::TrainerWrapper::itemIntel() const +Pokemod::Trainer::Intelligence Pokescripting::TrainerWrapper::TrainerWrapper::itemIntel() const { return m_trainer->itemIntel(); } -int Pokescripting::TrainerWrapper::TrainerWrapper::abilityIntel() const +Pokemod::Trainer::Intelligence Pokescripting::TrainerWrapper::TrainerWrapper::abilityIntel() const { return m_trainer->abilityIntel(); } -int Pokescripting::TrainerWrapper::TrainerWrapper::statIntel() const +Pokemod::Trainer::Intelligence Pokescripting::TrainerWrapper::TrainerWrapper::statIntel() const { return m_trainer->statIntel(); } diff --git a/pokescripting/TrainerWrapper.h b/pokescripting/TrainerWrapper.h index e55497cb..da84fdbb 100644 --- a/pokescripting/TrainerWrapper.h +++ b/pokescripting/TrainerWrapper.h @@ -34,24 +34,19 @@ class POKESCRIPTING_EXPORT TrainerWrapper : public ObjectWrapper Q_OBJECT public: - 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; - SkinWrapper* skin(); - int depth() const; - int teamIntel() const; - int moveIntel() const; - int itemIntel() const; - int abilityIntel() const; - int statIntel() const; + static TrainerWrapper* create(const Pokemod::Trainer* trainer, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE int moneyFactor() const; + Q_SCRIPTABLE SkinWrapper* skin(); + Q_SCRIPTABLE int depth() const; + Q_SCRIPTABLE Pokemod::Trainer::Intelligence teamIntel() const; + Q_SCRIPTABLE Pokemod::Trainer::Intelligence moveIntel() const; + Q_SCRIPTABLE Pokemod::Trainer::Intelligence itemIntel() const; + Q_SCRIPTABLE Pokemod::Trainer::Intelligence abilityIntel() const; + Q_SCRIPTABLE Pokemod::Trainer::Intelligence statIntel() const; private: - TrainerWrapper(const Pokemod::Trainer* trainer, QObject* parent); + TrainerWrapper(const Pokemod::Trainer* trainer, PokemodWrapper* parent); TrainerWrapper& operator=(const TrainerWrapper& rhs); const Pokemod::Trainer* m_trainer; diff --git a/pokescripting/TypeWrapper.cpp b/pokescripting/TypeWrapper.cpp index 5cc8323f..d752a9fa 100644 --- a/pokescripting/TypeWrapper.cpp +++ b/pokescripting/TypeWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "TypeWrapper.h" -Pokescripting::TypeWrapper::TypeWrapper(const Pokemod::Type* type, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::TypeWrapper* Pokescripting::TypeWrapper::create(const Pokemod::Type* type, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, type->id()))) + m_instances[Signiture(parent, type->id())] = new TypeWrapper(type, parent); + return qobject_cast<TypeWrapper*>(m_instances[Signiture(parent, type->id())]); +} + +Pokescripting::TypeWrapper::TypeWrapper(const Pokemod::Type* type, PokemodWrapper* parent) : ObjectWrapper(type, parent), m_type(type) { diff --git a/pokescripting/TypeWrapper.h b/pokescripting/TypeWrapper.h index ee56d2f4..2c55de63 100644 --- a/pokescripting/TypeWrapper.h +++ b/pokescripting/TypeWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT TypeWrapper : public ObjectWrapper Q_OBJECT public: - static TypeWrapper* create(const Pokemod::Type* type, QObject* parent) - { - if (!m_instances.contains(type->id())) - m_instances[type->id()] = new TypeWrapper(type, parent); - return qobject_cast<TypeWrapper*>(m_instances[type->id()]); - } - public slots: - QString name() const; - Pokemod::Fraction stab() const; + static TypeWrapper* create(const Pokemod::Type* type, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Fraction stab() const; private: - TypeWrapper(const Pokemod::Type* type, QObject* parent); + TypeWrapper(const Pokemod::Type* type, PokemodWrapper* parent); TypeWrapper& operator=(const TypeWrapper& rhs); const Pokemod::Type* m_type; diff --git a/pokescripting/WeatherWrapper.cpp b/pokescripting/WeatherWrapper.cpp index 08e0e272..ad7bc990 100644 --- a/pokescripting/WeatherWrapper.cpp +++ b/pokescripting/WeatherWrapper.cpp @@ -18,7 +18,17 @@ // Header include #include "WeatherWrapper.h" -Pokescripting::WeatherWrapper::WeatherWrapper(const Pokemod::Weather* weather, QObject* parent) : +// Pokescripting includes +#include "PokemodWrapper.h" + +Pokescripting::WeatherWrapper* Pokescripting::WeatherWrapper::create(const Pokemod::Weather* weather, PokemodWrapper* parent) +{ + if (!m_instances.contains(Signiture(parent, weather->id()))) + m_instances[Signiture(parent, weather->id())] = new WeatherWrapper(weather, parent); + return qobject_cast<WeatherWrapper*>(m_instances[Signiture(parent, weather->id())]); +} + +Pokescripting::WeatherWrapper::WeatherWrapper(const Pokemod::Weather* weather, PokemodWrapper* parent) : ObjectWrapper(weather, parent), m_weather(weather) { diff --git a/pokescripting/WeatherWrapper.h b/pokescripting/WeatherWrapper.h index bcc22e3f..75140120 100644 --- a/pokescripting/WeatherWrapper.h +++ b/pokescripting/WeatherWrapper.h @@ -31,17 +31,12 @@ class POKESCRIPTING_EXPORT WeatherWrapper : public ObjectWrapper Q_OBJECT public: - static WeatherWrapper* create(const Pokemod::Weather* weather, QObject* parent) - { - if (!m_instances.contains(weather->id())) - m_instances[weather->id()] = new WeatherWrapper(weather, parent); - return qobject_cast<WeatherWrapper*>(m_instances[weather->id()]); - } - public slots: - QString name() const; - Pokemod::Script script() const; + static WeatherWrapper* create(const Pokemod::Weather* weather, PokemodWrapper* parent); + + Q_SCRIPTABLE QString name() const; + Q_SCRIPTABLE Pokemod::Script script() const; private: - WeatherWrapper(const Pokemod::Weather* weather, QObject* parent); + WeatherWrapper(const Pokemod::Weather* weather, PokemodWrapper* parent); WeatherWrapper& operator=(const WeatherWrapper& rhs); const Pokemod::Weather* m_weather; |
