summaryrefslogtreecommitdiffstats
path: root/pokemodr/PokeModTreeItem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemodr/PokeModTreeItem.cpp')
-rw-r--r--pokemodr/PokeModTreeItem.cpp361
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;
+}