diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2008-10-16 23:36:56 +0000 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2008-10-16 23:36:56 +0000 |
commit | 3b83cc89885788de19b09f5e9e55c5d3ad7c60c9 (patch) | |
tree | 5de86af20055a96c81952fb44a0e0193681b9762 | |
parent | 460e7bdf3f6c1de69f41b02a16deb85522ae3c49 (diff) | |
download | sigen-3b83cc89885788de19b09f5e9e55c5d3ad7c60c9.tar.gz sigen-3b83cc89885788de19b09f5e9e55c5d3ad7c60c9.tar.xz sigen-3b83cc89885788de19b09f5e9e55c5d3ad7c60c9.zip |
[FIX] Signature is fixed in Sigscript
[FIX] Hat cleaned up a bit
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@279 6ecfd1a5-f3ed-3746-8530-beee90d26b22
38 files changed, 156 insertions, 114 deletions
@@ -1,4 +1,12 @@ ----------------- +Rev: 279 +Date: 16 October 2008 +User: MathStuf +----------------- +[FIX] Signature is fixed in Sigscript +[FIX] Hat cleaned up a bit + +----------------- Rev: 278 Date: 13 October 2008 User: MathStuf diff --git a/sigmod/Hat.h b/sigmod/Hat.h index 20514412..1b8facdf 100644 --- a/sigmod/Hat.h +++ b/sigmod/Hat.h @@ -111,7 +111,7 @@ template<class T> inline Hat<T>::Hat() : template<class T> inline T Hat<T>::pick() const { int choice = qrand() % m_count; - foreach (T key, m_objects.keys()) + foreach (const T& key, m_objects.keys()) { choice -= m_objects[key]; if (choice < 0) @@ -140,21 +140,21 @@ template<class T> inline T Hat<T>::takeAndClear() template<class T> inline void Hat<T>::setCount(const T& key, const int weight) { if (m_objects.contains(key)) - m_count -= m_objects[key]; - if (weight) { - m_objects[key] = weight; - m_count += weight; + m_count -= m_objects[key]; + if (!weight) + m_objects.remove(key); } - else - m_objects.remove(key); + add(key, weight); } template<class T> inline void Hat<T>::add(const T& key, const int weight) { - Q_ASSERT(0 < weight); - m_objects[key] += weight; - m_count += weight; + if (weight) + { + m_objects[key] += weight; + m_count += weight; + } } template<class T> inline int Hat<T>::distinctCount() const diff --git a/sigmod/Object.h b/sigmod/Object.h index 6e0390a7..63409e58 100644 --- a/sigmod/Object.h +++ b/sigmod/Object.h @@ -87,7 +87,7 @@ class SIGMOD_EXPORT Object : public QObject QString className() const; /** - * Convenience function to create a QDomDocument from the QDomElement that is returned from \link Object::save save \endlink . + * Convenience function to create a QDomDocument from the QDomElement that is returned from \link Object::save save \endlink. * * \param object The object to create an XML structure from. * \return The XML representation of \p object. diff --git a/sigscript/AbilityWrapper.cpp b/sigscript/AbilityWrapper.cpp index 42a40541..19fb9734 100644 --- a/sigscript/AbilityWrapper.cpp +++ b/sigscript/AbilityWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::AbilityWrapper* Sigscript::AbilityWrapper::create(const Sigmod::Ability* ability, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, ability->id()))) - m_instances[Signature(parent, ability->id())] = new AbilityWrapper(ability, parent); - return qobject_cast<AbilityWrapper*>(m_instances[Signature(parent, ability->id())]); + Signature sig = Signature(parent, Subsignature(ability->className(), ability->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new AbilityWrapper(ability, parent); + return qobject_cast<AbilityWrapper*>(m_instances[sig]); } Sigscript::AbilityWrapper::AbilityWrapper(const Sigmod::Ability* ability, SigmodWrapper* parent) : diff --git a/sigscript/AuthorWrapper.cpp b/sigscript/AuthorWrapper.cpp index 1715ca90..22f08b5c 100644 --- a/sigscript/AuthorWrapper.cpp +++ b/sigscript/AuthorWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::AuthorWrapper* Sigscript::AuthorWrapper::create(const Sigmod::Author* author, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, author->id()))) - m_instances[Signature(parent, author->id())] = new AuthorWrapper(author, parent); - return qobject_cast<AuthorWrapper*>(m_instances[Signature(parent, author->id())]); + Signature sig = Signature(parent, Subsignature(author->className(), author->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new AuthorWrapper(author, parent); + return qobject_cast<AuthorWrapper*>(m_instances[sig]); } Sigscript::AuthorWrapper::AuthorWrapper(const Sigmod::Author* author, SigmodWrapper* parent) : diff --git a/sigscript/BadgeWrapper.cpp b/sigscript/BadgeWrapper.cpp index abb16d6c..2c0b4116 100644 --- a/sigscript/BadgeWrapper.cpp +++ b/sigscript/BadgeWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::BadgeWrapper* Sigscript::BadgeWrapper::create(const Sigmod::Badge* badge, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, badge->id()))) - m_instances[Signature(parent, badge->id())] = new BadgeWrapper(badge, parent); - return qobject_cast<BadgeWrapper*>(m_instances[Signature(parent, badge->id())]); + Signature sig = Signature(parent, Subsignature(badge->className(), badge->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new BadgeWrapper(badge, parent); + return qobject_cast<BadgeWrapper*>(m_instances[sig]); } Sigscript::BadgeWrapper::BadgeWrapper(const Sigmod::Badge* badge, SigmodWrapper* parent) : diff --git a/sigscript/CoinListObjectWrapper.cpp b/sigscript/CoinListObjectWrapper.cpp index 6520b8d1..c04e90f1 100644 --- a/sigscript/CoinListObjectWrapper.cpp +++ b/sigscript/CoinListObjectWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::CoinListObjectWrapper* Sigscript::CoinListObjectWrapper::create(const Sigmod::CoinListObject* object, CoinListWrapper* parent) { - if (!m_instances.contains(Signature(parent, object->id()))) - m_instances[Signature(parent, object->id())] = new CoinListObjectWrapper(object, parent); - return qobject_cast<CoinListObjectWrapper*>(m_instances[Signature(parent, object->id())]); + Signature sig = Signature(parent, Subsignature(object->className(), object->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new CoinListObjectWrapper(object, parent); + return qobject_cast<CoinListObjectWrapper*>(m_instances[sig]); } Sigscript::CoinListObjectWrapper::CoinListObjectWrapper(const Sigmod::CoinListObject* object, CoinListWrapper* parent) : diff --git a/sigscript/CoinListWrapper.cpp b/sigscript/CoinListWrapper.cpp index 623476d4..67221bdd 100644 --- a/sigscript/CoinListWrapper.cpp +++ b/sigscript/CoinListWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::CoinListWrapper* Sigscript::CoinListWrapper::create(const Sigmod::CoinList* coinList, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, coinList->id()))) - m_instances[Signature(parent, coinList->id())] = new CoinListWrapper(coinList, parent); - return qobject_cast<CoinListWrapper*>(m_instances[Signature(parent, coinList->id())]); + Signature sig = Signature(parent, Subsignature(coinList->className(), coinList->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new CoinListWrapper(coinList, parent); + return qobject_cast<CoinListWrapper*>(m_instances[sig]); } Sigscript::CoinListWrapper::CoinListWrapper(const Sigmod::CoinList* coinList, SigmodWrapper* parent) : diff --git a/sigscript/EggGroupWrapper.cpp b/sigscript/EggGroupWrapper.cpp index fee20d84..0c18289b 100644 --- a/sigscript/EggGroupWrapper.cpp +++ b/sigscript/EggGroupWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::EggGroupWrapper* Sigscript::EggGroupWrapper::create(const Sigmod::EggGroup* eggGroup, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, eggGroup->id()))) - m_instances[Signature(parent, eggGroup->id())] = new EggGroupWrapper(eggGroup, parent); - return qobject_cast<EggGroupWrapper*>(m_instances[Signature(parent, eggGroup->id())]); + Signature sig = Signature(parent, Subsignature(eggGroup->className(), eggGroup->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new EggGroupWrapper(eggGroup, parent); + return qobject_cast<EggGroupWrapper*>(m_instances[sig]); } Sigscript::EggGroupWrapper::EggGroupWrapper(const Sigmod::EggGroup* eggGroup, SigmodWrapper* parent) : diff --git a/sigscript/GlobalScriptWrapper.cpp b/sigscript/GlobalScriptWrapper.cpp index abef6aad..e7d773af 100644 --- a/sigscript/GlobalScriptWrapper.cpp +++ b/sigscript/GlobalScriptWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::GlobalScriptWrapper* Sigscript::GlobalScriptWrapper::create(const Sigmod::GlobalScript* globalScript, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, globalScript->id()))) - m_instances[Signature(parent, globalScript->id())] = new GlobalScriptWrapper(globalScript, parent); - return qobject_cast<GlobalScriptWrapper*>(m_instances[Signature(parent, globalScript->id())]); + Signature sig = Signature(parent, Subsignature(globalScript->className(), globalScript->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new GlobalScriptWrapper(globalScript, parent); + return qobject_cast<GlobalScriptWrapper*>(m_instances[sig]); } Sigscript::GlobalScriptWrapper::GlobalScriptWrapper(const Sigmod::GlobalScript* globalScript, SigmodWrapper* parent) : diff --git a/sigscript/ItemTypeWrapper.cpp b/sigscript/ItemTypeWrapper.cpp index ae3fb45a..8201a33b 100644 --- a/sigscript/ItemTypeWrapper.cpp +++ b/sigscript/ItemTypeWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::ItemTypeWrapper* Sigscript::ItemTypeWrapper::create(const Sigmod::ItemType* itemType, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, itemType->id()))) - m_instances[Signature(parent, itemType->id())] = new ItemTypeWrapper(itemType, parent); - return qobject_cast<ItemTypeWrapper*>(m_instances[Signature(parent, itemType->id())]); + Signature sig = Signature(parent, Subsignature(itemType->className(), itemType->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new ItemTypeWrapper(itemType, parent); + return qobject_cast<ItemTypeWrapper*>(m_instances[sig]); } Sigscript::ItemTypeWrapper::ItemTypeWrapper(const Sigmod::ItemType* itemType, SigmodWrapper* parent) : diff --git a/sigscript/ItemWrapper.cpp b/sigscript/ItemWrapper.cpp index 642b6303..1768ccd8 100644 --- a/sigscript/ItemWrapper.cpp +++ b/sigscript/ItemWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::ItemWrapper* Sigscript::ItemWrapper::create(const Sigmod::Item* item, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, item->id()))) - m_instances[Signature(parent, item->id())] = new ItemWrapper(item, parent); - return qobject_cast<ItemWrapper*>(m_instances[Signature(parent, item->id())]); + Signature sig = Signature(parent, Subsignature(item->className(), item->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new ItemWrapper(item, parent); + return qobject_cast<ItemWrapper*>(m_instances[sig]); } Sigscript::ItemWrapper::ItemWrapper(const Sigmod::Item* item, SigmodWrapper* parent) : diff --git a/sigscript/MapEffectWrapper.cpp b/sigscript/MapEffectWrapper.cpp index c06d7c10..a8379407 100644 --- a/sigscript/MapEffectWrapper.cpp +++ b/sigscript/MapEffectWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::MapEffectWrapper* Sigscript::MapEffectWrapper::create(const Sigmod::MapEffect* effect, MapWrapper* parent) { - if (!m_instances.contains(Signature(parent, effect->id()))) - m_instances[Signature(parent, effect->id())] = new MapEffectWrapper(effect, parent); - return qobject_cast<MapEffectWrapper*>(m_instances[Signature(parent, effect->id())]); + Signature sig = Signature(parent, Subsignature(effect->className(), effect->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapEffectWrapper(effect, parent); + return qobject_cast<MapEffectWrapper*>(m_instances[sig]); } Sigscript::MapEffectWrapper::MapEffectWrapper(const Sigmod::MapEffect* effect, MapWrapper* parent) : diff --git a/sigscript/MapTrainerTeamMemberWrapper.cpp b/sigscript/MapTrainerTeamMemberWrapper.cpp index 74e500c4..3159ad5e 100644 --- a/sigscript/MapTrainerTeamMemberWrapper.cpp +++ b/sigscript/MapTrainerTeamMemberWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::MapTrainerTeamMemberWrapper* Sigscript::MapTrainerTeamMemberWrapper::create(const Sigmod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent) { - if (!m_instances.contains(Signature(parent, teamMember->id()))) - m_instances[Signature(parent, teamMember->id())] = new MapTrainerTeamMemberWrapper(teamMember, parent); - return qobject_cast<MapTrainerTeamMemberWrapper*>(m_instances[Signature(parent, teamMember->id())]); + Signature sig = Signature(parent, Subsignature(teamMember->className(), teamMember->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapTrainerTeamMemberWrapper(teamMember, parent); + return qobject_cast<MapTrainerTeamMemberWrapper*>(m_instances[sig]); } Sigscript::MapTrainerTeamMemberWrapper::MapTrainerTeamMemberWrapper(const Sigmod::MapTrainerTeamMember* teamMember, MapTrainerWrapper* parent) : diff --git a/sigscript/MapTrainerWrapper.cpp b/sigscript/MapTrainerWrapper.cpp index 39ce9a46..b7df74f2 100644 --- a/sigscript/MapTrainerWrapper.cpp +++ b/sigscript/MapTrainerWrapper.cpp @@ -25,9 +25,10 @@ Sigscript::MapTrainerWrapper* Sigscript::MapTrainerWrapper::create(const Sigmod::MapTrainer* trainer, MapWrapper* parent) { - if (!m_instances.contains(Signature(parent, trainer->id()))) - m_instances[Signature(parent, trainer->id())] = new MapTrainerWrapper(trainer, parent); - return qobject_cast<MapTrainerWrapper*>(m_instances[Signature(parent, trainer->id())]); + Signature sig = Signature(parent, Subsignature(trainer->className(), trainer->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapTrainerWrapper(trainer, parent); + return qobject_cast<MapTrainerWrapper*>(m_instances[sig]); } Sigscript::MapTrainerWrapper::MapTrainerWrapper(const Sigmod::MapTrainer* trainer, MapWrapper* parent) : diff --git a/sigscript/MapWarpWrapper.cpp b/sigscript/MapWarpWrapper.cpp index d09646cf..63e3a53e 100644 --- a/sigscript/MapWarpWrapper.cpp +++ b/sigscript/MapWarpWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::MapWarpWrapper* Sigscript::MapWarpWrapper::create(const Sigmod::MapWarp* warp, MapWrapper* parent) { - if (!m_instances.contains(Signature(parent, warp->id()))) - m_instances[Signature(parent, warp->id())] = new MapWarpWrapper(warp, parent); - return qobject_cast<MapWarpWrapper*>(m_instances[Signature(parent, warp->id())]); + Signature sig = Signature(parent, Subsignature(warp->className(), warp->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapWarpWrapper(warp, parent); + return qobject_cast<MapWarpWrapper*>(m_instances[sig]); } Sigscript::MapWarpWrapper::MapWarpWrapper(const Sigmod::MapWarp* warp, MapWrapper* parent) : diff --git a/sigscript/MapWildListEncounterWrapper.cpp b/sigscript/MapWildListEncounterWrapper.cpp index 3fd49c9c..1d2b7904 100644 --- a/sigscript/MapWildListEncounterWrapper.cpp +++ b/sigscript/MapWildListEncounterWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::MapWildListEncounterWrapper* Sigscript::MapWildListEncounterWrapper::create(const Sigmod::MapWildListEncounter* encounter, MapWildListWrapper* parent) { - if (!m_instances.contains(Signature(parent, encounter->id()))) - m_instances[Signature(parent, encounter->id())] = new MapWildListEncounterWrapper(encounter, parent); - return qobject_cast<MapWildListEncounterWrapper*>(m_instances[Signature(parent, encounter->id())]); + Signature sig = Signature(parent, Subsignature(encounter->className(), encounter->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapWildListEncounterWrapper(encounter, parent); + return qobject_cast<MapWildListEncounterWrapper*>(m_instances[sig]); } Sigscript::MapWildListEncounterWrapper::MapWildListEncounterWrapper(const Sigmod::MapWildListEncounter* encounter, MapWildListWrapper* parent) : diff --git a/sigscript/MapWildListWrapper.cpp b/sigscript/MapWildListWrapper.cpp index 2271e60f..29484d88 100644 --- a/sigscript/MapWildListWrapper.cpp +++ b/sigscript/MapWildListWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::MapWildListWrapper* Sigscript::MapWildListWrapper::create(const Sigmod::MapWildList* wildList, MapWrapper* parent) { - if (!m_instances.contains(Signature(parent, wildList->id()))) - m_instances[Signature(parent, wildList->id())] = new MapWildListWrapper(wildList, parent); - return qobject_cast<MapWildListWrapper*>(m_instances[Signature(parent, wildList->id())]); + Signature sig = Signature(parent, Subsignature(wildList->className(), wildList->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapWildListWrapper(wildList, parent); + return qobject_cast<MapWildListWrapper*>(m_instances[sig]); } Sigscript::MapWildListWrapper::MapWildListWrapper(const Sigmod::MapWildList* wildList, MapWrapper* parent) : diff --git a/sigscript/MapWrapper.cpp b/sigscript/MapWrapper.cpp index d3f32823..09167f68 100644 --- a/sigscript/MapWrapper.cpp +++ b/sigscript/MapWrapper.cpp @@ -27,9 +27,10 @@ Sigscript::MapWrapper* Sigscript::MapWrapper::create(const Sigmod::Map* map, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, map->id()))) - m_instances[Signature(parent, map->id())] = new MapWrapper(map, parent); - return qobject_cast<MapWrapper*>(m_instances[Signature(parent, map->id())]); + Signature sig = Signature(parent, Subsignature(map->className(), map->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MapWrapper(map, parent); + return qobject_cast<MapWrapper*>(m_instances[sig]); } Sigscript::MapWrapper::MapWrapper(const Sigmod::Map* map, SigmodWrapper* parent) : diff --git a/sigscript/MoveWrapper.cpp b/sigscript/MoveWrapper.cpp index 60dc2729..1848fc33 100644 --- a/sigscript/MoveWrapper.cpp +++ b/sigscript/MoveWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::MoveWrapper* Sigscript::MoveWrapper::create(const Sigmod::Move* move, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, move->id()))) - m_instances[Signature(parent, move->id())] = new MoveWrapper(move, parent); - return qobject_cast<MoveWrapper*>(m_instances[Signature(parent, move->id())]); + Signature sig = Signature(parent, Subsignature(move->className(), move->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new MoveWrapper(move, parent); + return qobject_cast<MoveWrapper*>(m_instances[sig]); } Sigscript::MoveWrapper::MoveWrapper(const Sigmod::Move* move, SigmodWrapper* parent) : diff --git a/sigscript/NatureWrapper.cpp b/sigscript/NatureWrapper.cpp index 16e0f772..5c6fe3b7 100644 --- a/sigscript/NatureWrapper.cpp +++ b/sigscript/NatureWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::NatureWrapper* Sigscript::NatureWrapper::create(const Sigmod::Nature* nature, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, nature->id()))) - m_instances[Signature(parent, nature->id())] = new NatureWrapper(nature, parent); - return qobject_cast<NatureWrapper*>(m_instances[Signature(parent, nature->id())]); + Signature sig = Signature(parent, Subsignature(nature->className(), nature->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new NatureWrapper(nature, parent); + return qobject_cast<NatureWrapper*>(m_instances[sig]); } Sigscript::NatureWrapper::NatureWrapper(const Sigmod::Nature* nature, SigmodWrapper* parent) : diff --git a/sigscript/ObjectWrapper.h b/sigscript/ObjectWrapper.h index 1f1bc5c8..4e9f4050 100644 --- a/sigscript/ObjectWrapper.h +++ b/sigscript/ObjectWrapper.h @@ -41,7 +41,8 @@ class SIGSCRIPT_EXPORT ObjectWrapper : public Config Q_PROPERTY(int id READ id) public: - typedef QPair<ObjectWrapper*, int> Signature; + typedef QPair<QString, int> Subsignature; + typedef QPair<ObjectWrapper*, Subsignature> Signature; ObjectWrapper(const Sigmod::Object* object, ObjectWrapper* parent); diff --git a/sigscript/RulesWrapper.cpp b/sigscript/RulesWrapper.cpp index 662383f3..6355e600 100644 --- a/sigscript/RulesWrapper.cpp +++ b/sigscript/RulesWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::RulesWrapper* Sigscript::RulesWrapper::create(const Sigmod::Rules* rules, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, rules->id()))) - m_instances[Signature(parent, rules->id())] = new RulesWrapper(rules, parent); - return qobject_cast<RulesWrapper*>(m_instances[Signature(parent, rules->id())]); + Signature sig = Signature(parent, Subsignature(rules->className(), rules->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new RulesWrapper(rules, parent); + return qobject_cast<RulesWrapper*>(m_instances[sig]); } Sigscript::RulesWrapper::RulesWrapper(const Sigmod::Rules* rules, SigmodWrapper* parent) : diff --git a/sigscript/SkinWrapper.cpp b/sigscript/SkinWrapper.cpp index 60c35dc3..f1761812 100644 --- a/sigscript/SkinWrapper.cpp +++ b/sigscript/SkinWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::SkinWrapper* Sigscript::SkinWrapper::create(const Sigmod::Skin* skin, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, skin->id()))) - m_instances[Signature(parent, skin->id())] = new SkinWrapper(skin, parent); - return qobject_cast<SkinWrapper*>(m_instances[Signature(parent, skin->id())]); + Signature sig = Signature(parent, Subsignature(skin->className(), skin->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SkinWrapper(skin, parent); + return qobject_cast<SkinWrapper*>(m_instances[sig]); } Sigscript::SkinWrapper::SkinWrapper(const Sigmod::Skin* skin, SigmodWrapper* parent) : diff --git a/sigscript/SoundWrapper.cpp b/sigscript/SoundWrapper.cpp index 1ba51567..12c39393 100644 --- a/sigscript/SoundWrapper.cpp +++ b/sigscript/SoundWrapper.cpp @@ -30,9 +30,10 @@ Sigscript::SoundWrapper* Sigscript::SoundWrapper::create(const Sigmod::Sound* sound, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, sound->id()))) - m_instances[Signature(parent, sound->id())] = new SoundWrapper(sound, parent); - return qobject_cast<SoundWrapper*>(m_instances[Signature(parent, sound->id())]); + Signature sig = Signature(parent, Subsignature(sound->className(), sound->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SoundWrapper(sound, parent); + return qobject_cast<SoundWrapper*>(m_instances[sig]); } Sigscript::SoundWrapper::SoundWrapper(const Sigmod::Sound* sound, SigmodWrapper* parent) : diff --git a/sigscript/SpeciesAbilityWrapper.cpp b/sigscript/SpeciesAbilityWrapper.cpp index 71cbe8a3..62306f6c 100644 --- a/sigscript/SpeciesAbilityWrapper.cpp +++ b/sigscript/SpeciesAbilityWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::SpeciesAbilityWrapper* Sigscript::SpeciesAbilityWrapper::create(const Sigmod::SpeciesAbility* ability, SpeciesWrapper* parent) { - if (!m_instances.contains(Signature(parent, ability->id()))) - m_instances[Signature(parent, ability->id())] = new SpeciesAbilityWrapper(ability, parent); - return qobject_cast<SpeciesAbilityWrapper*>(m_instances[Signature(parent, ability->id())]); + Signature sig = Signature(parent, Subsignature(ability->className(), ability->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SpeciesAbilityWrapper(ability, parent); + return qobject_cast<SpeciesAbilityWrapper*>(m_instances[sig]); } Sigscript::SpeciesAbilityWrapper::SpeciesAbilityWrapper(const Sigmod::SpeciesAbility* ability, SpeciesWrapper* parent) : diff --git a/sigscript/SpeciesItemWrapper.cpp b/sigscript/SpeciesItemWrapper.cpp index 8a36ee8b..a41f8dc5 100644 --- a/sigscript/SpeciesItemWrapper.cpp +++ b/sigscript/SpeciesItemWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::SpeciesItemWrapper* Sigscript::SpeciesItemWrapper::create(const Sigmod::SpeciesItem* item, SpeciesWrapper* parent) { - if (!m_instances.contains(Signature(parent, item->id()))) - m_instances[Signature(parent, item->id())] = new SpeciesItemWrapper(item, parent); - return qobject_cast<SpeciesItemWrapper*>(m_instances[Signature(parent, item->id())]); + Signature sig = Signature(parent, Subsignature(item->className(), item->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SpeciesItemWrapper(item, parent); + return qobject_cast<SpeciesItemWrapper*>(m_instances[sig]); } Sigscript::SpeciesItemWrapper::SpeciesItemWrapper(const Sigmod::SpeciesItem* item, SpeciesWrapper* parent) : diff --git a/sigscript/SpeciesMoveWrapper.cpp b/sigscript/SpeciesMoveWrapper.cpp index 6e3c0bca..3fc24a1b 100644 --- a/sigscript/SpeciesMoveWrapper.cpp +++ b/sigscript/SpeciesMoveWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::SpeciesMoveWrapper* Sigscript::SpeciesMoveWrapper::create(const Sigmod::SpeciesMove* move, SpeciesWrapper* parent) { - if (!m_instances.contains(Signature(parent, move->id()))) - m_instances[Signature(parent, move->id())] = new SpeciesMoveWrapper(move, parent); - return qobject_cast<SpeciesMoveWrapper*>(m_instances[Signature(parent, move->id())]); + Signature sig = Signature(parent, Subsignature(move->className(), move->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SpeciesMoveWrapper(move, parent); + return qobject_cast<SpeciesMoveWrapper*>(m_instances[sig]); } Sigscript::SpeciesMoveWrapper::SpeciesMoveWrapper(const Sigmod::SpeciesMove* move, SpeciesWrapper* parent) : diff --git a/sigscript/SpeciesWrapper.cpp b/sigscript/SpeciesWrapper.cpp index d79f2e5f..200f1b52 100644 --- a/sigscript/SpeciesWrapper.cpp +++ b/sigscript/SpeciesWrapper.cpp @@ -26,9 +26,10 @@ Sigscript::SpeciesWrapper* Sigscript::SpeciesWrapper::create(const Sigmod::Species* species, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, species->id()))) - m_instances[Signature(parent, species->id())] = new SpeciesWrapper(species, parent); - return qobject_cast<SpeciesWrapper*>(m_instances[Signature(parent, species->id())]); + Signature sig = Signature(parent, Subsignature(species->className(), species->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SpeciesWrapper(species, parent); + return qobject_cast<SpeciesWrapper*>(m_instances[sig]); } Sigscript::SpeciesWrapper::SpeciesWrapper(const Sigmod::Species* species, SigmodWrapper* parent) : diff --git a/sigscript/SpriteWrapper.cpp b/sigscript/SpriteWrapper.cpp index 6a1c9614..7cb2074b 100644 --- a/sigscript/SpriteWrapper.cpp +++ b/sigscript/SpriteWrapper.cpp @@ -23,15 +23,17 @@ Sigscript::SpriteWrapper* Sigscript::SpriteWrapper::create(const Sigmod::Sprite* sprite, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, sprite->id()))) - m_instances[Signature(parent, sprite->id())] = new SpriteWrapper(sprite, parent); - return qobject_cast<SpriteWrapper*>(m_instances[Signature(parent, sprite->id())]); + Signature sig = Signature(parent, Subsignature(sprite->className(), sprite->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new SpriteWrapper(sprite, parent); + return qobject_cast<SpriteWrapper*>(m_instances[sig]); } Sigscript::SpriteWrapper::SpriteWrapper(const Sigmod::Sprite* sprite, SigmodWrapper* parent) : ObjectWrapper(sprite, parent), m_sprite(sprite) { + m_pixmap.loadFromData(m_sprite->sprite()); } QString Sigscript::SpriteWrapper::name() const @@ -41,7 +43,5 @@ QString Sigscript::SpriteWrapper::name() const QPixmap Sigscript::SpriteWrapper::sprite() const { - QPixmap pixmap; - pixmap.loadFromData(m_sprite->sprite()); - return pixmap; + return m_pixmap; } diff --git a/sigscript/SpriteWrapper.h b/sigscript/SpriteWrapper.h index 4451852e..e09bbef9 100644 --- a/sigscript/SpriteWrapper.h +++ b/sigscript/SpriteWrapper.h @@ -42,6 +42,7 @@ class SIGSCRIPT_EXPORT SpriteWrapper : public ObjectWrapper SpriteWrapper(const Sigmod::Sprite* sprite, SigmodWrapper* parent); SpriteWrapper& operator=(const SpriteWrapper& rhs); + QPixmap m_pixmap; const Sigmod::Sprite* m_sprite; }; } diff --git a/sigscript/StatusWrapper.cpp b/sigscript/StatusWrapper.cpp index 5988d0bf..274c3e2b 100644 --- a/sigscript/StatusWrapper.cpp +++ b/sigscript/StatusWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::StatusWrapper* Sigscript::StatusWrapper::create(const Sigmod::Status* status, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, status->id()))) - m_instances[Signature(parent, status->id())] = new StatusWrapper(status, parent); - return qobject_cast<StatusWrapper*>(m_instances[Signature(parent, status->id())]); + Signature sig = Signature(parent, Subsignature(status->className(), status->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new StatusWrapper(status, parent); + return qobject_cast<StatusWrapper*>(m_instances[sig]); } Sigscript::StatusWrapper::StatusWrapper(const Sigmod::Status* status, SigmodWrapper* parent) : diff --git a/sigscript/StoreWrapper.cpp b/sigscript/StoreWrapper.cpp index cf0af548..e3344419 100644 --- a/sigscript/StoreWrapper.cpp +++ b/sigscript/StoreWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::StoreWrapper* Sigscript::StoreWrapper::create(const Sigmod::Store* store, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, store->id()))) - m_instances[Signature(parent, store->id())] = new StoreWrapper(store, parent); - return qobject_cast<StoreWrapper*>(m_instances[Signature(parent, store->id())]); + Signature sig = Signature(parent, Subsignature(store->className(), store->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new StoreWrapper(store, parent); + return qobject_cast<StoreWrapper*>(m_instances[sig]); } Sigscript::StoreWrapper::StoreWrapper(const Sigmod::Store* store, SigmodWrapper* parent) : diff --git a/sigscript/TileWrapper.cpp b/sigscript/TileWrapper.cpp index 8417b003..65265d9e 100644 --- a/sigscript/TileWrapper.cpp +++ b/sigscript/TileWrapper.cpp @@ -24,9 +24,10 @@ Sigscript::TileWrapper* Sigscript::TileWrapper::create(const Sigmod::Tile* tile, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, tile->id()))) - m_instances[Signature(parent, tile->id())] = new TileWrapper(tile, parent); - return qobject_cast<TileWrapper*>(m_instances[Signature(parent, tile->id())]); + Signature sig = Signature(parent, Subsignature(tile->className(), tile->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new TileWrapper(tile, parent); + return qobject_cast<TileWrapper*>(m_instances[sig]); } Sigscript::TileWrapper::TileWrapper(const Sigmod::Tile* tile, SigmodWrapper* parent) : diff --git a/sigscript/TimeWrapper.cpp b/sigscript/TimeWrapper.cpp index 24b5b533..36d64237 100644 --- a/sigscript/TimeWrapper.cpp +++ b/sigscript/TimeWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::TimeWrapper* Sigscript::TimeWrapper::create(const Sigmod::Time* time, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, time->id()))) - m_instances[Signature(parent, time->id())] = new TimeWrapper(time, parent); - return qobject_cast<TimeWrapper*>(m_instances[Signature(parent, time->id())]); + Signature sig = Signature(parent, Subsignature(time->className(), time->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new TimeWrapper(time, parent); + return qobject_cast<TimeWrapper*>(m_instances[sig]); } Sigscript::TimeWrapper::TimeWrapper(const Sigmod::Time* time, SigmodWrapper* parent) : diff --git a/sigscript/TrainerWrapper.cpp b/sigscript/TrainerWrapper.cpp index 47f27505..34751aa7 100644 --- a/sigscript/TrainerWrapper.cpp +++ b/sigscript/TrainerWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::TrainerWrapper* Sigscript::TrainerWrapper::create(const Sigmod::Trainer* trainer, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, trainer->id()))) - m_instances[Signature(parent, trainer->id())] = new TrainerWrapper(trainer, parent); - return qobject_cast<TrainerWrapper*>(m_instances[Signature(parent, trainer->id())]); + Signature sig = Signature(parent, Subsignature(trainer->className(), trainer->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new TrainerWrapper(trainer, parent); + return qobject_cast<TrainerWrapper*>(m_instances[sig]); } Sigscript::TrainerWrapper::TrainerWrapper(const Sigmod::Trainer* trainer, SigmodWrapper* parent) : diff --git a/sigscript/TypeWrapper.cpp b/sigscript/TypeWrapper.cpp index 50849ab3..3597ce47 100644 --- a/sigscript/TypeWrapper.cpp +++ b/sigscript/TypeWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::TypeWrapper* Sigscript::TypeWrapper::create(const Sigmod::Type* type, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, type->id()))) - m_instances[Signature(parent, type->id())] = new TypeWrapper(type, parent); - return qobject_cast<TypeWrapper*>(m_instances[Signature(parent, type->id())]); + Signature sig = Signature(parent, Subsignature(type->className(), type->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new TypeWrapper(type, parent); + return qobject_cast<TypeWrapper*>(m_instances[sig]); } Sigscript::TypeWrapper::TypeWrapper(const Sigmod::Type* type, SigmodWrapper* parent) : diff --git a/sigscript/WeatherWrapper.cpp b/sigscript/WeatherWrapper.cpp index 3473572c..58bc2910 100644 --- a/sigscript/WeatherWrapper.cpp +++ b/sigscript/WeatherWrapper.cpp @@ -23,9 +23,10 @@ Sigscript::WeatherWrapper* Sigscript::WeatherWrapper::create(const Sigmod::Weather* weather, SigmodWrapper* parent) { - if (!m_instances.contains(Signature(parent, weather->id()))) - m_instances[Signature(parent, weather->id())] = new WeatherWrapper(weather, parent); - return qobject_cast<WeatherWrapper*>(m_instances[Signature(parent, weather->id())]); + Signature sig = Signature(parent, Subsignature(weather->className(), weather->id())); + if (!m_instances.contains(sig)) + m_instances[sig] = new WeatherWrapper(weather, parent); + return qobject_cast<WeatherWrapper*>(m_instances[sig]); } Sigscript::WeatherWrapper::WeatherWrapper(const Sigmod::Weather* weather, SigmodWrapper* parent) : |