diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-02-28 02:18:33 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-02-28 02:18:33 +0000 |
| commit | d26c1c706f1f386ef7813a0499ea3eda3ec43e10 (patch) | |
| tree | 20ff2faf90e279b1a9501203a4c8d1e31402b39d /pokemodr/PokeModTreeItem.cpp | |
| parent | d52f6c9f71c1ee94539fe94bd821df608d7ee602 (diff) | |
| download | sigen-d26c1c706f1f386ef7813a0499ea3eda3ec43e10.tar.gz sigen-d26c1c706f1f386ef7813a0499ea3eda3ec43e10.tar.xz sigen-d26c1c706f1f386ef7813a0499ea3eda3ec43e10.zip | |
[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
Diffstat (limited to 'pokemodr/PokeModTreeItem.cpp')
| -rw-r--r-- | pokemodr/PokeModTreeItem.cpp | 361 |
1 files changed, 360 insertions, 1 deletions
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 <http://www.gnu.org/licenses/>. ///////////////////////////////////////////////////////////////////////////// +#include <kaction.h> +#include <kmenu.h> + +#include <QPoint> #include <QString> #include <Ability.h> @@ -56,8 +60,316 @@ #include <Time.h> #include <Type.h> +#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<Pokemod*>(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<Ability*>(obj); + for (int i = 0; i < a->getEffectCount(); ++i) + new PokeModTreeItem(this, a->getEffect(i)); + } + else if (name == "CoinList") + { + CoinList* c = static_cast<CoinList*>(obj); + for (int i = 0; i < c->getItemCount(); ++i) + new PokeModTreeItem(this, c->getItem(i)); + } + else if (name == "Item") + { + Item* it = static_cast<Item*>(obj); + for (int i = 0; i < it->getEffectCount(); ++i) + new PokeModTreeItem(this, it->getEffect(i)); + } + else if (name == "Map") + { + Map* m = static_cast<Map*>(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<MapTrainer*>(obj); + for (int i = 0; i < t->getTeamMemberCount(); ++i) + new PokeModTreeItem(this, t->getTeamMember(i)); + } + else if (name == "MapWildList") + { + MapWildList* w = static_cast<MapWildList*>(obj); + for (int i = 0; i < w->getEncounterCount(); ++i) + new PokeModTreeItem(this, w->getEncounter(i)); + } + else if (name == "Move") + { + Move* m = static_cast<Move*>(obj); + for (int i = 0; i < m->getEffectCount(); ++i) + new PokeModTreeItem(this, m->getEffect(i)); + } + else if (name == "Pokemod") + { + Pokemod* p = static_cast<Pokemod*>(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<Species*>(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<Ability*>(obj)->getName(); else if (name == "AbilityEffect") - text = static_cast<AbilityEffect*>(obj)->getEffect(); + text = AbilityEffect::EffectStr.at(static_cast<AbilityEffect*>(obj)->getEffect()); else if (name == "Author") text = static_cast<Author*>(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<Pokemod*>(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; +} |
