From d26c1c706f1f386ef7813a0499ea3eda3ec43e10 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 28 Feb 2008 02:18:33 +0000 Subject: [FIX] UI classes now have initGui and refreshGui [FIX] PokeModTreeItem now is the monster class rather than PokeModrUI git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@88 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemodr/PokeModTreeItem.cpp | 361 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 360 insertions(+), 1 deletion(-) (limited to 'pokemodr/PokeModTreeItem.cpp') diff --git a/pokemodr/PokeModTreeItem.cpp b/pokemodr/PokeModTreeItem.cpp index e47648a0..35ad701d 100644 --- a/pokemodr/PokeModTreeItem.cpp +++ b/pokemodr/PokeModTreeItem.cpp @@ -21,6 +21,10 @@ // with this program. If not, see . ///////////////////////////////////////////////////////////////////////////// +#include +#include + +#include #include #include @@ -56,8 +60,316 @@ #include #include +#include "AbilityUI.h" +// #include "AbilityEffectUI.h" +#include "AuthorUI.h" +#include "BadgeUI.h" +#include "CoinListUI.h" +#include "CoinListObjectUI.h" +// #include "DialogUI.h" +#include "EggGroupUI.h" +#include "ItemUI.h" +// #include "ItemEffectUI.h" +#include "ItemTypeUI.h" +#include "MapUI.h" +// #include "MapEffectUI.h" +// #include "MapTrainerUI.h" +#include "MapTrainerTeamMemberUI.h" +#include "MapWarpUI.h" +#include "MapWildListUI.h" +#include "MapWildListEncounterUI.h" +#include "MoveUI.h" +// #include "MoveEffectUI.h" +#include "NatureUI.h" +#include "PokemodUI.h" +#include "RulesUI.h" +#include "SpeciesUI.h" +#include "SpeciesAbilityUI.h" +#include "SpeciesEvolutionUI.h" +#include "SpeciesItemUI.h" +#include "SpeciesMoveUI.h" +#include "StoreUI.h" +#include "TileUI.h" +#include "TimeUI.h" +#include "TypeUI.h" + #include "PokeModTreeItem.h" +void PokeModTreeItem::update() +{ + if (text(0).isEmpty()) + { + QString name(obj->getClassName()); + if (name == "Ability") + new PokeModTreeItem(this, obj, "Effects"); + else if (name == "CoinList") + new PokeModTreeItem(this, obj, "Objects"); + else if (name == "Item") + new PokeModTreeItem(this, obj, "Effects"); + else if (name == "Map") + { + new PokeModTreeItem(this, obj, "Effects"); + new PokeModTreeItem(this, obj, "Trainers"); + new PokeModTreeItem(this, obj, "Warps"); + new PokeModTreeItem(this, obj, "Wild Lists"); + } + else if (name == "MapTrainer") + new PokeModTreeItem(this, obj, "Team Members"); + else if (name == "MapWildList") + new PokeModTreeItem(this, obj, "Encounters"); + else if (name == "Move") + new PokeModTreeItem(this, obj, "Effects"); + else if (name == "Pokemod") + { + new PokeModTreeItem(this, static_cast(obj)->getRules()); + new PokeModTreeItem(this, obj, "Abilities"); + new PokeModTreeItem(this, obj, "Authors"); + new PokeModTreeItem(this, obj, "Badges"); + new PokeModTreeItem(this, obj, "Coin Lists"); + new PokeModTreeItem(this, obj, "Dialogs"); + new PokeModTreeItem(this, obj, "Egg Groups"); + new PokeModTreeItem(this, obj, "Items"); + new PokeModTreeItem(this, obj, "Item Types"); + new PokeModTreeItem(this, obj, "Maps"); + new PokeModTreeItem(this, obj, "Moves"); + new PokeModTreeItem(this, obj, "Natures"); + new PokeModTreeItem(this, obj, "Species"); + new PokeModTreeItem(this, obj, "Stores"); + new PokeModTreeItem(this, obj, "Tiles"); + new PokeModTreeItem(this, obj, "Times"); + new PokeModTreeItem(this, obj, "Types"); + } + else if (name == "Species") + { + new PokeModTreeItem(this, obj, "Abilities"); + new PokeModTreeItem(this, obj, "Evolutions"); + new PokeModTreeItem(this, obj, "Items"); + new PokeModTreeItem(this, obj, "Moves"); + } + } + else + { + QString name(obj->getClassName()); + if (name == "Ability") + { + Ability* a = static_cast(obj); + for (int i = 0; i < a->getEffectCount(); ++i) + new PokeModTreeItem(this, a->getEffect(i)); + } + else if (name == "CoinList") + { + CoinList* c = static_cast(obj); + for (int i = 0; i < c->getItemCount(); ++i) + new PokeModTreeItem(this, c->getItem(i)); + } + else if (name == "Item") + { + Item* it = static_cast(obj); + for (int i = 0; i < it->getEffectCount(); ++i) + new PokeModTreeItem(this, it->getEffect(i)); + } + else if (name == "Map") + { + Map* m = static_cast(obj); + if (text(0) == "Effects") + { + for (int i = 0; i < m->getEffectCount(); ++i) + new PokeModTreeItem(this, m->getEffect(i)); + } + else if (text(0) == "Trainers") + { + for (int i = 0; i < m->getTrainerCount(); ++i) + new PokeModTreeItem(this, m->getTrainer(i)); + } + else if (text(0) == "Warps") + { + for (int i = 0; i < m->getWarpCount(); ++i) + new PokeModTreeItem(this, m->getWarp(i)); + } + else if (text(0) == "Wild Lists") + { + for (int i = 0; i < m->getWildListCount(); ++i) + new PokeModTreeItem(this, m->getWildList(i)); + } + } + else if (name == "MapTrainer") + { + MapTrainer* t = static_cast(obj); + for (int i = 0; i < t->getTeamMemberCount(); ++i) + new PokeModTreeItem(this, t->getTeamMember(i)); + } + else if (name == "MapWildList") + { + MapWildList* w = static_cast(obj); + for (int i = 0; i < w->getEncounterCount(); ++i) + new PokeModTreeItem(this, w->getEncounter(i)); + } + else if (name == "Move") + { + Move* m = static_cast(obj); + for (int i = 0; i < m->getEffectCount(); ++i) + new PokeModTreeItem(this, m->getEffect(i)); + } + else if (name == "Pokemod") + { + Pokemod* p = static_cast(obj); + if (text(0) == "Abilities") + { + for (int i = 0; i < p->getAbilityCount(); ++i) + new PokeModTreeItem(this, p->getAbility(i)); + } + else if (text(0) == "Authors") + { + for (int i = 0; i < p->getAuthorCount(); ++i) + new PokeModTreeItem(this, p->getAuthor(i)); + } + else if (text(0) == "Badges") + { + for (int i = 0; i < p->getBadgeCount(); ++i) + new PokeModTreeItem(this, p->getBadge(i)); + } + else if (text(0) == "Coin Lists") + { + for (int i = 0; i < p->getCoinListCount(); ++i) + new PokeModTreeItem(this, p->getCoinList(i)); + } + else if (text(0) == "Dialogs") + { + for (int i = 0; i < p->getDialogCount(); ++i) + new PokeModTreeItem(this, p->getDialog(i)); + } + else if (text(0) == "Egg Groups") + { + for (int i = 0; i < p->getEggGroupCount(); ++i) + new PokeModTreeItem(this, p->getEggGroup(i)); + } + else if (text(0) == "Items") + { + for (int i = 0; i < p->getItemCount(); ++i) + new PokeModTreeItem(this, p->getItem(i)); + } + else if (text(0) == "Item Types") + { + for (int i = 0; i < p->getItemTypeCount(); ++i) + new PokeModTreeItem(this, p->getItemType(i)); + } + else if (text(0) == "Maps") + { + for (int i = 0; i < p->getMapCount(); ++i) + new PokeModTreeItem(this, p->getMap(i)); + } + else if (text(0) == "Moves") + { + for (int i = 0; i < p->getMoveCount(); ++i) + new PokeModTreeItem(this, p->getMove(i)); + } + else if (text(0) == "Natures") + { + for (int i = 0; i < p->getNatureCount(); ++i) + new PokeModTreeItem(this, p->getNature(i)); + } + else if (text(0) == "Species") + { + for (int i = 0; i < p->getSpeciesCount(); ++i) + new PokeModTreeItem(this, p->getSpecies(i)); + } + else if (text(0) == "Stores") + { + for (int i = 0; i < p->getStoreCount(); ++i) + new PokeModTreeItem(this, p->getStore(i)); + } + else if (text(0) == "Tiles") + { + for (int i = 0; i < p->getTileCount(); ++i) + new PokeModTreeItem(this, p->getTile(i)); + } + else if (text(0) == "Times") + { + for (int i = 0; i < p->getTimeCount(); ++i) + new PokeModTreeItem(this, p->getTime(i)); + } + else if (text(0) == "Types") + { + for (int i = 0; i < p->getTypeCount(); ++i) + new PokeModTreeItem(this, p->getType(i)); + } + } + else if (name == "Species") + { + Species* s = static_cast(obj); + if (text(0) == "Abilities") + { + for (int i = 0; i < s->getAbilityCount(); ++i) + new PokeModTreeItem(this, s->getAbility(i)); + } + else if (text(0) == "Evolutions") + { + for (int i = 0; i < s->getEvolutionCount(); ++i) + new PokeModTreeItem(this, s->getEvolution(i)); + } + else if (text(0) == "Items") + { + for (int i = 0; i < s->getItemCount(); ++i) + new PokeModTreeItem(this, s->getItem(i)); + } + else if (text(0) == "Moves") + { + for (int i = 0; i < s->getMoveCount(); ++i) + new PokeModTreeItem(this, s->getMove(i)); + } + } + obj = NULL; + } +} + +void PokeModTreeItem::init(QWidget* pnt) +{ + update(); + setExpanded(true); + setChildIndicatorPolicy(QTreeWidgetItem::QTreeWidgetItem::DontShowIndicatorWhenChildless); + if (obj) + { + QString name(obj->getClassName()); +#define IF_IS_CLASS(class) if (name == #class) ui = new class##UI(static_cast< ::class* >(obj), pnt); + IF_IS_CLASS(Ability) +// else IF_IS_CLASS(AbilityEffect) + else IF_IS_CLASS(Author) + else IF_IS_CLASS(Badge) + else IF_IS_CLASS(CoinList) + else IF_IS_CLASS(CoinListObject) +// else IF_IS_CLASS(Dialog) + else IF_IS_CLASS(EggGroup) + else IF_IS_CLASS(Item) +// else IF_IS_CLASS(ItemEffect) + else IF_IS_CLASS(ItemType) + else IF_IS_CLASS(Map) +// else IF_IS_CLASS(MapEffect) +// else IF_IS_CLASS(MapTrainer) + else IF_IS_CLASS(MapTrainerTeamMember) + else IF_IS_CLASS(MapWarp) + else IF_IS_CLASS(MapWildList) + else IF_IS_CLASS(MapWildListEncounter) + else IF_IS_CLASS(Move) +// else IF_IS_CLASS(MoveEffect) + else IF_IS_CLASS(Nature) + else IF_IS_CLASS(Pokemod) + else IF_IS_CLASS(Rules) + else IF_IS_CLASS(Species) + else IF_IS_CLASS(SpeciesAbility) + else IF_IS_CLASS(SpeciesEvolution) + else IF_IS_CLASS(SpeciesItem) + else IF_IS_CLASS(SpeciesMove) + else IF_IS_CLASS(Store) + else IF_IS_CLASS(Tile) + else IF_IS_CLASS(Time) + else IF_IS_CLASS(Type) + connect(ui, SIGNAL(changed(bool)), this, SLOT(changed(bool))); + connect(ui, SIGNAL(changed(bool)), this, SLOT(updateName())); + } +#undef IF_IS_CLASS + updateName(); +} + void PokeModTreeItem::updateName() { if (!obj) @@ -67,7 +379,7 @@ void PokeModTreeItem::updateName() if (name == "Ability") text = static_cast(obj)->getName(); else if (name == "AbilityEffect") - text = static_cast(obj)->getEffect(); + text = AbilityEffect::EffectStr.at(static_cast(obj)->getEffect()); else if (name == "Author") text = static_cast(obj)->getName(); else if (name == "Badge") @@ -142,3 +454,50 @@ void PokeModTreeItem::updateName() text = static_cast< ::Type* >(obj)->getName(); setText(0, text); } + +void PokeModTreeItem::makeMenu(const QPoint& pos) +{ +} + +Object* PokeModTreeItem::makeCopy() +{ + if (obj) + { + QString name(obj->getClassName()); +#define IF_IS_CLASS(class) if (name == #class) return new ::class(obj->getPokemod(), *static_cast< ::class* >(obj), obj->getId()); + IF_IS_CLASS(Ability) + else IF_IS_CLASS(AbilityEffect) + else IF_IS_CLASS(Author) + else IF_IS_CLASS(Badge) + else IF_IS_CLASS(CoinList) + else IF_IS_CLASS(CoinListObject) + else IF_IS_CLASS(Dialog) + else IF_IS_CLASS(EggGroup) + else IF_IS_CLASS(Item) + else IF_IS_CLASS(ItemEffect) + else IF_IS_CLASS(ItemType) + else IF_IS_CLASS(Map) + else IF_IS_CLASS(MapEffect) + else IF_IS_CLASS(MapTrainer) + else IF_IS_CLASS(MapTrainerTeamMember) + else IF_IS_CLASS(MapWarp) + else IF_IS_CLASS(MapWildList) + else IF_IS_CLASS(MapWildListEncounter) + else IF_IS_CLASS(Move) + else IF_IS_CLASS(MoveEffect) + else IF_IS_CLASS(Nature) + else if (name == "Pokemod") return new Pokemod(*static_cast(obj)); + else if (name == "Rules") return new Rules(obj->getPokemod()); + else IF_IS_CLASS(Species) + else IF_IS_CLASS(SpeciesAbility) + else IF_IS_CLASS(SpeciesEvolution) + else IF_IS_CLASS(SpeciesItem) + else IF_IS_CLASS(SpeciesMove) + else IF_IS_CLASS(Store) + else IF_IS_CLASS(Tile) + else IF_IS_CLASS(Time) + else IF_IS_CLASS(Type) +#undef IF_IS_CLASS + } + return NULL; +} -- cgit