summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2007-06-04 01:35:20 +0000
committerBen Boeckel <MathStuf@gmail.com>2007-06-04 01:35:20 +0000
commit3595239f08f2bc1df32ef22ed6de9bde10ca3384 (patch)
treed9962c84e3a1f19e2da422f9bb49f65c21ada9f6
parentc9afda3ab74614fb36986f96b7972c082f275eca (diff)
downloadsigen-3595239f08f2bc1df32ef22ed6de9bde10ca3384.tar.gz
sigen-3595239f08f2bc1df32ef22ed6de9bde10ca3384.tar.xz
sigen-3595239f08f2bc1df32ef22ed6de9bde10ca3384.zip
Style cleanup, minor Matrix fixes, duplication validations, Pokemod methods
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@19 6ecfd1a5-f3ed-3746-8530-beee90d26b22
-rw-r--r--Changelog12
-rw-r--r--ai/Layer.cpp4
-rw-r--r--ai/Layer.h2
-rw-r--r--ai/Net.h2
-rw-r--r--ai/Node.cpp6
-rw-r--r--ai/Node.h2
-rw-r--r--pokegen.depend141
-rw-r--r--pokegen.layout257
-rw-r--r--pokemod/Ability.cpp61
-rw-r--r--pokemod/AbilityEffect.cpp60
-rw-r--r--pokemod/Author.cpp314
-rw-r--r--pokemod/Author.h2
-rw-r--r--pokemod/Badge.cpp15
-rw-r--r--pokemod/CoinItem.cpp14
-rw-r--r--pokemod/CoinList.cpp86
-rw-r--r--pokemod/CoinList.h3
-rw-r--r--pokemod/Debug.cpp4
-rw-r--r--pokemod/Debug.h17
-rw-r--r--pokemod/Dialog.cpp7
-rw-r--r--pokemod/EggGroup.cpp9
-rw-r--r--pokemod/Flag.cpp6
-rw-r--r--pokemod/Frac.cpp15
-rw-r--r--pokemod/Ini.cpp2
-rw-r--r--pokemod/Ini.h2
-rw-r--r--pokemod/Item.cpp66
-rw-r--r--pokemod/Item.h3
-rw-r--r--pokemod/ItemEffect.cpp25
-rw-r--r--pokemod/ItemStorage.cpp7
-rw-r--r--pokemod/Map.cpp297
-rw-r--r--pokemod/Map.h1
-rw-r--r--pokemod/MapEffect.cpp37
-rw-r--r--pokemod/MapTrainer.cpp78
-rw-r--r--pokemod/MapTrainer.h1
-rw-r--r--pokemod/MapTrainerTeam.cpp10
-rw-r--r--pokemod/MapWarp.cpp48
-rw-r--r--pokemod/MapWildList.cpp91
-rw-r--r--pokemod/MapWildList.h6
-rw-r--r--pokemod/MapWildPokemon.cpp10
-rw-r--r--pokemod/Matrix.h23
-rw-r--r--pokemod/Move.cpp136
-rw-r--r--pokemod/Move.h1
-rw-r--r--pokemod/MoveEffect.cpp13
-rw-r--r--pokemod/Nature.cpp62
-rw-r--r--pokemod/Nature.h2
-rw-r--r--pokemod/NatureEffect.cpp10
-rw-r--r--pokemod/Object.cpp1
-rw-r--r--pokemod/Path.cpp2
-rw-r--r--pokemod/Point.cpp1
-rw-r--r--pokemod/Point.h4
-rw-r--r--pokemod/Pokemod.cpp2611
-rw-r--r--pokemod/Pokemod.h208
-rw-r--r--pokemod/Pokemon.cpp467
-rw-r--r--pokemod/Pokemon.h1
-rw-r--r--pokemod/PokemonAbility.cpp14
-rw-r--r--pokemod/PokemonEvolution.cpp14
-rw-r--r--pokemod/PokemonItem.cpp10
-rw-r--r--pokemod/PokemonMove.cpp4
-rw-r--r--pokemod/PokemonNature.cpp14
-rw-r--r--pokemod/Ref.cpp1
-rw-r--r--pokemod/Ref.h2
-rw-r--r--pokemod/Status.cpp83
-rw-r--r--pokemod/Status.h1
-rw-r--r--pokemod/StatusEffect.cpp13
-rw-r--r--pokemod/Store.cpp85
-rw-r--r--pokemod/Store.h3
-rw-r--r--pokemod/String.cpp2
-rw-r--r--pokemod/TODO28
-rw-r--r--pokemod/Tile.cpp52
-rw-r--r--pokemod/Time.cpp8
-rw-r--r--pokemod/Type.cpp5
-rw-r--r--pokemodr/gui/PokeModr.pjd523
-rw-r--r--pokemodr/gui/mainWindow.cpp1254
-rw-r--r--pokemodr/gui/mainWindow.h23
73 files changed, 5688 insertions, 1716 deletions
diff --git a/Changelog b/Changelog
index 10e1c846..e871cf98 100644
--- a/Changelog
+++ b/Changelog
@@ -1,4 +1,16 @@
-----------------
+Rev: 19
+Date: 3 June 2007
+User: MathStuf
+-----------------
+[FIX] Matrix insertion error
+[ADD] ID duplication checks for submodules
+[ADD] Duplicate checks for submodules
+[FIX] AStyle formatter run over all source files
+[FIX] Stylistic clean up
+[ADD] Pokemod methods
+
+-----------------
Rev: 18
Date: 2 June 2007
User: MathStuf
diff --git a/ai/Layer.cpp b/ai/Layer.cpp
index 97ba87b6..5ba794a1 100644
--- a/ai/Layer.cpp
+++ b/ai/Layer.cpp
@@ -51,7 +51,7 @@ void PokeGen::NeuralNetwork::Layer::DeleteNode(int n)
void PokeGen::NeuralNetwork::Layer::UpdateBias(int n)
{
if (n < 0)
- bias.push_back((abs(std::rand())%201)/100.0);
+ bias.push_back((abs(std::rand()) % 201) / 100.0);
else if (n < GetNumNodes())
bias.erase(bias.begin() + n);
else
@@ -69,7 +69,7 @@ void PokeGen::NeuralNetwork::Layer::RandomizeWeights()
{
bias.clear();
for (int i = 0; i < child->GetNumNodes(); ++i)
- bias.push_back((abs(std::rand())%201)/100.0);
+ bias.push_back((abs(std::rand()) % 201) / 100.0);
for (int i = 0; i < GetNumNodes(); ++i)
nodes[i].RandomizeWeights();
}
diff --git a/ai/Layer.h b/ai/Layer.h
index c7f6fa4f..22b35c82 100644
--- a/ai/Layer.h
+++ b/ai/Layer.h
@@ -27,7 +27,7 @@
#include <vector>
#include <cstdlib>
#include "Node.h"
-#include "../pokemod/Xml.h"
+#include "../pokemod/Ini.h"
namespace PokeGen
{
diff --git a/ai/Net.h b/ai/Net.h
index 798a05dc..17bbb85f 100644
--- a/ai/Net.h
+++ b/ai/Net.h
@@ -25,7 +25,7 @@
#define __NEURAL_NET__
#include "Layer.h"
-#include "../pokemod/Xml.h"
+#include "../pokemod/Ini.h"
namespace PokeGen
{
diff --git a/ai/Node.cpp b/ai/Node.cpp
index c95d6eae..9fc723d6 100644
--- a/ai/Node.cpp
+++ b/ai/Node.cpp
@@ -40,7 +40,7 @@ void PokeGen::NeuralNetwork::Node::UpdateWeights(int n)
{
if (n < 0)
{
- weights.push_back((abs(std::rand())%201)/100.0);
+ weights.push_back((abs(std::rand()) % 201) / 100.0);
weightChanges.push_back(0);
}
else if (n < ownerLayer->child->GetNumNodes())
@@ -87,7 +87,7 @@ void PokeGen::NeuralNetwork::Node::RandomizeWeights()
weights.clear();
int i = 0;
for (; i < ownerLayer->child->GetNumNodes(); ++i)
- weights.push_back((abs(std::rand())%201)/100.0);
+ weights.push_back((abs(std::rand()) % 201) / 100.0);
weightChanges.clear();
weightChanges.resize(i - 1, 0);
}
@@ -208,5 +208,5 @@ void PokeGen::NeuralNetwork::Node::CalculateValue()
void PokeGen::NeuralNetwork::Node::DumpData(const std::string &f)
{
-
+ // TODO (Ben#1#): Dump NeuralNode data
}
diff --git a/ai/Node.h b/ai/Node.h
index 76f6d55b..35d2cb17 100644
--- a/ai/Node.h
+++ b/ai/Node.h
@@ -29,7 +29,7 @@
#include <cstdlib>
#include <cmath>
#include "Layer.h"
-#include "../pokemod/Xml.h"
+#include "../pokemod/Ini.h"
namespace PokeGen
{
diff --git a/pokegen.depend b/pokegen.depend
index e7236859..584957c2 100644
--- a/pokegen.depend
+++ b/pokegen.depend
@@ -1,13 +1,13 @@
# depslib dependency file v1.0
-1180801356 source:h:\ben\programming\pc\pokegen\src\pokemod\flag.cpp
+1180843850 source:h:\ben\programming\pc\pokegen\src\pokemod\flag.cpp
"Flag.h"
-1180748126 h:\ben\programming\pc\pokegen\src\pokemod\flag.h
+1180848044 h:\ben\programming\pc\pokegen\src\pokemod\flag.h
"Debug.h"
"Ini.h"
"Ref.h"
-1180750732 h:\ben\programming\pc\pokegen\src\pokemod\debug.h
+1180848064 h:\ben\programming\pc\pokegen\src\pokemod\debug.h
<ctime>
<fstream>
<cstdio>
@@ -19,87 +19,87 @@
<sstream>
<iostream>
-1180745264 h:\ben\programming\pc\pokegen\src\pokemod\frac.h
+1180848048 h:\ben\programming\pc\pokegen\src\pokemod\frac.h
"Debug.h"
"Ini.h"
-1180717482 h:\ben\programming\pc\pokegen\src\pokemod\ini.h
+1180899300 h:\ben\programming\pc\pokegen\src\pokemod\ini.h
<map>
<fstream>
"String.h"
-1180752882 h:\ben\programming\pc\pokegen\src\pokemod\ref.h
+1180890016 h:\ben\programming\pc\pokegen\src\pokemod\ref.h
<vector>
"String.h"
-1180732976 source:h:\ben\programming\pc\pokegen\src\pokemod\ini.cpp
+1180847176 source:h:\ben\programming\pc\pokegen\src\pokemod\ini.cpp
"Ini.h"
-1180050768 source:h:\ben\programming\pc\pokegen\src\pokemod\object.cpp
+1180847420 source:h:\ben\programming\pc\pokegen\src\pokemod\object.cpp
"Object.h"
-1180185454 h:\ben\programming\pc\pokegen\src\pokemod\object.h
+1180847938 h:\ben\programming\pc\pokegen\src\pokemod\object.h
<wx/listbox.h>
<fstream>
"Debug.h"
"Ini.h"
-1178468486 source:h:\ben\programming\pc\pokegen\src\pokemod\path.cpp
+1180847452 source:h:\ben\programming\pc\pokegen\src\pokemod\path.cpp
"Path.h"
-1178468482 h:\ben\programming\pc\pokegen\src\pokemod\path.h
+1180847932 h:\ben\programming\pc\pokegen\src\pokemod\path.h
<string>
<fstream>
"String.h"
-1180750750 source:h:\ben\programming\pc\pokegen\src\pokemod\point.cpp
+1180847462 source:h:\ben\programming\pc\pokegen\src\pokemod\point.cpp
"Point.h"
-1180750680 h:\ben\programming\pc\pokegen\src\pokemod\point.h
+1180901382 h:\ben\programming\pc\pokegen\src\pokemod\point.h
"Debug.h"
"Ini.h"
-1180717382 source:h:\ben\programming\pc\pokegen\src\pokemod\string.cpp
+1180847696 source:h:\ben\programming\pc\pokegen\src\pokemod\string.cpp
"String.h"
-1179887976 source:h:\ben\programming\pc\pokegen\src\pokemod\debug.cpp
+1180843688 source:h:\ben\programming\pc\pokegen\src\pokemod\debug.cpp
"Debug.h"
-1180185144 source:h:\ben\programming\pc\pokegen\src\pokemod\ref.cpp
+1180889888 source:h:\ben\programming\pc\pokegen\src\pokemod\ref.cpp
"Ref.h"
-1180744572 source:h:\ben\programming\pc\pokegen\src\pokemod\type.cpp
+1180847608 source:h:\ben\programming\pc\pokegen\src\pokemod\type.cpp
"Type.h"
1180184954 h:\ben\programming\pc\pokegen\src\pokemod\type.h
"Object.h"
"String.h"
-1180744576 source:h:\ben\programming\pc\pokegen\src\pokemod\time.cpp
+1180847616 source:h:\ben\programming\pc\pokegen\src\pokemod\time.cpp
"Time.h"
1180184978 h:\ben\programming\pc\pokegen\src\pokemod\time.h
"Object.h"
"String.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\egggroup.cpp
+1180843820 source:h:\ben\programming\pc\pokegen\src\pokemod\egggroup.cpp
"EggGroup.h"
-1180186118 h:\ben\programming\pc\pokegen\src\pokemod\egggroup.h
+1180848052 h:\ben\programming\pc\pokegen\src\pokemod\egggroup.h
"Object.h"
"String.h"
-1180744582 source:h:\ben\programming\pc\pokegen\src\pokemod\author.cpp
+1180843074 source:h:\ben\programming\pc\pokegen\src\pokemod\author.cpp
"Author.h"
-1180186276 h:\ben\programming\pc\pokegen\src\pokemod\author.h
+1180848088 h:\ben\programming\pc\pokegen\src\pokemod\author.h
"Object.h"
"String.h"
-1180801322 source:h:\ben\programming\pc\pokegen\src\pokemod\badge.cpp
+1180843064 source:h:\ben\programming\pc\pokegen\src\pokemod\badge.cpp
"Badge.h"
-1180186240 h:\ben\programming\pc\pokegen\src\pokemod\badge.h
+1180848080 h:\ben\programming\pc\pokegen\src\pokemod\badge.h
"Object.h"
"String.h"
"Ref.h"
@@ -107,8 +107,11 @@
"Frac.h"
"Pokemod.h"
-1180798567 h:\ben\programming\pc\pokegen\src\pokemod\pokemod.h
+1180913025 h:\ben\programming\pc\pokegen\src\pokemod\pokemod.h
<vector>
+ <map>
+ <sstream>
+ <string>
"pokemod_inc.h"
"Object.h"
"Ref.h"
@@ -118,28 +121,31 @@
"CoinList.h"
"Dialog.h"
"EggGroup.h"
+ "Ini.h"
"Item.h"
"ItemStorage.h"
"Map.h"
"Move.h"
"Nature.h"
+ "Point.h"
"Pokemon.h"
"Status.h"
"Store.h"
+ "String.h"
"Tile.h"
"Time.h"
"Type.h"
-1180564326 h:\ben\programming\pc\pokegen\src\pokemod\pokemod_inc.h
+1180848102 h:\ben\programming\pc\pokegen\src\pokemod\pokemod_inc.h
"Pokemod.h"
-1180577044 h:\ben\programming\pc\pokegen\src\pokemod\ability.h
+1180847892 h:\ben\programming\pc\pokegen\src\pokemod\ability.h
<vector>
"Object.h"
"String.h"
"AbilityEffect.h"
-1180561758 h:\ben\programming\pc\pokegen\src\pokemod\abilityeffect.h
+1180848092 h:\ben\programming\pc\pokegen\src\pokemod\abilityeffect.h
"Object.h"
"String.h"
"Pokemod.h"
@@ -148,60 +154,64 @@
"Type.h"
"Ref.h"
-1180577394 h:\ben\programming\pc\pokegen\src\pokemod\coinlist.h
+1180848070 h:\ben\programming\pc\pokegen\src\pokemod\coinlist.h
<vector>
+ <map>
"Object.h"
"String.h"
"Pokemod.h"
"CoinItem.h"
-1180564688 h:\ben\programming\pc\pokegen\src\pokemod\coinitem.h
+1180848072 h:\ben\programming\pc\pokegen\src\pokemod\coinitem.h
"Object.h"
"String.h"
"Pokemod.h"
-1180732956 h:\ben\programming\pc\pokegen\src\pokemod\item.h
+1180848034 h:\ben\programming\pc\pokegen\src\pokemod\item.h
<vector>
+ <map>
"Object.h"
"String.h"
"Pokemod.h"
"ItemEffect.h"
-1180562838 h:\ben\programming\pc\pokegen\src\pokemod\itemeffect.h
+1180848030 h:\ben\programming\pc\pokegen\src\pokemod\itemeffect.h
"Object.h"
"String.h"
"Pokemod.h"
-1180185816 h:\ben\programming\pc\pokegen\src\pokemod\itemstorage.h
+1180848028 h:\ben\programming\pc\pokegen\src\pokemod\itemstorage.h
"Object.h"
"String.h"
-1180577550 h:\ben\programming\pc\pokegen\src\pokemod\nature.h
+1180847952 h:\ben\programming\pc\pokegen\src\pokemod\nature.h
<vector>
"Object.h"
"String.h"
"NatureEffect.h"
-1180396026 h:\ben\programming\pc\pokegen\src\pokemod\natureeffect.h
+1180847944 h:\ben\programming\pc\pokegen\src\pokemod\natureeffect.h
"Object.h"
"String.h"
"Frac.h"
"Pokemod.h"
-1180577644 h:\ben\programming\pc\pokegen\src\pokemod\move.h
+1180887030 h:\ben\programming\pc\pokegen\src\pokemod\move.h
<vector>
+ <map>
"Object.h"
"String.h"
"MoveEffect.h"
-1180565222 h:\ben\programming\pc\pokegen\src\pokemod\moveeffect.h
+1180847958 h:\ben\programming\pc\pokegen\src\pokemod\moveeffect.h
"Object.h"
"String.h"
"Pokemod.h"
"Frac.h"
-1180566104 h:\ben\programming\pc\pokegen\src\pokemod\store.h
+1180891282 h:\ben\programming\pc\pokegen\src\pokemod\store.h
<vector>
+ <map>
"Object.h"
"String.h"
"Pokemod.h"
@@ -209,15 +219,15 @@
1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\dialog.cpp
"Dialog.h"
-1180186138 h:\ben\programming\pc\pokegen\src\pokemod\dialog.h
+1180848058 h:\ben\programming\pc\pokegen\src\pokemod\dialog.h
"Object.h"
"String.h"
"Pokemod.h"
-1180733002 source:h:\ben\programming\pc\pokegen\src\pokemod\frac.cpp
+1180843936 source:h:\ben\programming\pc\pokegen\src\pokemod\frac.cpp
"Frac.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\itemstorage.cpp
+1180844756 source:h:\ben\programming\pc\pokegen\src\pokemod\itemstorage.cpp
"ItemStorage.h"
1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\natureeffect.cpp
@@ -459,11 +469,12 @@
"String.h"
"Pokemod.h"
-1180744532 source:h:\ben\programming\pc\pokegen\src\pokemod\ability.cpp
+1180844557 source:h:\ben\programming\pc\pokegen\src\pokemod\ability.cpp
"Ability.h"
-1180577780 h:\ben\programming\pc\pokegen\src\pokemod\map.h
+1180848012 h:\ben\programming\pc\pokegen\src\pokemod\map.h
<vector>
+ <map>
"Object.h"
"String.h"
"Matrix.h"
@@ -472,13 +483,13 @@
"MapWarp.h"
"MapWildList.h"
-1180801447 h:\ben\programming\pc\pokegen\src\pokemod\matrix.h
+1180914775 h:\ben\programming\pc\pokegen\src\pokemod\matrix.h
<vector>
"Point.h"
"Frac.h"
"Ini.h"
-1180753200 h:\ben\programming\pc\pokegen\src\pokemod\mapeffect.h
+1180848008 h:\ben\programming\pc\pokegen\src\pokemod\mapeffect.h
"Object.h"
"String.h"
"Flag.h"
@@ -486,8 +497,9 @@
"Path.h"
"Dialog.h"
-1180756212 h:\ben\programming\pc\pokegen\src\pokemod\maptrainer.h
+1180848004 h:\ben\programming\pc\pokegen\src\pokemod\maptrainer.h
<vector>
+ <map>
"Object.h"
"String.h"
"Flag.h"
@@ -496,15 +508,16 @@
"Dialog.h"
"MapTrainerTeam.h"
-1180732834 h:\ben\programming\pc\pokegen\src\pokemod\maptrainerteam.h
+1180848000 h:\ben\programming\pc\pokegen\src\pokemod\maptrainerteam.h
"Object.h"
"String.h"
"Pokemod.h"
"Pokemon.h"
"Item.h"
-1180736158 h:\ben\programming\pc\pokegen\src\pokemod\pokemon.h
+1180841588 h:\ben\programming\pc\pokegen\src\pokemod\pokemon.h
<vector>
+ <map>
"Object.h"
"String.h"
"Frac.h"
@@ -521,7 +534,7 @@
"String.h"
"Pokemod.h"
-1180753270 h:\ben\programming\pc\pokegen\src\pokemod\mapwarp.h
+1180847988 h:\ben\programming\pc\pokegen\src\pokemod\mapwarp.h
"Object.h"
"String.h"
"Flag.h"
@@ -529,21 +542,22 @@
"Map.h"
"Dialog.h"
-1180728830 h:\ben\programming\pc\pokegen\src\pokemod\mapwildlist.h
+1180918088 h:\ben\programming\pc\pokegen\src\pokemod\mapwildlist.h
<vector>
"Object.h"
"String.h"
"Pokemod.h"
"MapWildPokemon.h"
-1180732716 h:\ben\programming\pc\pokegen\src\pokemod\mapwildpokemon.h
+1180847978 h:\ben\programming\pc\pokegen\src\pokemod\mapwildpokemon.h
"Object.h"
"String.h"
"Pokemod.h"
"Pokemon.h"
-1180800787 h:\ben\programming\pc\pokegen\src\pokemod\status.h
+1180890028 h:\ben\programming\pc\pokegen\src\pokemod\status.h
<vector>
+ <map>
"Object.h"
"String.h"
"Pokemod.h"
@@ -554,7 +568,7 @@
"String.h"
"Pokemod.h"
-1180801003 h:\ben\programming\pc\pokegen\src\pokemod\statuseffect.h
+1180801004 h:\ben\programming\pc\pokegen\src\pokemod\statuseffect.h
"Object.h"
"String.h"
"Pokemod.h"
@@ -564,39 +578,42 @@
1180801281 source:h:\ben\programming\pc\pokegen\src\pokemod\abilityeffect.cpp
"AbilityEffect.h"
-1180744582 source:h:\ben\programming\pc\pokegen\src\pokemod\coinitem.cpp
+1180903058 source:h:\ben\programming\pc\pokegen\src\pokemod\coinitem.cpp
"CoinItem.h"
-1180744582 source:h:\ben\programming\pc\pokegen\src\pokemod\coinlist.cpp
+1180844482 source:h:\ben\programming\pc\pokegen\src\pokemod\coinlist.cpp
"CoinList.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\item.cpp
+1180844604 source:h:\ben\programming\pc\pokegen\src\pokemod\item.cpp
"Item.h"
1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\maptrainerteam.cpp
"MapTrainerTeam.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\mapwildlist.cpp
+1180918072 source:h:\ben\programming\pc\pokegen\src\pokemod\mapwildlist.cpp
"MapWildList.h"
1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\mapwildpokemon.cpp
"MapWildPokemon.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\nature.cpp
+1180890178 source:h:\ben\programming\pc\pokegen\src\pokemod\nature.cpp
"Nature.h"
-1180623298 source:h:\ben\programming\pc\pokegen\src\pokemod\pokemod.cpp
+1180916341 source:h:\ben\programming\pc\pokegen\src\pokemod\pokemod.cpp
"Pokemod.h"
-1180744584 source:h:\ben\programming\pc\pokegen\src\pokemod\pokemon.cpp
+1180886988 source:h:\ben\programming\pc\pokegen\src\pokemod\pokemon.cpp
"Pokemon.h"
1180744586 source:h:\ben\programming\pc\pokegen\src\pokemod\pokemonevolution.cpp
"PokemonEvolution.h"
-1180800841 source:h:\ben\programming\pc\pokegen\src\pokemod\status.cpp
+1180890334 source:h:\ben\programming\pc\pokegen\src\pokemod\status.cpp
"Status.h"
-1180744578 source:h:\ben\programming\pc\pokegen\src\pokemod\tile.cpp
+1180847656 source:h:\ben\programming\pc\pokegen\src\pokemod\tile.cpp
"Tile.h"
+1180846358 source:h:\ben\programming\pc\pokegen\src\pokemod\map.cpp
+ "Map.h"
+
diff --git a/pokegen.layout b/pokegen.layout
index 964923fd..d6bff811 100644
--- a/pokegen.layout
+++ b/pokegen.layout
@@ -1,310 +1,175 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
- <ActiveTarget name="pokemod-DLL" />
- <File name="Changelog" open="1" top="1" tabpos="1">
- <Cursor position="603" topLine="0" />
+ <ActiveTarget name="pokemodr" />
+ <File name="Changelog" open="1" top="0" tabpos="1">
+ <Cursor position="293" topLine="0" />
</File>
<File name="Hat.h" open="0" top="0" tabpos="4">
- <Cursor position="2478" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="STANDARDS" open="0" top="0" tabpos="0">
<Cursor position="2" topLine="0" />
</File>
- <File name="ai\Layer.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1261" topLine="21" />
- </File>
- <File name="ai\Layer.h" open="0" top="0" tabpos="0">
- <Cursor position="1287" topLine="0" />
- </File>
- <File name="ai\Net.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1949" topLine="17" />
- </File>
- <File name="ai\Net.h" open="0" top="0" tabpos="0">
- <Cursor position="1255" topLine="0" />
- </File>
- <File name="ai\Node.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1767" topLine="30" />
- </File>
- <File name="ai\Node.h" open="0" top="0" tabpos="0">
- <Cursor position="1408" topLine="0" />
- </File>
<File name="pokemod\Ability.cpp" open="0" top="0" tabpos="2">
- <Cursor position="1886" topLine="35" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Ability.h" open="0" top="0" tabpos="3">
- <Cursor position="0" topLine="30" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\AbilityEffect.cpp" open="0" top="0" tabpos="3">
- <Cursor position="30704" topLine="1035" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\AbilityEffect.h" open="0" top="0" tabpos="3">
<Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Author.cpp" open="0" top="0" tabpos="4">
- <Cursor position="3204" topLine="81" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Author.h" open="0" top="0" tabpos="5">
- <Cursor position="1559" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Badge.cpp" open="0" top="0" tabpos="6">
- <Cursor position="2268" topLine="47" />
- </File>
- <File name="pokemod\Badge.h" open="0" top="0" tabpos="7">
- <Cursor position="2455" topLine="0" />
- </File>
- <File name="pokemod\CoinItem.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3792" topLine="125" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\CoinItem.h" open="0" top="0" tabpos="0">
- <Cursor position="1846" topLine="0" />
+ <File name="pokemod\Badge.h" open="1" top="0" tabpos="8">
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\CoinList.cpp" open="0" top="0" tabpos="3">
- <Cursor position="3309" topLine="108" />
- </File>
- <File name="pokemod\CoinList.h" open="0" top="0" tabpos="0">
- <Cursor position="2130" topLine="33" />
- </File>
- <File name="pokemod\Debug.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1588" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Debug.h" open="0" top="0" tabpos="4">
- <Cursor position="12661" topLine="230" />
+ <Cursor position="5897" topLine="125" />
</File>
- <File name="pokemod\Dialog.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2070" topLine="57" />
- </File>
- <File name="pokemod\Dialog.h" open="0" top="0" tabpos="0">
- <Cursor position="1869" topLine="23" />
- </File>
- <File name="pokemod\EggGroup.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2428" topLine="49" />
- </File>
- <File name="pokemod\EggGroup.h" open="0" top="0" tabpos="0">
- <Cursor position="1603" topLine="8" />
+ <File name="pokemod\Dialog.cpp" open="1" top="0" tabpos="3">
+ <Cursor position="3691" topLine="113" />
</File>
<File name="pokemod\Flag.cpp" open="0" top="0" tabpos="8">
- <Cursor position="2661" topLine="69" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Flag.h" open="0" top="0" tabpos="9">
- <Cursor position="1439" topLine="20" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Frac.cpp" open="0" top="0" tabpos="10">
- <Cursor position="1415" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Frac.h" open="0" top="0" tabpos="11">
- <Cursor position="1432" topLine="23" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Ini.cpp" open="0" top="0" tabpos="3">
- <Cursor position="1244" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Ini.h" open="0" top="0" tabpos="12">
- <Cursor position="2420" topLine="24" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Item.cpp" open="0" top="0" tabpos="2">
- <Cursor position="3515" topLine="121" />
- </File>
- <File name="pokemod\Item.h" open="0" top="0" tabpos="0">
- <Cursor position="2719" topLine="0" />
- </File>
- <File name="pokemod\ItemEffect.cpp" open="0" top="0" tabpos="0">
- <Cursor position="22095" topLine="808" />
- </File>
- <File name="pokemod\ItemEffect.h" open="0" top="0" tabpos="0">
- <Cursor position="1910" topLine="0" />
- </File>
- <File name="pokemod\ItemStorage.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2795" topLine="61" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\ItemStorage.h" open="0" top="0" tabpos="0">
- <Cursor position="1851" topLine="21" />
+ <File name="pokemod\ItemEffect.cpp" open="1" top="0" tabpos="4">
+ <Cursor position="1551" topLine="6" />
</File>
<File name="pokemod\Map.cpp" open="0" top="0" tabpos="0">
- <Cursor position="18563" topLine="169" />
+ <Cursor position="14951" topLine="440" />
</File>
<File name="pokemod\Map.h" open="0" top="0" tabpos="3">
- <Cursor position="1433" topLine="17" />
- </File>
- <File name="pokemod\MapEffect.cpp" open="0" top="0" tabpos="0">
- <Cursor position="5749" topLine="171" />
- </File>
- <File name="pokemod\MapEffect.h" open="0" top="0" tabpos="0">
- <Cursor position="1222" topLine="6" />
- </File>
- <File name="pokemod\MapTrainer.cpp" open="0" top="0" tabpos="0">
- <Cursor position="6636" topLine="171" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\MapTrainer.h" open="0" top="0" tabpos="0">
- <Cursor position="4379" topLine="0" />
+ <File name="pokemod\MapEffect.cpp" open="1" top="0" tabpos="5">
+ <Cursor position="2024" topLine="36" />
</File>
<File name="pokemod\MapTrainerTeam.cpp" open="0" top="0" tabpos="3">
- <Cursor position="4100" topLine="101" />
- </File>
- <File name="pokemod\MapTrainerTeam.h" open="0" top="0" tabpos="0">
- <Cursor position="2547" topLine="0" />
- </File>
- <File name="pokemod\MapWarp.cpp" open="0" top="0" tabpos="0">
- <Cursor position="4487" topLine="121" />
- </File>
- <File name="pokemod\MapWarp.h" open="0" top="0" tabpos="0">
- <Cursor position="1215" topLine="14" />
- </File>
- <File name="pokemod\MapWildList.cpp" open="0" top="0" tabpos="2">
- <Cursor position="2667" topLine="82" />
- </File>
- <File name="pokemod\MapWildList.h" open="0" top="0" tabpos="0">
- <Cursor position="2554" topLine="44" />
- </File>
- <File name="pokemod\MapWildPokemon.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3527" topLine="101" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\MapWildPokemon.h" open="0" top="0" tabpos="0">
- <Cursor position="1872" topLine="0" />
+ <File name="pokemod\MapWildList.cpp" open="0" top="0" tabpos="6">
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Matrix.h" open="0" top="0" tabpos="4">
- <Cursor position="2666" topLine="55" />
+ <Cursor position="3854" topLine="92" />
</File>
- <File name="pokemod\Move.cpp" open="0" top="0" tabpos="4">
- <Cursor position="3164" topLine="92" />
+ <File name="pokemod\Move.cpp" open="1" top="0" tabpos="10">
+ <Cursor position="3304" topLine="90" />
</File>
<File name="pokemod\Move.h" open="0" top="0" tabpos="2">
- <Cursor position="4151" topLine="29" />
- </File>
- <File name="pokemod\MoveEffect.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3888" topLine="106" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\MoveEffect.h" open="0" top="0" tabpos="0">
- <Cursor position="2752" topLine="19" />
+ <File name="pokemod\MoveEffect.cpp" open="1" top="0" tabpos="6">
+ <Cursor position="2008" topLine="41" />
</File>
<File name="pokemod\Nature.cpp" open="0" top="0" tabpos="5">
- <Cursor position="3151" topLine="105" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Nature.h" open="0" top="0" tabpos="4">
- <Cursor position="1883" topLine="29" />
- </File>
- <File name="pokemod\NatureEffect.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2713" topLine="54" />
- </File>
- <File name="pokemod\NatureEffect.h" open="0" top="0" tabpos="0">
- <Cursor position="1331" topLine="0" />
- </File>
- <File name="pokemod\Object.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1410" topLine="0" />
- </File>
- <File name="pokemod\Object.h" open="0" top="0" tabpos="0">
- <Cursor position="1532" topLine="24" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Path.cpp" open="0" top="0" tabpos="17">
- <Cursor position="1503" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Path.h" open="0" top="0" tabpos="18">
- <Cursor position="1389" topLine="11" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Point.cpp" open="0" top="0" tabpos="19">
- <Cursor position="1836" topLine="17" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\Point.h" open="0" top="0" tabpos="20">
- <Cursor position="1700" topLine="25" />
- </File>
- <File name="pokemod\Pokemod.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1204" topLine="0" />
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\Pokemod.h" open="0" top="0" tabpos="0">
- <Cursor position="1347" topLine="5" />
+ <File name="pokemod\Pokemod.cpp" open="1" top="0" tabpos="11">
+ <Cursor position="2834" topLine="69" />
</File>
- <File name="pokemod\Pokemon.cpp" open="0" top="0" tabpos="0">
- <Cursor position="9240" topLine="282" />
+ <File name="pokemod\Pokemod.h" open="0" top="0" tabpos="13">
+ <Cursor position="7750" topLine="180" />
</File>
- <File name="pokemod\Pokemon.h" open="0" top="0" tabpos="4">
- <Cursor position="5952" topLine="107" />
+ <File name="pokemod\Pokemon.cpp" open="0" top="0" tabpos="9">
+ <Cursor position="0" topLine="0" />
</File>
- <File name="pokemod\PokemonAbility.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3045" topLine="62" />
+ <File name="pokemod\Pokemon.h" open="1" top="0" tabpos="9">
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\PokemonAbility.h" open="0" top="0" tabpos="0">
<Cursor position="1961" topLine="18" />
</File>
- <File name="pokemod\PokemonEvolution.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3734" topLine="87" />
- </File>
<File name="pokemod\PokemonEvolution.h" open="0" top="0" tabpos="0">
<Cursor position="1946" topLine="16" />
</File>
- <File name="pokemod\PokemonItem.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3005" topLine="62" />
- </File>
<File name="pokemod\PokemonItem.h" open="0" top="0" tabpos="0">
<Cursor position="1821" topLine="13" />
</File>
- <File name="pokemod\PokemonMove.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3401" topLine="74" />
- </File>
<File name="pokemod\PokemonMove.h" open="0" top="0" tabpos="0">
<Cursor position="1975" topLine="20" />
</File>
- <File name="pokemod\PokemonNature.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3004" topLine="62" />
- </File>
<File name="pokemod\PokemonNature.h" open="0" top="0" tabpos="0">
<Cursor position="1951" topLine="15" />
</File>
<File name="pokemod\Ref.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1208" topLine="0" />
+ <Cursor position="1375" topLine="0" />
</File>
<File name="pokemod\Ref.h" open="0" top="0" tabpos="3">
- <Cursor position="13335" topLine="420" />
- </File>
- <File name="pokemod\Status.cpp" open="0" top="0" tabpos="0">
- <Cursor position="8271" topLine="227" />
+ <Cursor position="8168" topLine="254" />
</File>
- <File name="pokemod\Status.h" open="0" top="0" tabpos="0">
- <Cursor position="1322" topLine="0" />
+ <File name="pokemod\Status.cpp" open="0" top="0" tabpos="10">
+ <Cursor position="956" topLine="0" />
</File>
- <File name="pokemod\StatusEffect.cpp" open="0" top="0" tabpos="0">
- <Cursor position="3179" topLine="79" />
+ <File name="pokemod\StatusEffect.cpp" open="1" top="0" tabpos="7">
+ <Cursor position="1899" topLine="29" />
</File>
<File name="pokemod\StatusEffect.h" open="0" top="0" tabpos="0">
<Cursor position="156" topLine="0" />
</File>
- <File name="pokemod\Store.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2893" topLine="94" />
- </File>
<File name="pokemod\Store.h" open="0" top="0" tabpos="5">
- <Cursor position="1862" topLine="42" />
- </File>
- <File name="pokemod\String.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1348" topLine="18" />
+ <Cursor position="0" topLine="0" />
</File>
<File name="pokemod\String.h" open="0" top="0" tabpos="0">
<Cursor position="1866" topLine="20" />
</File>
- <File name="pokemod\TODO" open="1" top="0" tabpos="2">
- <Cursor position="544" topLine="9" />
- </File>
- <File name="pokemod\Tile.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2351" topLine="67" />
+ <File name="pokemod\TODO" open="1" top="1" tabpos="2">
+ <Cursor position="628" topLine="0" />
</File>
<File name="pokemod\Tile.h" open="0" top="0" tabpos="3">
<Cursor position="1207" topLine="0" />
</File>
- <File name="pokemod\Time.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2992" topLine="72" />
- </File>
<File name="pokemod\Time.h" open="0" top="0" tabpos="0">
<Cursor position="1809" topLine="23" />
</File>
- <File name="pokemod\Type.cpp" open="0" top="0" tabpos="0">
- <Cursor position="2353" topLine="50" />
- </File>
<File name="pokemod\Type.h" open="0" top="0" tabpos="0">
<Cursor position="1739" topLine="23" />
</File>
- <File name="pokemod\pokemod_inc.h" open="0" top="0" tabpos="0">
- <Cursor position="2008" topLine="32" />
- </File>
- <File name="pokemodr\PokeModr.cpp" open="0" top="0" tabpos="0">
- <Cursor position="1524" topLine="23" />
- </File>
- <File name="pokemodr\PokeModrDebug.h" open="0" top="0" tabpos="0">
- <Cursor position="202" topLine="0" />
- </File>
</CodeBlocks_layout_file>
diff --git a/pokemod/Ability.cpp b/pokemod/Ability.cpp
index 102348c8..01396882 100644
--- a/pokemod/Ability.cpp
+++ b/pokemod/Ability.cpp
@@ -25,7 +25,7 @@
#include "Ability.h"
PokeGen::PokeMod::Ability::Ability(const unsigned _id) :
- name("")
+ name("")
{
LogCtor("Ability", id);
id = _id;
@@ -47,22 +47,38 @@ PokeGen::PokeMod::Ability::~Ability()
void PokeGen::PokeMod::Ability::Validate()
{
LogValidateStart("Ability", id, name);
- // Make sure the name is set to something
if (name == "")
{
- LogVarNotSet("Ability", id, "Name", name);
+ LogVarNotSet("Ability", id, "name");
isValid = false;
}
- // Check if there are any effects defined
if (GetAbilityEffectCount())
{
- // Validate each effect
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
for (std::vector<AbilityEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Ability", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the ability
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Ability", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Ability", id, "effect", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -77,23 +93,41 @@ void PokeGen::PokeMod::Ability::Validate()
void PokeGen::PokeMod::Ability::Validate(const wxListBox &output)
{
LogValidateStart("Ability", id, name);
- // Make sure the name is set to something
if (name == "")
{
- LogVarNotSet("Ability", id, "Name", name);
- output.Append(ConsoleLogVarNotSet("Ability", id, "Name", name));
+ LogVarNotSet("Ability", id, "name");
+ output.Append(ConsoleLogVarNotSet("Ability", id, "name"));
isValid = false;
}
- // Check if there are any effects defined
if (GetAbilityEffectCount())
{
- // Validate each effect
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
for (std::vector<AbilityEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Ability", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the ability
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Ability", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Ability", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Ability", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Ability", id, "effect", i->first, name));
+ isValid = false;
+ }
}
}
else
@@ -112,7 +146,6 @@ void PokeGen::PokeMod::Ability::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Ability");
}
@@ -126,7 +159,6 @@ void PokeGen::PokeMod::Ability::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Ability::ExportIni(std::ofstream &fout) const
{
LogExportStart("Ability", id, name);
- // Make elements
Ini exAbility("ability");
exAbility.AddField("id", id);
exAbility.AddField("name", name);
@@ -169,7 +201,6 @@ unsigned PokeGen::PokeMod::Ability::GetAbilityEffectCount() const
void PokeGen::PokeMod::Ability::NewAbilityEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetAbilityEffectCount(); ++i)
{
if (!GetAbilityEffect(i))
diff --git a/pokemod/AbilityEffect.cpp b/pokemod/AbilityEffect.cpp
index 7c50fdc8..2247c37e 100644
--- a/pokemod/AbilityEffect.cpp
+++ b/pokemod/AbilityEffect.cpp
@@ -26,14 +26,14 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::AbilityEffect::AbilityEffect(const unsigned _id) :
- chance(1, 1),
- effect(UINT_MAX),
- val1(UINT_MAX),
- val2(UINT_MAX),
- val3(UINT_MAX),
- trigger(UINT_MAX),
- tval1(UINT_MAX),
- tval2(UINT_MAX)
+ chance(1, 1),
+ effect(UINT_MAX),
+ val1(UINT_MAX),
+ val2(UINT_MAX),
+ val3(UINT_MAX),
+ trigger(UINT_MAX),
+ tval1(UINT_MAX),
+ tval2(UINT_MAX)
{
LogCtor("AbilityEffect", _id);
id = _id;
@@ -226,7 +226,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (AE_END <= effect)
{
LogVarNotValid("AbilityEffect", id, "effect");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "effect"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "effect"));
isValid = false;
}
else
@@ -237,7 +237,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if ((BST_END <= val1) || ((val1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -245,7 +245,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (!curPokeMod.GetStatus(val1))
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -253,7 +253,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (!curPokeMod.GetAbility(val1))
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -261,7 +261,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (PA_END <= val1)
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -269,7 +269,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (ABIT_END <= val1)
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -277,7 +277,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (!curPokeMod.GetType(val1))
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
break;
@@ -285,7 +285,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (W_END_ALL <= val1)
{
LogVarNotValid("AbilityEffect", id, "val1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val1"));
isValid = false;
}
}
@@ -295,7 +295,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (BM_END <= val2)
{
LogVarNotValid("AbilityEffect", id, "val2");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
isValid = false;
}
break;
@@ -304,7 +304,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (CA_END <= val2)
{
LogVarNotValid("AbilityEffect", id, "val2");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
isValid = false;
}
break;
@@ -312,7 +312,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (ABI_END <= val2)
{
LogVarNotValid("AbilityEffect", id, "val2");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
isValid = false;
}
break;
@@ -320,7 +320,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (BO_END <= val2)
{
LogVarNotValid("AbilityEffect", id, "val2");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val2"));
isValid = false;
}
}
@@ -337,7 +337,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if ((val3 < 0) || (100 < val3))
{
LogVarNotValid("AbilityEffect", id, "val3");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
isValid = false;
}
break;
@@ -345,7 +345,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if ((val3 < -6) || (6 < val3))
{
LogVarNotValid("AbilityEffect", id, "val3");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "val3"));
isValid = false;
}
}
@@ -353,7 +353,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (AT_END <= trigger)
{
LogVarNotValid("AbilityEffect", id, "trigger");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "trigger"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "trigger"));
isValid = false;
}
else
@@ -364,7 +364,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (W_END_ALL <= tval1)
{
LogVarNotValid("AbilityEffect", id, "tVal1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
isValid = false;
}
break;
@@ -372,7 +372,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (!curPokeMod.GetType(tval1))
{
LogVarNotValid("AbilityEffect", id, "tVal1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
isValid = false;
}
break;
@@ -380,7 +380,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (SI_END <= tval1)
{
LogVarNotValid("AbilityEffect", id, "tVal1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
isValid = false;
}
break;
@@ -388,7 +388,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if ((BST_END <= tval1) || ((tval1 == BST_SPECIAL_DEFENSE) && !curPokeMod.IsSpecialSplit()))
{
LogVarNotValid("AbilityEffect", id, "tVal1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
isValid = false;
}
break;
@@ -396,7 +396,7 @@ void PokeGen::PokeMod::AbilityEffect::Validate(const wxListBox &output)
if (!curPokeMod.GetStatus(tval1))
{
LogVarNotValid("AbilityEffect", id, "tVal1");
- output.append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
+ output.Append(OutputLogVarNotValid("AbilityEffect", id, "tVal1"));
isValid = false;
}
}
@@ -412,7 +412,6 @@ void PokeGen::PokeMod::AbilityEffect::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("AbilityEffect");
}
@@ -438,8 +437,7 @@ void PokeGen::PokeMod::AbilityEffect::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::AbilityEffect::ExportIni(std::ofstream &fout, const String &ability) const
{
LogExportStart("AbilityEffect", id);
- // Make elements
- Ini exAbilityEffect(ability + " abilityEffect");
+ Ini exAbilityEffect("abilityEffect " + ability);
exAbilityEffect.AddField("id", id);
exAbilityEffect.AddField("chance-n", chance.GetNum());
exAbilityEffect.AddField("chance-d", chance.GetDenom());
diff --git a/pokemod/Author.cpp b/pokemod/Author.cpp
index fadd0893..20d34db3 100644
--- a/pokemod/Author.cpp
+++ b/pokemod/Author.cpp
@@ -24,9 +24,9 @@
#include "Author.h"
PokeGen::PokeMod::Author::Author(const unsigned _id) :
- name(""),
- email(""),
- role("")
+ name(""),
+ email(""),
+ role("")
{
LogCtor("Author", id);
id = _id;
@@ -96,158 +96,158 @@ void PokeGen::PokeMod::Author::Validate(const wxListBox &output)
LogValNotSet("Author", "role", id, name);
output.Append(ConsoleLogValNotSet("Author", "role", id, name)));
isValid = false;
- }
- LogValidateOver("Author", isValid, id, name);
-}
+ }
+ LogValidateOver("Author", isValid, id, name);
+ }
#endif
-
-void PokeGen::PokeMod::Author::ImportIni(Ini &ini, const unsigned _id)
-{
- LogImportStart("Author");
- String curName;
- if (_id == UINT_MAX)
- {
- ini.GetValue("id", id);
- if (id == UINT_MAX)
- LogIdNotFound("Author");
- }
- else
- id = _id;
- ini.GetValue("name", name);
- ini.GetValue("email", email);
- ini.GetValue("role", role);
- LogImportOver("Author", id, name);
-}
-
-void PokeGen::PokeMod::Author::ExportIni(std::ofstream &fout) const
-{
- LogExportStart("Author", id, name);
- // Declare the elements
- Ini exAuthor("author");
- exAuthor.AddField("id", id);
- exAuthor.AddField("name", name);
- exAuthor.AddField("email", email);
- exAuthor.AddField("role", role);
- exAuthor.Export(fout);
- LogExportOver("Author", id, name);
-}
-
-void PokeGen::PokeMod::Author::SetName(const String &n)
-{
- LogSetVar("Author", id, "name", n, name);
- name = n;
-}
-
-void PokeGen::PokeMod::Author::SetEmail(const String &e)
-{
- LogSetVar("Author", id, "email", e, name);
- email = e;
-}
-
-void PokeGen::PokeMod::Author::SetRole(const String &r)
-{
- LogSetVar("Author", id, "role", r, name);
- role = r;
-}
-
-PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetName() const
-{
- LogFetchVar("Author", id, "name", name);
- return name;
-}
-
-PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetEmail() const
-{
- LogFetchVar("Author", id, "email", email, name);
- return email;
-}
-
-PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetRole() const
-{
- LogFetchVar("Author", id, "role", role, name);
- return role;
-}
-
-bool PokeGen::PokeMod::Author::IsValidEmail() const
-{
- bool valid = true;
- Log(String("Author: Validating email of %d (%s)", id, name.c_str()), PM_DEBUG_DEBUG);
- EmailCheck stage = EM_NAME;
- int count = 0;
- for (unsigned i = 0; (i < email.length()) && valid; ++i)
- {
- switch (stage)
- {
- case EM_NAME:
- switch (email[i])
- {
- // Only allow alphanumerics and '%-_.' in the name
- case 'a' ... 'z':
- case 'A' ... 'Z':
- case '0' ... '9':
- case '%':
- case '-':
- case '_':
- case '.':
- ++count;
- break;
- // Move to the next part if '@' is encountered
- case '@':
- if (!count)
- valid = false;
- count = 0;
- stage = EM_HOST;
- break;
- // Not valid if anything else is encountered
- default:
- valid = false;
- }
- break;
- case EM_HOST:
- switch (email[i])
- {
- // Only allow alphanumerics and '%-_.' in the host
- case 'a' ... 'z':
- case 'A' ... 'Z':
- case '0' ... '9':
- case '-':
- ++count;
- break;
- // Move to the next part if '.' is encountered
- case '.':
- if (!count)
- valid = false;
- count = 0;
- stage = EM_DOMAIN;
- break;
- // Not valid if anything else is encountered
- default:
- valid = false;
- }
- break;
- case EM_DOMAIN:
- switch (email[i])
- {
- // Only allow alphanumerics and '%-_.' in the host
- case 'a' ... 'z':
- case 'A' ... 'Z':
- ++count;
- break;
- // Move to the next domain extension if '.' is encountered
- case '.':
- if (!count)
- valid = false;
- count = 0;
- break;
- // Not valid if anything else is encountered
- default:
- valid = false;
- }
- }
- }
- // Make sure the domain was entered and the extension is in the valid range
- if ((stage != EM_DOMAIN) || (count < 2) || (4 < count))
- valid = false;
- Log(String("Author: Validated email of %d (%s) as %s", id, name.c_str(), valid ? "valid" : "invalid"), PM_DEBUG_DEBUG);
- return valid;
-}
+
+ void PokeGen::PokeMod::Author::ImportIni(Ini &ini, const unsigned _id)
+ {
+ LogImportStart("Author");
+ String curName;
+ if (_id == UINT_MAX)
+ {
+ ini.GetValue("id", id);
+ if (id == UINT_MAX)
+ LogIdNotFound("Author");
+ }
+ else
+ id = _id;
+ ini.GetValue("name", name);
+ ini.GetValue("email", email);
+ ini.GetValue("role", role);
+ LogImportOver("Author", id, name);
+ }
+
+ void PokeGen::PokeMod::Author::ExportIni(std::ofstream &fout) const
+ {
+ LogExportStart("Author", id, name);
+ Ini exAuthor("author");
+ exAuthor.AddField("id", id);
+ exAuthor.AddField("name", name);
+ exAuthor.AddField("email", email);
+ exAuthor.AddField("role", role);
+ exAuthor.Export(fout);
+ LogExportOver("Author", id, name);
+ }
+
+ void PokeGen::PokeMod::Author::SetName(const String &n)
+ {
+ LogSetVar("Author", id, "name", n, name);
+ name = n;
+ }
+
+ void PokeGen::PokeMod::Author::SetEmail(const String &e)
+ {
+ LogSetVar("Author", id, "email", e, name);
+ email = e;
+ }
+
+ void PokeGen::PokeMod::Author::SetRole(const String &r)
+ {
+ LogSetVar("Author", id, "role", r, name);
+ role = r;
+ }
+
+ PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetName() const
+ {
+ LogFetchVar("Author", id, "name", name);
+ return name;
+ }
+
+ PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetEmail() const
+ {
+ LogFetchVar("Author", id, "email", email, name);
+ return email;
+ }
+
+ PokeGen::PokeMod::String PokeGen::PokeMod::Author::GetRole() const
+ {
+ LogFetchVar("Author", id, "role", role, name);
+ return role;
+ }
+
+ bool PokeGen::PokeMod::Author::IsValidEmail() const
+ {
+ bool valid = true;
+ Log(String("Author: Validating email of %d (%s)", id, name.c_str()), PM_DEBUG_DEBUG);
+ EmailCheck stage = EM_NAME;
+ int count = 0;
+ for (unsigned i = 0; (i < email.length()) && valid; ++i)
+ {
+ switch (stage)
+ {
+ case EM_NAME:
+ switch (email[i])
+ {
+ // Only allow alphanumerics and '%-_.' in the name
+ case 'a' ... 'z':
+ case 'A' ... 'Z':
+ case '0' ... '9':
+ case '%':
+ case '-':
+ case '_':
+ case '.':
+ ++count;
+ break;
+ // Move to the next part if '@' is encountered
+ case '@':
+ if (!count)
+ valid = false;
+ count = 0;
+ stage = EM_HOST;
+ break;
+ // Not valid if anything else is encountered
+ default:
+ valid = false;
+ }
+ break;
+ case EM_HOST:
+ switch (email[i])
+ {
+ // Only allow alphanumerics and '%-_.' in the host
+ case 'a' ... 'z':
+ case 'A' ... 'Z':
+ case '0' ... '9':
+ case '-':
+ ++count;
+ break;
+ // Move to the next part if '.' is encountered
+ case '.':
+ if (!count)
+ valid = false;
+ count = 0;
+ stage = EM_DOMAIN;
+ break;
+ // Not valid if anything else is encountered
+ default:
+ valid = false;
+ }
+ break;
+ case EM_DOMAIN:
+ switch (email[i])
+ {
+ // Only allow alphanumerics and '%-_.' in the host
+ case 'a' ... 'z':
+ case 'A' ... 'Z':
+ ++count;
+ break;
+ // Move to the next domain extension if '.' is encountered
+ case '.':
+ if (!count)
+ valid = false;
+ count = 0;
+ break;
+ // Not valid if anything else is encountered
+ default:
+ valid = false;
+ }
+ }
+ }
+ // Make sure the domain was entered and the extension is in the valid range
+ if ((stage != EM_DOMAIN) || (count < 2) || (4 < count))
+ valid = false;
+ Log(String("Author: Validated email of %d (%s) as %s", id, name.c_str(), valid ? "valid" : "invalid"), PM_DEBUG_DEBUG);
+ return valid;
+ }
+
diff --git a/pokemod/Author.h b/pokemod/Author.h
index 33ebb39e..dacdb900 100644
--- a/pokemod/Author.h
+++ b/pokemod/Author.h
@@ -59,7 +59,7 @@ namespace PokeGen
EM_NAME = 0,
EM_HOST = 1,
EM_DOMAIN = 2
- };
+ };
bool IsValidEmail() const;
diff --git a/pokemod/Badge.cpp b/pokemod/Badge.cpp
index 3b99508d..70911bc9 100644
--- a/pokemod/Badge.cpp
+++ b/pokemod/Badge.cpp
@@ -27,10 +27,10 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Badge::Badge(const unsigned _id) :
- name(""),
- face(""),
- badge(""),
- obey(0)
+ name(""),
+ face(""),
+ badge(""),
+ obey(0)
{
LogCtor("Badge", _id);
for (unsigned i = 0; i < STH_END_GSC; ++i)
@@ -130,15 +130,14 @@ void PokeGen::PokeMod::Badge::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Badge");
}
else
id = _id;
- ini.GetValue("name", name, "");
- ini.GetValue("face", face, "");
- ini.GetValue("badge", badge, "");
+ ini.GetValue("name", name);
+ ini.GetValue("face", face);
+ ini.GetValue("badge", badge);
ini.GetValue("obey", obey, 0);
for (int i = 0; i < STH_END_GSC; ++i)
{
diff --git a/pokemod/CoinItem.cpp b/pokemod/CoinItem.cpp
index db7e560d..726234bd 100644
--- a/pokemod/CoinItem.cpp
+++ b/pokemod/CoinItem.cpp
@@ -26,10 +26,10 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::CoinItem::CoinItem(const unsigned _id) :
- type(CIT_ITEM),
- object(UINT_MAX),
- amount(1),
- cost(0)
+ type(CIT_ITEM),
+ object(UINT_MAX),
+ amount(1),
+ cost(0)
{
LogCtor("CoinItem", _id);
id = _id;
@@ -124,7 +124,6 @@ void PokeGen::PokeMod::CoinItem::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("CoinItem");
}
@@ -140,10 +139,9 @@ void PokeGen::PokeMod::CoinItem::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::CoinItem::ExportIni(std::ofstream &fout, const String &coinList) const
{
LogExportStart("CoinItem", id);
- // Make elements
- Ini exCoinItem(coinList + " CoinItem");
+ Ini exCoinItem("coinItem " + coinList);
exCoinItem.AddField("id", id);
- exCoinItem.AddField("type",type);
+ exCoinItem.AddField("type", type);
exCoinItem.AddField("object", object);
exCoinItem.AddField("amount", amount);
exCoinItem.AddField("cost", cost);
diff --git a/pokemod/CoinList.cpp b/pokemod/CoinList.cpp
index 08bc019d..5a3c3fc2 100644
--- a/pokemod/CoinList.cpp
+++ b/pokemod/CoinList.cpp
@@ -27,8 +27,8 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::CoinList::CoinList(const unsigned _id) :
- name(""),
- value(0)
+ name(""),
+ value(0)
{
LogCtor("CoinList", _id);
id = _id;
@@ -57,11 +57,43 @@ void PokeGen::PokeMod::CoinList::Validate()
}
if (GetCoinItemCount())
{
- for (unsigned i = 0; i < GetCoinItemCount(); ++i)
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> itemChecker;
+ std::map<String, unsigned> pokemonChecker;
+ for (std::vector<CoinItem>::iterator i = items.begin(); i != items.end(); ++i)
{
- LogSubmoduleIterate("CoinList", id, "item", i, name);
- if (!items[i].IsValid())
+ LogSubmoduleIterate("CoinList", id, "item", i->GetId(), name);
+ if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ if (i->GetType() == CIT_ITEM)
+ ++itemChecker[i->GetObjectString()];
+ else if (i->GetType() == CIT_POKEMON)
+ ++pokemonChecker[i->GetObjectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("CoinList", id, "coin item", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = itemChecker.begin(); i != itemChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("CoinList", id, "item", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = pokemonChecker.begin(); i != pokemonChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("CoinList", id, "Pokémon", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -84,11 +116,46 @@ void PokeGen::PokeMod::CoinList::Validate(const wxListBox &output)
}
if (GetCoinItemCount())
{
- for (unsigned i = 0; i < GetCoinItemCount(); ++i)
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> itemChecker;
+ std::map<String, unsigned> pokemonChecker;
+ for (std::vector<CoinItem>::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ LogSubmoduleIterate("CoinList", id, "item", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ if (i->GetType() == CIT_ITEM)
+ ++itemChecker[i->GetObjectString()];
+ else if (i->GetType() == CIT_POKEMON)
+ ++pokemonChecker[i->GetObjectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("CoinList", id, "coin item", i->first, name);
+ output.Append(ConsoleLogDuplicateId("CoinList", id, "coin item", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = itemChecker.begin(); i != itemChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("CoinList", id, "item", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("CoinList", id, "item", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = pokemonChecker.begin(); i != pokemonChecker.end(); ++i)
{
- LogSubmoduleIterate("CoinList", id, "item", i, name);
- if (!items[i].IsValid())
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("CoinList", id, "Pokémon", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("CoinList", id, "Pokémon", i->first, name));
isValid = false;
+ }
}
}
else
@@ -107,7 +174,6 @@ void PokeGen::PokeMod::CoinList::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("CoinList");
}
@@ -122,7 +188,6 @@ void PokeGen::PokeMod::CoinList::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::CoinList::ExportIni(std::ofstream &fout) const
{
LogExportStart("CoinList", id, name);
- // Make elements
Ini exCoinList("coinList");
exCoinList.AddField("id", id);
exCoinList.AddField("name", name);
@@ -190,7 +255,6 @@ unsigned PokeGen::PokeMod::CoinList::GetCoinItemCount() const
void PokeGen::PokeMod::CoinList::NewCoinItem(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetCoinItemCount(); ++i)
{
if (!GetCoinItem(i))
diff --git a/pokemod/CoinList.h b/pokemod/CoinList.h
index b9016cb0..d31489ce 100644
--- a/pokemod/CoinList.h
+++ b/pokemod/CoinList.h
@@ -26,6 +26,7 @@
#define __POKEMOD_COINLIST__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Pokemod.h"
@@ -50,7 +51,7 @@ namespace PokeGen
String GetName() const;
unsigned GetValue() const;
-
+
const CoinItem *GetCoinItem(const unsigned _id) const;
const CoinItem *GetCoinItem(const String &n) const;
unsigned GetCoinItemCount() const;
diff --git a/pokemod/Debug.cpp b/pokemod/Debug.cpp
index 87a9b7e0..389c3138 100644
--- a/pokemod/Debug.cpp
+++ b/pokemod/Debug.cpp
@@ -31,7 +31,7 @@ extern debugWindow PokeModDebugWindow;
int PokeModDebugLevel;
-void PokeGen::PokeMod::Log(const char *msg, int level)
+void PokeGen::PokeMod::Log(const char *msg, const int level)
{
// Actual strings of the debugging levels
const char *PokeModDebugStr[8] = {"Emergency", "Alert", "Critical Error", "Error", "Warning", "Notice", "Info", "Debug"};
@@ -81,7 +81,7 @@ void PokeGen::PokeMod::Log(const char *msg, int level)
#else
// Empty function if debugging isn't wanted
-void PokeGen::PokeMod::Log(const String &msg, int level)
+void PokeGen::PokeMod::Log(const String &msg, const int level)
{
return;
}
diff --git a/pokemod/Debug.h b/pokemod/Debug.h
index 1cbbc685..b212426a 100644
--- a/pokemod/Debug.h
+++ b/pokemod/Debug.h
@@ -24,8 +24,6 @@
#ifndef __POKEMOD_DEBUG__
#define __POKEMOD_DEBUG__
-// TODO (Ben#1#): Comment logging functions
-
#define PM_DEBUG
#ifdef PM_DEBUG
@@ -385,6 +383,21 @@ namespace PokeGen
Log(String("%s: Failed to remove %s %s from %u%s", module, subName, subStr, id, name ? String(" (%s)", name).c_str() : ""), PM_DEBUG_ERROR);
}
+ inline void LogDuplicateId(const char *module, const unsigned id, const char *subName, const unsigned subId, const char *name = NULL)
+ {
+ Log(String("%s: Duplicate ID for %s of %u found in %u%s", module, subName, subId, id, name ? String(" (%s)", name).c_str() : ""), PM_DEBUG_ERROR);
+ }
+
+ inline void LogDuplicateSubmodule(const char *module, const unsigned id, const char *subName, const unsigned subVal, const char *name = NULL)
+ {
+ Log(String("%s: Duplicate %s of %u found in %u%s", module, subName, subVal, id, name ? String(" (%s)", name).c_str() : ""), PM_DEBUG_ERROR);
+ }
+
+ inline void LogDuplicateSubmodule(const char *module, const unsigned id, const char *subName, const char *subVal, const char *name = NULL)
+ {
+ Log(String("%s: Duplicate %s of %s found in %u%s", module, subName, subVal, id, name ? String(" (%s)", name).c_str() : ""), PM_DEBUG_ERROR);
+ }
+
/* inline void Log(const char *module, const unsigned id, const char *name = NULL)
{
Log(String("%s: ", module, id, name ? String(" (%s)", name).c_str() : ""), PM_DEBUG_);
diff --git a/pokemod/Dialog.cpp b/pokemod/Dialog.cpp
index c7677cf1..23f09e1b 100644
--- a/pokemod/Dialog.cpp
+++ b/pokemod/Dialog.cpp
@@ -26,7 +26,7 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Dialog::Dialog(const unsigned _id) :
- dialog("")
+ dialog("")
{
LogCtor("Dialog", _id);
id = _id;
@@ -53,6 +53,7 @@ void PokeGen::PokeMod::Dialog::Validate()
{
LogValidateStart("Dialog", id);
// TODO (Validation#1#): Dialog Validation
+# warning "Dialog Validation"
LogValidateOver("Dialog", id, isValid);
}
@@ -62,7 +63,6 @@ void PokeGen::PokeMod::Dialog::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Dialog");
}
@@ -75,7 +75,6 @@ void PokeGen::PokeMod::Dialog::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Dialog::ExportIni(std::ofstream &fout) const
{
LogExportStart("Dialog", id);
- // Make elements
Ini exDialog("dialog");
exDialog.AddField("id", id);
exDialog.AddField("dialog", dialog);
@@ -148,5 +147,5 @@ void PokeGen::PokeMod::Dialog::InsertDialogCommand(const unsigned cmd, const uns
void PokeGen::PokeMod::Dialog::InsertDialogCommand(const String &cmd, const unsigned pos)
{
- // TODO (Ben#1#): Dialog commands
+ InsertDialogCommand(FindIn(DC_END, cmd, DialogCommandStr), pos);
}
diff --git a/pokemod/EggGroup.cpp b/pokemod/EggGroup.cpp
index 5c77efab..8556fd77 100644
--- a/pokemod/EggGroup.cpp
+++ b/pokemod/EggGroup.cpp
@@ -24,7 +24,7 @@
#include "EggGroup.h"
PokeGen::PokeMod::EggGroup::EggGroup(const unsigned _id) :
- name("")
+ name("")
{
LogCtor("EggGroup", _id);
id = _id;
@@ -48,7 +48,7 @@ void PokeGen::PokeMod::EggGroup::Validate()
LogValidateStart("EggGroup", id, name);
if (name == "")
{
- LogVarNotSet("EggGroup", id, "name", name);
+ LogVarNotSet("EggGroup", id, "name");
isValid = false;
}
LogValidateOver("EggGroup", id, isValid, name);
@@ -87,7 +87,6 @@ void PokeGen::PokeMod::EggGroup::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::EggGroup::ExportIni(std::ofstream &fout) const
{
LogExportStart("EggGroup", id, name);
- // Declare the elements
Ini exType("eggGroup");
exType.AddField("id", id);
exType.AddField("name", name);
@@ -97,12 +96,12 @@ void PokeGen::PokeMod::EggGroup::ExportIni(std::ofstream &fout) const
void PokeGen::PokeMod::EggGroup::SetName(const String &n)
{
- LogSetVar("EggGroup", id, "name", n, name);
+ LogSetVar("EggGroup", id, "name", n);
name = n;
}
PokeGen::PokeMod::String PokeGen::PokeMod::EggGroup::GetName() const
{
- LogFetchVar("EggGroup", id, "name", name, name);
+ LogFetchVar("EggGroup", id, "name", name);
return name;
}
diff --git a/pokemod/Flag.cpp b/pokemod/Flag.cpp
index 2cff5267..e83e0bd5 100644
--- a/pokemod/Flag.cpp
+++ b/pokemod/Flag.cpp
@@ -24,8 +24,8 @@
#include "Flag.h"
PokeGen::PokeMod::Flag::Flag(const unsigned f, const unsigned s) :
- flag(f),
- status(0)
+ flag(f),
+ status(0)
{
LogCtor("Flag", 0);
}
@@ -48,7 +48,6 @@ void PokeGen::PokeMod::Flag::ImportIni(Ini &ini)
void PokeGen::PokeMod::Flag::ExportIni(std::ofstream &fout, const String &val) const
{
LogExportStart("Flag", 0);
- // Declare the elements
Ini exFlag(val);
exFlag.AddField("flag", flag);
exFlag.AddField("status", status);
@@ -77,7 +76,6 @@ void PokeGen::PokeMod::Flag::SetFlag(const unsigned f)
void PokeGen::PokeMod::Flag::SetStatus(const unsigned s)
{
LogSetVar("Flag", 0, "status", s);
- // Avoid errors
status = (s ? ((s > FV_UNSET) ? FV_SET : FV_IGNORE) : FV_UNSET);
}
diff --git a/pokemod/Frac.cpp b/pokemod/Frac.cpp
index 7d919f1b..9341e6a5 100644
--- a/pokemod/Frac.cpp
+++ b/pokemod/Frac.cpp
@@ -24,9 +24,9 @@
#include "Frac.h"
PokeGen::PokeMod::Frac::Frac(const bool i) :
- num(1),
- denom(1),
- improper(i)
+ num(1),
+ denom(1),
+ improper(i)
{
Log("Frac: Initializing", PM_DEBUG_DEBUG);
}
@@ -49,9 +49,7 @@ void PokeGen::PokeMod::Frac::ImportIni(Ini &ini)
void PokeGen::PokeMod::Frac::ExportIni(std::ofstream &fout, const String &val)
{
Log(String("Frac Export: Starting %u/%u as %s", num, denom, val.c_str()), PM_DEBUG_INFO);
- // Reduce fraction before storing
Reduce();
- // Declare the elements
Ini exFrac(val);
exFrac.AddField("num", num);
exFrac.AddField("denom", denom);
@@ -76,7 +74,6 @@ void PokeGen::PokeMod::Frac::Set(const unsigned n, const unsigned d, const bool
void PokeGen::PokeMod::Frac::SetNum(const unsigned n)
{
- // Make sure the numerator is less than the denominator if proper
if ((n <= denom) || improper)
{
Log(String("Frac: Setting numerator to %u (%u/%u)", n, n, denom), PM_DEBUG_DEBUG);
@@ -88,7 +85,6 @@ void PokeGen::PokeMod::Frac::SetNum(const unsigned n)
void PokeGen::PokeMod::Frac::SetDenom(const unsigned d)
{
- // Make sure the denominator isn't 0
if (d)
{
Log(String("Frac: Setting denominator to %u", d), PM_DEBUG_DEBUG);
@@ -96,7 +92,6 @@ void PokeGen::PokeMod::Frac::SetDenom(const unsigned d)
}
else
Log("Frac: Attempting to set denominator to 0", PM_DEBUG_DEBUG);
- // Set the numerator to less than the denominator if proper
if ((num <= denom) && !improper)
{
Log(String("Frac: Setting numerator to 1 after denominator reset to (%u)", d), PM_DEBUG_DEBUG);
@@ -138,10 +133,8 @@ float PokeGen::PokeMod::Frac::GetValue() const
void PokeGen::PokeMod::Frac::Reduce()
{
Log(String("Frac: Reducing %u/%u", num, denom), PM_DEBUG_DEBUG);
- // Iterate until i is greater than the square root on num
- for (unsigned i = 2; i * i <= num; ++i)
+ for (unsigned i = 2; i <= (num < denom ? num : denom); ++i)
{
- // Keep iterating while i is a factor of both
while (!((num % i) || (denom % i)))
{
num /= i;
diff --git a/pokemod/Ini.cpp b/pokemod/Ini.cpp
index af99da47..6fd7347f 100644
--- a/pokemod/Ini.cpp
+++ b/pokemod/Ini.cpp
@@ -24,7 +24,7 @@
#include "Ini.h"
PokeGen::PokeMod::Ini::Ini(const String &n) :
- name(n)
+ name(n)
{
}
diff --git a/pokemod/Ini.h b/pokemod/Ini.h
index 4539fee9..79b1c07f 100644
--- a/pokemod/Ini.h
+++ b/pokemod/Ini.h
@@ -64,7 +64,7 @@ namespace PokeGen
POS_FIELD = 0,
POS_VALUE = 1
};
-
+
bool Load(std::ifstream &file);
String name;
diff --git a/pokemod/Item.cpp b/pokemod/Item.cpp
index 7a2457d1..1e9d1c2c 100644
--- a/pokemod/Item.cpp
+++ b/pokemod/Item.cpp
@@ -26,11 +26,11 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Item::Item(const unsigned _id) :
- name(""),
- sellable(false),
- type(UINT_MAX),
- price(0),
- description("")
+ name(""),
+ sellable(false),
+ type(UINT_MAX),
+ price(0),
+ description("")
{
LogCtor("Item", _id);
id = _id;
@@ -64,11 +64,31 @@ void PokeGen::PokeMod::Item::Validate()
}
if (GetItemEffectCount())
{
- for (unsigned i = 0; i < GetItemEffectCount(); ++i)
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
+ for (std::vector<ItemEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
- LogSubmoduleIterate("Item", id, "effect", i, name);
- if (!effects[i].IsValid())
+ LogSubmoduleIterate("Item", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Item", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Item", id, "effect", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -97,11 +117,33 @@ void PokeGen::PokeMod::Item::Validate(const wxListBox &output)
}
if (GetItemEffectCount())
{
- for (unsigned i = 0; i < GetItemEffectCount(); ++i)
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
+ for (std::vector<ItemEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
+ {
+ LogSubmoduleIterate("Item", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Item", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Item", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
{
- LogSubmoduleIterate("Item", id, "effect", i, name);
- if (!effects[i].IsValid())
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Item", id, "effect", i->first, name);
+ output.Append(LogDuplicateSubmodule("Item", id, "effect", i->first, name));
isValid = false;
+ }
}
}
else
@@ -120,7 +162,6 @@ void PokeGen::PokeMod::Item::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Item");
}
@@ -249,7 +290,6 @@ unsigned PokeGen::PokeMod::Item::GetItemEffectCount() const
void PokeGen::PokeMod::Item::NewItemEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetItemEffectCount(); ++i)
{
if (!GetItemEffect(i))
diff --git a/pokemod/Item.h b/pokemod/Item.h
index c509fc53..82ad57bd 100644
--- a/pokemod/Item.h
+++ b/pokemod/Item.h
@@ -25,6 +25,7 @@
#define __POKEMOD_ITEM__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Pokemod.h"
@@ -57,7 +58,7 @@ namespace PokeGen
String GetTypeString() const;
unsigned GetPrice() const;
String GetDescription() const;
-
+
const ItemEffect *GetItemEffect(const unsigned _id) const;
unsigned GetItemEffectCount() const;
void NewItemEffect(Ini *const ini = NULL);
diff --git a/pokemod/ItemEffect.cpp b/pokemod/ItemEffect.cpp
index ecc3566a..61b5c674 100644
--- a/pokemod/ItemEffect.cpp
+++ b/pokemod/ItemEffect.cpp
@@ -25,18 +25,18 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
-PokeGen::PokeMod::ItemEffect::ItemEffect(const unsigned _id)
+PokeGen::PokeMod::ItemEffect::ItemEffect(const unsigned _id) :
+ overworld(false),
+ battle(false),
+ held(false),
+ effect(UINT_MAX),
+ val1(UINT_MAX),
+ val2(UINT_MAX),
+ val3(1, 1),
+ val4(UINT_MAX),
+ val5(UINT_MAX)
{
LogCtor("ItemEffect", _id);
- overworld = false;
- battle = false;
- held = false;
- effect = UINT_MAX;
- val1 = INT_MAX;
- val2 = INT_MAX;
- val3.Set(1, 1);
- val4 = UINT_MAX;
- val5 = UINT_MAX;
id = _id;
}
@@ -61,6 +61,7 @@ void PokeGen::PokeMod::ItemEffect::Validate()
{
LogValidateStart("ItemEffect", id);
// TODO (Validation#1#): ItemEffect Validation
+# warning "ItemEffect Validation"
LogValidateOver("ItemEffect", id, isValid);
}
@@ -70,7 +71,6 @@ void PokeGen::PokeMod::ItemEffect::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("ItemEffect");
}
@@ -95,7 +95,6 @@ void PokeGen::PokeMod::ItemEffect::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::ItemEffect::ExportIni(std::ofstream &fout, const String &item) const
{
LogExportStart("ItemEffect", id);
- // Make elements
Ini exItemEffect(item + " itemEffect");
exItemEffect.AddField("id", id);
exItemEffect.AddField("overworld", overworld);
@@ -178,6 +177,7 @@ void PokeGen::PokeMod::ItemEffect::SetVal1(const int v1)
case IE_MAP:
case IE_ITEMFINDER:
case IE_BIKE:
+ case IE_SCOPE:
LogNoUse("ItemEffect", id, "val1", v1, "effect", ItemEffectStr[effect]);
break;
case IE_LEVEL_BOOST:
@@ -203,7 +203,6 @@ void PokeGen::PokeMod::ItemEffect::SetVal1(const int v1)
LogOutOfRange("ItemEffect", id, "val1", v1, "effect", "Modify Stat (Battle)");
break;
case IE_FISH:
- case IE_SCOPE:
case IE_COIN:
case IE_COIN_CASE:
val1 = v1;
diff --git a/pokemod/ItemStorage.cpp b/pokemod/ItemStorage.cpp
index 57f09ef5..591f4d8d 100644
--- a/pokemod/ItemStorage.cpp
+++ b/pokemod/ItemStorage.cpp
@@ -73,8 +73,8 @@ void PokeGen::PokeMod::ItemStorage::Validate(const wxListBox &output)
}
if (!player)
{
- LogVarNotValid("ItemStorage", id, "player");
- output.Append(ConsoleLogVarNotValid("ItemStorage", id, "player"));
+ LogVarNotValid("ItemStorage", id, "player", name);
+ output.Append(ConsoleLogVarNotValid("ItemStorage", id, "player", name));
isValid = false;
}
LogValidateOver("ItemStorage", id, isValid, name);
@@ -87,13 +87,12 @@ void PokeGen::PokeMod::ItemStorage::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("ItemStorage");
}
else
id = _id;
- ini.GetValue("name", name, "");
+ ini.GetValue("name", name);
ini.GetValue("computer", computer, 0);
ini.GetValue("player", player, 1);
LogImportOver("ItemStorage", id, name);
diff --git a/pokemod/Map.cpp b/pokemod/Map.cpp
index 32728d90..20db2d5d 100644
--- a/pokemod/Map.cpp
+++ b/pokemod/Map.cpp
@@ -26,9 +26,9 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Map::Map(const unsigned _id) :
- name(""),
- flyWarp(UINT_MAX),
- type(UINT_MAX)
+ name(""),
+ flyWarp(UINT_MAX),
+ type(UINT_MAX)
{
LogCtor("Map", id);
id = _id;
@@ -50,7 +50,6 @@ PokeGen::PokeMod::Map::~Map()
void PokeGen::PokeMod::Map::Validate()
{
LogValidateStart("Map", id, name);
- // Make sure the name is set to something
if (name == "")
{
LogVarNotSet("Map", id, "name");
@@ -66,65 +65,166 @@ void PokeGen::PokeMod::Map::Validate()
LogVarNotValid("Map", id, "type", name);
isValid = false;
}
- // Check if there are any effects defined
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> nameChecker;
if (GetMapEffectCount())
{
- // Validate each effect
for (std::vector<MapEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Map", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapEffect", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapEffect", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "effect", i->first, name);
+ isValid = false;
+ }
}
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
LogSubmoduleEmpty("Map", id, "effect", name);
- // Check if there are any trainers defined
if (GetMapTrainerCount())
{
- // Validate each trainer
for (std::vector<MapTrainer>::iterator i = trainers.begin(); i != trainers.end(); ++i)
{
LogSubmoduleIterate("Map", id, "trainer", i->GetId(), name);
- // If a trainer isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapTrainer", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapTrainer", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
}
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "trainer", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "trainer", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
LogSubmoduleEmpty("Map", id, "trainer", name);
- // Check if there are any warps defined
if (GetMapWarpCount())
{
- // Validate each warp
for (std::vector<MapWarp>::iterator i = warps.begin(); i != warps.end(); ++i)
{
LogSubmoduleIterate("Map", id, "warp", i->GetId(), name);
- // If a warp isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapWarp", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapWarp", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
}
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "warp", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "warp", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Map", id, "warp", name);
isValid = false;
}
- // Check if there are any wild lists defined
if (GetMapWildListCount())
{
- // Validate each wild list
for (std::vector<MapWildList>::iterator i = wildLists.begin(); i != wildLists.end(); ++i)
{
LogSubmoduleIterate("Map", id, "wild list", i->GetId(), name);
- // If a wildList isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "effect", i->first, name);
+ isValid = false;
+ }
}
+ idChecker.clear();
}
else
LogSubmoduleEmpty("Map", id, "effect", name);
+ for (unsigned i = 0; i < GetWidth(); ++i)
+ {
+ for (unsigned j = 0; j < GetHeight(); ++j)
+ {
+ if (!curPokeMod.GetTile(tiles[i][j]))
+ {
+ LogVarNotValid("Map", id, String("tiles[%u][%u]", i, j), name);
+ isValid = false;
+ }
+ }
+ }
LogValidateOver("Map", id, isValid, name);
}
@@ -132,7 +232,6 @@ void PokeGen::PokeMod::Map::Validate()
void PokeGen::PokeMod::Map::Validate(const wxListBox &output)
{
LogValidateStart("Map", id, name);
- // Make sure the name is set to something
if (name == "")
{
LogVarNotSet("Map", id, "Name", name);
@@ -142,60 +241,148 @@ void PokeGen::PokeMod::Map::Validate(const wxListBox &output)
if (!GetWarp(flyWarp))
{
LogVarNotValid("Map", id, "flyWarp", name);
- output.append(ConsoleLogVarNotValid("Map", id, "flyWarp", name));
+ output.Append(ConsoleLogVarNotValid("Map", id, "flyWarp", name));
isValid = false;
}
if ((MTY_NONE < type) && (type < MTY_END))
{
LogVarNotValid("Map", id, "type", name);
- output.append(ConsoleLogVarNotValid("Map", id, "type", name));
+ output.Append(ConsoleLogVarNotValid("Map", id, "type", name));
isValid = false;
}
- // Check if there are any effects defined
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> nameChecker;
if (GetMapEffectCount())
{
- // Validate each effect
for (std::vector<MapEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Map", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapEffect", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapEffect", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Map", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Map", id, "effect", i->first, name));
+ isValid = false;
+ }
}
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Map", id, "effect", id, name);
output.Append(ConsoleLogSubmoduleEmptyW("Map", id, "effect", name));
}
- // Check if there are any trainers defined
if (GetMapTrainerCount())
{
- // Validate each trainer
for (std::vector<MapTrainer>::iterator i = trainers.begin(); i != trainers.end(); ++i)
{
LogSubmoduleIterate("Map", id, "trainer", i->GetId(), name);
- // If a trainer isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapTrainer", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapTrainer", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "trainer", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Map", id, "trainer", i->first, name));
+ isValid = false;
+ }
}
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "trainer", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Map", id, "trainer", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Map", id, "trainer", id, name);
output.Append(ConsoleLogSubmoduleEmptyW("Map", id, "trainer", name));
}
- // Check if there are any warps defined
if (GetMapWarpCount())
{
- // Validate each warp
for (std::vector<MapWarp>::iterator i = warps.begin(); i != warps.end(); ++i)
{
LogSubmoduleIterate("Map", id, "warp", i->GetId(), name);
- // If a warp isn't valid, neither is the map
if (!i->IsValid())
isValid = false;
+ if (GetWidth() <= i->GetCoordinateX())
+ {
+ LogVarNotValid("MapWarp", i->GetId(), "x", i->GetName());
+ isValid = false;
+ }
+ if (GetHeight() <= i->GetCoordinateY())
+ {
+ LogVarNotValid("MapWarp", i->GetId(), "y", i->GetName());
+ isValid = false;
+ }
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "warp", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Map", id, "warp", i->first, name));
+ isValid = false;
+ }
}
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Map", id, "warp", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Map", id, "warp", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
}
else
{
@@ -203,23 +390,42 @@ void PokeGen::PokeMod::Map::Validate(const wxListBox &output)
output.Append(ConsoleLogSubmoduleEmpty("Map", id, "warp", name));
isValid = false;
}
- // Check if there are any wild lists defined
if (GetMapWildListCount())
{
- // Validate each wild list
for (std::vector<MapWildList>::iterator i = wildLists.begin(); i != wildLists.end(); ++i)
{
LogSubmoduleIterate("Map", id, "wild list", i->GetId(), name);
- // If a wild list isn't valid, neither is the Map
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
}
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Map", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Map", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
}
else
{
- LogSubmoduleEmpty("Map", id, "effect", id, name);
- output.Append(ConsoleLogSubmoduleEmpty("Map", id, "effect", name));
- isValid = false;
+ LogSubmoduleEmpty("Map", id, "wild list", id, name);
+ output.Append(ConsoleLogSubmoduleEmptyW("Map", id, "wild list", name));
+ }
+ for (unsigned i = 0; i < GetWidth(); ++i)
+ {
+ for (unsigned j = 0; j < GetHeight(); ++j)
+ {
+ if (!curPokeMod.GetTile(tiles[i][j]))
+ {
+ LogVarNotValid("Map", id, String("tiles[%u][%u]", i, j), name);
+ output.Append(ConsoleLogVarNotValid("Map", id, String("tiles[%u][%u]", i, j), name));
+ isValid = false;
+ }
+ }
}
LogValidateOver("Map", id, isValid, name);
}
@@ -231,15 +437,24 @@ void PokeGen::PokeMod::Map::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Map");
}
else
id = _id;
+ unsigned i;
+ unsigned j;
ini.GetValue("name", name);
ini.GetValue("flyWarp", flyWarp);
ini.GetValue("type", type);
+ ini.GetValue("width", i, 0);
+ ini.GetValue("height", j, 0);
+ tiles.resize(i, j, Frac(1, 1));
+ for (unsigned i = 0; i < GetWidth(); ++i)
+ {
+ for (unsigned j = 0; j < GetHeight(); ++j)
+ ini.GetValue(String("tiles-%u-%u", i, j), tiles[i][j]);
+ }
effects.clear();
trainers.clear();
warps.clear();
@@ -250,12 +465,18 @@ void PokeGen::PokeMod::Map::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Map::ExportIni(std::ofstream &fout) const
{
LogExportStart("Map", id, name);
- // Make elements
Ini exMap("Map");
exMap.AddField("id", id);
exMap.AddField("name", name);
exMap.AddField("flyWarp", flyWarp);
exMap.AddField("type", type);
+ exMap.AddField("width", GetWidth());
+ exMap.AddField("height", GetHeight());
+ for (unsigned i = 0; i < GetWidth(); ++i)
+ {
+ for (unsigned j = 0; j < GetWidth(); ++j)
+ exMap.AddField(String("tiles-%u-%u", i, j), tiles[i][j]);
+ }
exMap.Export(fout);
for (std::vector<MapEffect>::const_iterator i = effects.begin(); i != effects.end(); ++i)
i->ExportIni(fout, name);
@@ -419,7 +640,6 @@ unsigned PokeGen::PokeMod::Map::GetMapEffectCount() const
void PokeGen::PokeMod::Map::NewMapEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapEffectCount(); ++i)
{
if (!GetMapEffect(i))
@@ -493,7 +713,6 @@ unsigned PokeGen::PokeMod::Map::GetMapTrainerCount() const
void PokeGen::PokeMod::Map::NewMapTrainer(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapTrainerCount(); ++i)
{
if (!GetMapTrainer(i))
@@ -567,7 +786,6 @@ unsigned PokeGen::PokeMod::Map::GetMapWarpCount() const
void PokeGen::PokeMod::Map::NewMapWarp(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapWarpCount(); ++i)
{
if (!GetMapWarp(i))
@@ -629,7 +847,6 @@ unsigned PokeGen::PokeMod::Map::GetMapWildListCount() const
void PokeGen::PokeMod::Map::NewMapWildList(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapWildListCount(); ++i)
{
if (!GetMapWildList(i))
diff --git a/pokemod/Map.h b/pokemod/Map.h
index 70ecbb28..3afaca5f 100644
--- a/pokemod/Map.h
+++ b/pokemod/Map.h
@@ -25,6 +25,7 @@
#define __POKEMOD_MAP__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Matrix.h"
diff --git a/pokemod/MapEffect.cpp b/pokemod/MapEffect.cpp
index 35022b16..2735fd78 100644
--- a/pokemod/MapEffect.cpp
+++ b/pokemod/MapEffect.cpp
@@ -26,16 +26,16 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapEffect::MapEffect(const unsigned _id) :
- name(""),
- coordinate(0, 0),
- existFlag(0, 0),
- skin(""),
- effect(UINT_MAX),
- val1(UINT_MAX),
- val2(UINT_MAX),
- direction(UINT_MAX),
- isTransparent(false),
- dialog(UINT_MAX)
+ name(""),
+ coordinate(0, 0),
+ existFlag(0, 0),
+ skin(""),
+ effect(UINT_MAX),
+ val1(UINT_MAX),
+ val2(UINT_MAX),
+ direction(UINT_MAX),
+ isTransparent(false),
+ dialog(UINT_MAX)
{
LogCtor("MapEffect", _id);
id = _id;
@@ -57,14 +57,15 @@ PokeGen::PokeMod::MapEffect::~MapEffect()
void PokeGen::PokeMod::MapEffect::Validate()
{
LogValidateStart("MapEffect", id, name);
- // TODO (Ben#1#): MapEffect validation
+ // TODO (Validation#1#): MapEffect validation
+# warning "MapEffect Validation"
LogValidateOver("MapEffect", id, isValid, name);
}
#ifdef PG_DEBUG_WINDOW
void PokeGen::PokeMod::MapEffect::Validate(const wxListBox &output)
{
-
+
}
#endif
@@ -205,7 +206,7 @@ void PokeGen::PokeMod::MapEffect::SetEffect(const String &e)
void PokeGen::PokeMod::MapEffect::SetVal1(const unsigned v1)
{
LogSetVar("MapEffect", id, "val1", v1, name);
- switch(effect)
+ switch (effect)
{
default:
LogNotSet("MapEffect", id, "val1", v1, "effect");
@@ -215,7 +216,7 @@ void PokeGen::PokeMod::MapEffect::SetVal1(const unsigned v1)
void PokeGen::PokeMod::MapEffect::SetVal2(const unsigned v2)
{
LogSetVar("MapEffect", id, "val2", v2, name);
- switch(effect)
+ switch (effect)
{
default:
LogNotSet("MapEffect", id, "val2", v2, "effect");
@@ -224,7 +225,7 @@ void PokeGen::PokeMod::MapEffect::SetVal2(const unsigned v2)
void PokeGen::PokeMod::MapEffect::SetVal2(const String &v2)
{
- switch(effect)
+ switch (effect)
{
default:
LogNotSet("MapEffect", id, "val2", v2, "effect");
@@ -253,7 +254,7 @@ void PokeGen::PokeMod::MapEffect::SetDialog(const unsigned d)
{
LogSetVar("MapEffect", id, "dialog", d, name);
if (curPokeMod.GetDialog(d))
- dialog = d;
+ dialog = d;
}
PokeGen::PokeMod::String PokeGen::PokeMod::MapEffect::GetName() const
@@ -340,9 +341,9 @@ PokeGen::PokeMod::String PokeGen::PokeMod::MapEffect::GetVal2String() const
{
LogFetchVar("MapEffect", id, "val2 string", val2, name);
String ret = "";
- switch(effect)
+ switch (effect)
{
- // TODO (Ben#1#): Effect code
+ // TODO (Ben#1#): Effect code
}
return ret;
}
diff --git a/pokemod/MapTrainer.cpp b/pokemod/MapTrainer.cpp
index a42299a3..5516e7e3 100644
--- a/pokemod/MapTrainer.cpp
+++ b/pokemod/MapTrainer.cpp
@@ -26,17 +26,17 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapTrainer::MapTrainer(const unsigned _id) :
- name(""),
- coordinate(0, 0),
- skin(""),
- sight(0),
- direction(UINT_MAX),
- ai(""),
- appearFlag(0, 0),
- overworldDialog(UINT_MAX),
- winDialog(UINT_MAX),
- loseDialog(UINT_MAX),
- leadPokemon(UINT_MAX)
+ name(""),
+ coordinate(0, 0),
+ skin(""),
+ sight(0),
+ direction(UINT_MAX),
+ ai(""),
+ appearFlag(0, 0),
+ overworldDialog(UINT_MAX),
+ winDialog(UINT_MAX),
+ loseDialog(UINT_MAX),
+ leadPokemon(UINT_MAX)
{
LogCtor("MapTrainer", _id);
id = _id;
@@ -104,16 +104,23 @@ void PokeGen::PokeMod::MapTrainer::Validate()
LogVarNotValid("MapTrainer", id, "leadPokemon", name);
isValid = false;
}
- // Check if there are any Pokémon defined
if (GetMapTrainerTeamCount())
{
- // Validate each Pokémon
+ std::map<unsigned, unsigned> idChecker;
for (std::vector<MapTrainerTeam>::iterator i = team.begin(); i != team.end(); ++i)
{
LogSubmoduleIterate("MapTrainer", id, "team Pokémon", i->GetId(), name);
- // If a Pokémon isn't valid, neither is the ability
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("MapTrainer", id, "team Pokémon", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -131,7 +138,7 @@ void PokeGen::PokeMod::MapTrainer::Validate(const wxListBox &output)
if (name == "")
{
LogVarNotSet("MapTrainer", id, "name");
- output.append(ConsoleLogVarNotSet("MapTrainer", id, "name"));
+ output.Append(ConsoleLogVarNotSet("MapTrainer", id, "name"));
isValid = false;
}
if (!skin.DoesExist())
@@ -139,19 +146,19 @@ void PokeGen::PokeMod::MapTrainer::Validate(const wxListBox &output)
if (skin == "")
{
LogVarNotSet("MapTrainer", id, "skin", name);
- output.append(ConsoleLogVarNotSet("MapTrainer", id, "skin", name));
+ output.Append(ConsoleLogVarNotSet("MapTrainer", id, "skin", name));
}
else
{
LogVarNotValid("MapTrainer", id, "skin", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "skin", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "skin", name));
}
isValid = false;
}
if (DIR_END_NONE <= direction)
{
LogVarNotValid("MapTrainer", id, "direction", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "direction", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "direction", name));
isValid = false;
}
if (!ai.DoesExist())
@@ -159,55 +166,63 @@ void PokeGen::PokeMod::MapTrainer::Validate(const wxListBox &output)
if (ai == "")
{
LogVarNotSet("MapTrainer", id, "ai", name);
- output.append(ConsoleLogVarNotSet("MapTrainer", id, "ai", name));
+ output.Append(ConsoleLogVarNotSet("MapTrainer", id, "ai", name));
}
else
{
LogVarNotValid("MapTrainer", id, "ai", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "ai", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "ai", name));
}
isValid = false;
}
if (!curPokeMod.GetDialog(overworldDialog))
{
LogVarNotValid("MapTrainer", id, "overworldDialog", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "overworldDialog", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "overworldDialog", name));
isValid = false;
}
if (!curPokeMod.GetDialog(winDialog))
{
LogVarNotValid("MapTrainer", id, "winDialog", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "winDialog", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "winDialog", name));
isValid = false;
}
if (!curPokeMod.GetDialog(loseDialog))
{
LogVarNotValid("MapTrainer", id, "loseDialog", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "loseDialog", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "loseDialog", name));
isValid = false;
}
if (!GetMapTrainerTeam(leadPokemon))
{
LogVarNotValid("MapTrainer", id, "leadPokemon", name);
- output.append(ConsoleLogVarNotValid("MapTrainer", id, "leadPokemon", name));
+ output.Append(ConsoleLogVarNotValid("MapTrainer", id, "leadPokemon", name));
isValid = false;
}
- // Check if there are any Pokémon defined
if (GetMapTrainerTeamCount())
{
- // Validate each Pokémon
+ std::map<unsigned, unsigned> idChecker;
for (std::vector<MapTrainerTeam>::iterator i = team.begin(); i != team.end(); ++i)
{
LogSubmoduleIterate("MapTrainer", id, "team Pokémon", i->GetId(), name);
- // If a Pokémon isn't valid, neither is the ability
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecekr.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("MapTrainer", id, "team Pokémon", i->first, name);
+ output.Append(ConsoleLogDuplicateId("MapTrainer", id, "team Pokémon", i->first, name));
+ isValid = false;
+ }
}
}
else
{
LogSubmoduleEmpty("MapTrainer", id, "team Pokémon", name);
- output.append(ConsoleLogSubmoduleEmpty("MapTrainer", id, "team Pokémon", name));
+ output.Append(ConsoleLogSubmoduleEmpty("MapTrainer", id, "team Pokémon", name));
isValid = false;
}
LogValidateOver("MapTrainer", id, isValid, name);
@@ -248,7 +263,7 @@ void PokeGen::PokeMod::MapTrainer::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MapTrainer::ExportIni(std::ofstream &fout, const String &map) const
{
LogExportStart("MapTrainer", id, name);
- Ini exMapTrainer(map + "MapTrainer");
+ Ini exMapTrainer("mapTrainer " + map);
exMapTrainer.AddField("id", id);
exMapTrainer.AddField("name", name);
exMapTrainer.AddField("name", name);
@@ -364,14 +379,14 @@ void PokeGen::PokeMod::MapTrainer::SetOverworldDialog(const unsigned o)
{
LogSetVar("MapTrainer", id, "overworldDialog", o, name);
if (curPokeMod.GetDialog(o))
- overworldDialog = o;
+ overworldDialog = o;
}
void PokeGen::PokeMod::MapTrainer::SetWinDialog(const unsigned w)
{
LogSetVar("MapTrainer", id, "winDialog", w, name);
if (curPokeMod.GetDialog(w))
- winDialog = w;
+ winDialog = w;
}
PokeGen::PokeMod::String PokeGen::PokeMod::MapTrainer::GetName() const
@@ -534,7 +549,6 @@ unsigned PokeGen::PokeMod::MapTrainer::GetMapTrainerTeamCount() const
void PokeGen::PokeMod::MapTrainer::NewMapTrainerTeam(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapTrainerTeamCount(); ++i)
{
if (!GetMapTrainerTeam(i))
diff --git a/pokemod/MapTrainer.h b/pokemod/MapTrainer.h
index ba6692e3..ed319d4e 100644
--- a/pokemod/MapTrainer.h
+++ b/pokemod/MapTrainer.h
@@ -25,6 +25,7 @@
#define __POKEMOD_MAPTRAINER__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Flag.h"
diff --git a/pokemod/MapTrainerTeam.cpp b/pokemod/MapTrainerTeam.cpp
index bd7c59d6..6e61bee9 100644
--- a/pokemod/MapTrainerTeam.cpp
+++ b/pokemod/MapTrainerTeam.cpp
@@ -26,9 +26,9 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapTrainerTeam::MapTrainerTeam(const unsigned _id) :
- species(UINT_MAX),
- level(1),
- item(UINT_MAX)
+ species(UINT_MAX),
+ level(1),
+ item(UINT_MAX)
{
LogCtor("MapTrainerTeam", _id);
id = _id;
@@ -100,7 +100,6 @@ void PokeGen::PokeMod::MapTrainerTeam::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("MapTrainerTeam");
}
@@ -115,8 +114,7 @@ void PokeGen::PokeMod::MapTrainerTeam::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MapTrainerTeam::ExportIni(std::ofstream &fout, const String &map, const unsigned trainerId) const
{
LogExportStart("MapTrainerTeam", id);
- // Make elements
- Ini exMapTrainerTeam(map + String(" %u MapTrainerTeam", trainerId));
+ Ini exMapTrainerTeam(String("MapTrainerTeam %u ", trainerId) + map);
exMapTrainerTeam.AddField("id", id);
exMapTrainerTeam.AddField("species", species);
exMapTrainerTeam.AddField("level", level);
diff --git a/pokemod/MapWarp.cpp b/pokemod/MapWarp.cpp
index 3fbf3cf4..ee7e4e5f 100644
--- a/pokemod/MapWarp.cpp
+++ b/pokemod/MapWarp.cpp
@@ -26,20 +26,20 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapWarp::MapWarp(const unsigned _id) :
- name(""),
- coordinate(0, 0),
- fromUp(false),
- fromDown(false),
- fromLeft(false),
- fromRight(false),
- directionOut(UINT_MAX),
- warpType(UINT_MAX),
- isBiking(false),
- isFlash(false),
- toMap(UINT_MAX),
- toWarp(UINT_MAX),
- workingFlag(0, 0),
- dialog(UINT_MAX)
+ name(""),
+ coordinate(0, 0),
+ fromUp(false),
+ fromDown(false),
+ fromLeft(false),
+ fromRight(false),
+ directionOut(UINT_MAX),
+ warpType(UINT_MAX),
+ isBiking(false),
+ isFlash(false),
+ toMap(UINT_MAX),
+ toWarp(UINT_MAX),
+ workingFlag(0, 0),
+ dialog(UINT_MAX)
{
LogCtor("MapWarp", _id);
id = _id;
@@ -109,25 +109,25 @@ void PokeGen::PokeMod::MapWarp::Validate(const wxListBox &output)
if (name == "")
{
LogVarNotSet("MapWarp", id, "name");
- output.append(ConsoleLogVarNotSet("MapWarp", id, "name"));
+ output.Append(ConsoleLogVarNotSet("MapWarp", id, "name"));
isValid = false;
}
if (!fromUp && !fromDown && !fromLeft && !fromRight)
{
LogVarNotSet("MapWarp", id, "directions", name);
- output.append(ConsoleLogVarNotSet("MapWarp", id, "directions", name));
+ output.Append(ConsoleLogVarNotSet("MapWarp", id, "directions", name));
isValid = false;
}
if (DIR_END_NONE <= directionOut)
{
LogVarNotValid("MapWarp", id, "directionOut", name);
- output.append(ConsoleLogVarNotValid("MapWarp", id, "directionOut", name));
+ output.Append(ConsoleLogVarNotValid("MapWarp", id, "directionOut", name));
isValid = false;
}
if (WT_END <= warpType)
{
LogVarNotValid("MapWarp", id, "warpType", name);
- output.append(ConsoleLogVarNotValid("MapWarp", id, "warpType", name));
+ output.Append(ConsoleLogVarNotValid("MapWarp", id, "warpType", name));
isValid = false;
}
if (const Map *m = curPokeMod.GetMap(toMap))
@@ -135,20 +135,20 @@ void PokeGen::PokeMod::MapWarp::Validate(const wxListBox &output)
if (!m->GetMapWarp(toWarp))
{
LogVarNotValid("MapWarp", id, "toWarp");
- output.append(ConsoleLogVarNotValid("MapWarp", id, "toWarp"));
+ output.Append(ConsoleLogVarNotValid("MapWarp", id, "toWarp"));
isValid = false;
}
}
else
{
LogVarNotValid("MapWarp", id, "toMap");
- output.append(ConsoleLogVarNotValid("MapWarp", id, "toMap"));
+ output.Append(ConsoleLogVarNotValid("MapWarp", id, "toMap"));
isValid = false;
}
if (!curPokeMod.GetDialog(dialog))
{
LogVarNotValid("MapWarp", id, "dialog");
- output.append(ConsoleLogVarNotValid("MapWarp", id, "dialog"));
+ output.Append(ConsoleLogVarNotValid("MapWarp", id, "dialog"));
isValid = false;
}
LogValidateOver("MapWarp", id, isValid, name);
@@ -192,7 +192,7 @@ void PokeGen::PokeMod::MapWarp::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MapWarp::ExportIni(std::ofstream &fout, const String &map) const
{
LogExportStart("MapWarp", id, name);
- Ini exMapWarp(map + " mapWarp");
+ Ini exMapWarp("mapWarp " + map);
exMapWarp.AddField("id", id);
exMapWarp.AddField("coordinate-x", coordinate.GetX());
exMapWarp.AddField("coordinate-y", coordinate.GetY());
@@ -318,8 +318,8 @@ void PokeGen::PokeMod::MapWarp::SetToMap(const String &t)
LogSetVar("MapWarp", id, "toMap string", t, name);
if (const Map *m = curPokeMod.GetMap(t))
{
- toMap = m->GetId();
- toWarp = UINT_MAX;
+ toMap = m->GetId();
+ toWarp = UINT_MAX;
}
}
diff --git a/pokemod/MapWildList.cpp b/pokemod/MapWildList.cpp
index d7dab5f5..6ffdcf28 100644
--- a/pokemod/MapWildList.cpp
+++ b/pokemod/MapWildList.cpp
@@ -26,9 +26,9 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapWildList::MapWildList(const unsigned _id) :
- control(UINT_MAX),
- value(INT_MAX),
- scope(INT_MAX)
+ control(UINT_MAX),
+ value(INT_MAX),
+ scope(INT_MAX)
{
LogCtor("MapWildList", _id);
id = _id;
@@ -54,15 +54,35 @@ void PokeGen::PokeMod::MapWildList::Validate()
#endif
{
LogValidateStart("MapWildList", id);
+ unsigned i = 0;
+ unsigned j = 0;
+ bool temp = false;
if (CTRL_END <= control)
{
LogVarNotValid("MapWildList", id, "control");
- isValid = true;
+ isValid = false;
}
else if (control == CTRL_FISHING)
{
- // TODO (Ben#1#): Value validation
+ if (const Item *item = curPokeMod.GetItem(value))
+ {
+ while ((i < item->GetItemEffectCount()) || !temp)
+ {
+ if (const ItemEffect *e = item->GetItemEffect(j++))
+ {
+ ++i;
+ if (e->GetEffect() == IE_FISH)
+ temp = true;
+ }
+ }
+ }
+ if (!temp)
+ {
+ LogVarNotValid("ItemEffect", id, "value");
+ isValid = false;
+ }
}
+ std::map<unsigned, unsigned> idChecker;
for (std::vector<unsigned>::const_iterator i = times.begin(); i != times.end(); ++i)
{
if (!curPokeMod.GetTime(*i))
@@ -70,8 +90,42 @@ void PokeGen::PokeMod::MapWildList::Validate()
LogVarNotValid("MapWildList", id, "times");
isValid = false;
}
+ ++idChecker[*i];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("MapWildList", id, "times", i->first);
+ isValid = false;
+ }
+ }
+ if (scope != UINT_MAX)
+ {
+ temp = false;
+ if (const Item *item = curPokeMod.GetItem(scope))
+ {
+ i = 0;
+ j = 0;
+ while (i < item->GetItemEffectCount())
+ {
+ if (const ItemEffect *e = item->GetItemEffect(j++))
+ {
+ ++i;
+ if (e->GetEffect() == IE_SCOPE)
+ {
+ temp = true;
+ break;
+ }
+ }
+ }
+ }
+ if (!temp)
+ {
+ LogVarNotValid("ItemEffect", id, "value");
+ isValid = false;
+ }
}
- // TODO (Ben#1#): Scope validation
LogValidateOver("MapWildList", id, isValid);
}
@@ -81,7 +135,6 @@ void PokeGen::PokeMod::MapWildList::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("MapWildList");
}
@@ -106,7 +159,6 @@ void PokeGen::PokeMod::MapWildList::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MapWildList::ExportIni(std::ofstream &fout, const String &map) const
{
LogExportStart("MapWildList", id);
- // Make elements
Ini exMapWildList(map + " mapWildList");
exMapWildList.AddField("id", id);
exMapWildList.AddField("control", control);
@@ -130,11 +182,11 @@ void PokeGen::PokeMod::MapWildList::SetControl(const unsigned c)
void PokeGen::PokeMod::MapWildList::SetValue(const unsigned v)
{
- unsigned i = 0;
- unsigned j = 0;
LogSetVar("MapWildList", id, "value", v);
if (const Item *item = curPokeMod.GetItem(v))
{
+ unsigned i = 0;
+ unsigned j = 0;
while (i < item->GetItemEffectCount())
{
if (const ItemEffect *effect = item->GetItemEffect(j++))
@@ -142,7 +194,7 @@ void PokeGen::PokeMod::MapWildList::SetValue(const unsigned v)
++i;
if (effect->GetEffect() == IE_FISH)
{
- value = effect->GetVal1();
+ value = v;
break;
}
}
@@ -187,17 +239,22 @@ void PokeGen::PokeMod::MapWildList::SetTime(const String &ts, const bool t)
void PokeGen::PokeMod::MapWildList::SetScope(const unsigned s)
{
LogSetVar("MapWildList", id, "scope", s);
- unsigned i = 0;
- unsigned j = 0;
+ if (s == UINT_MAX)
+ {
+ scope = UINT_MAX;
+ return;
+ }
if (const Item *item = curPokeMod.GetItem(s))
{
+ unsigned i = 0;
+ unsigned j = 0;
while (i < item->GetItemEffectCount())
{
if (const ItemEffect *effect = item->GetItemEffect(j++))
{
++i;
if (effect->GetEffect() == IE_SCOPE)
- scope = effect->GetVal1();
+ scope = s;
}
}
}
@@ -206,6 +263,11 @@ void PokeGen::PokeMod::MapWildList::SetScope(const unsigned s)
void PokeGen::PokeMod::MapWildList::SetScope(const String &s)
{
LogSetVar("MapWildList", id, "scope string", s);
+ if (s == "None")
+ {
+ scope = UINT_MAX;
+ return;
+ }
if (const Item *i = curPokeMod.GetItem(s))
SetScope(i->GetId());
}
@@ -280,7 +342,6 @@ unsigned PokeGen::PokeMod::MapWildList::GetMapWildPokemonCount() const
void PokeGen::PokeMod::MapWildList::NewMapWildPokemon(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMapWildPokemonCount(); ++i)
{
if (!GetMapWildPokemon(i))
diff --git a/pokemod/MapWildList.h b/pokemod/MapWildList.h
index 56499367..f1817879 100644
--- a/pokemod/MapWildList.h
+++ b/pokemod/MapWildList.h
@@ -57,7 +57,7 @@ namespace PokeGen
bool GetTime(const unsigned ts) const;
bool GetTime(const String &ts) const;
int GetScope() const;
-
+
const MapWildPokemon *GetMapWildPokemon(const unsigned _id) const;
const MapWildPokemon *GetMapWildPokemon(const String &n) const;
unsigned GetMapWildPokemonCount() const;
@@ -70,9 +70,9 @@ namespace PokeGen
# endif
unsigned control;
- int value;
+ unsigned value;
std::vector<unsigned> times;
- int scope;
+ unsigned scope;
std::vector<MapWildPokemon> pokemon;
};
diff --git a/pokemod/MapWildPokemon.cpp b/pokemod/MapWildPokemon.cpp
index 07a4dee3..cc42f3b4 100644
--- a/pokemod/MapWildPokemon.cpp
+++ b/pokemod/MapWildPokemon.cpp
@@ -26,9 +26,9 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::MapWildPokemon::MapWildPokemon(const unsigned _id) :
- pokemon(UINT_MAX),
- level(1),
- weight(1)
+ pokemon(UINT_MAX),
+ level(1),
+ weight(1)
{
LogCtor("MapWildPokemon", _id);
id = _id;
@@ -100,7 +100,6 @@ void PokeGen::PokeMod::MapWildPokemon::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("MapWildPokemon");
}
@@ -115,8 +114,7 @@ void PokeGen::PokeMod::MapWildPokemon::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MapWildPokemon::ExportIni(std::ofstream &fout, const String &map, const unsigned listId) const
{
LogExportStart("MapWildPokemon", id);
- // Make elements
- Ini exMapWildPokemon(map + String(" %u mapWildPokemon", listId));
+ Ini exMapWildPokemon(String("mapWildPokemon %u ", listId) + map);
exMapWildPokemon.AddField("id", id);
exMapWildPokemon.AddField("pokemon", pokemon);
exMapWildPokemon.AddField("level", level);
diff --git a/pokemod/Matrix.h b/pokemod/Matrix.h
index c4ea42c0..7b78bcec 100644
--- a/pokemod/Matrix.h
+++ b/pokemod/Matrix.h
@@ -37,13 +37,13 @@ namespace PokeGen
{
public:
MatrixBase() :
- width(0),
- height(0)
+ width(0),
+ height(0)
{
}
MatrixBase(const unsigned w, const unsigned h, const T &d = T()) :
- width(w),
- height(h)
+ width(w),
+ height(h)
{
matrix.resize(w, std::vector<T>(h, d));
}
@@ -64,7 +64,7 @@ namespace PokeGen
if (height < pos)
return false;
for (typename std::vector< std::vector<T> >::iterator i = matrix.begin(); i != matrix.end(); ++i)
- i->insert(pos, d);
+ i->insert(i->begin() + pos, d);
++height;
return true;
}
@@ -72,7 +72,7 @@ namespace PokeGen
{
if (width < pos)
return false;
- matrix.insert(pos, std::vector<T>(height, d));
+ matrix.insert(matrix.begin() + pos, std::vector<T>(height, d));
++width;
return true;
}
@@ -93,6 +93,10 @@ namespace PokeGen
--width;
return true;
}
+ void Clear()
+ {
+ matrix.clear();
+ }
bool Set(const unsigned row, const unsigned col, const T &s)
{
@@ -101,6 +105,13 @@ namespace PokeGen
(matrix.begin() + col)->assign(row, s);
return true;
}
+ void Resize(const unsigned w, const unsigned h, const T &d = T())
+ {
+ Clear();
+ width = w;
+ height = h;
+ matrix.resize(w, std::vector<T>(h, d));
+ }
T Get(const unsigned row, const unsigned col) const
{
diff --git a/pokemod/Move.cpp b/pokemod/Move.cpp
index 6dee45f6..5aa55267 100644
--- a/pokemod/Move.cpp
+++ b/pokemod/Move.cpp
@@ -25,28 +25,25 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
-PokeGen::PokeMod::Move::Move(const unsigned _id)
+PokeGen::PokeMod::Move::Move(const unsigned _id) :
+ name(""),
+ accuracy(1, 1),
+ power(0),
+ type(UINT_MAX),
+ special(false),
+ powerPoints(0),
+ target(UINT_MAX),
+ ignoreAccuracy(false),
+ ignoreFlinch(false),
+ sound(false),
+ description(""),
+ contestType(UINT_MAX),
+ contestPoints(0),
+ jamPoints(0),
+ contestEffect(UINT_MAX),
+ contestTarget(UINT_MAX)
{
LogCtor("Move", _id);
- name = "";
- accuracy.Set(1, 1);
- power = 0;
- type = UINT_MAX;
- special = false;
- powerPoints = 1;
- target = UINT_MAX;
- numTargets = 0;
- targetChoice = UINT_MAX;
- ignoreAccuracy = false;
- ignoreFlinch = false;
- sound = false;
- description = "";
- contestType = UINT_MAX;
- contestPoints = 0;
- jamPoints = 0;
- contestEffect = UINT_MAX;
- contestTarget = UINT_MAX;
- effects.clear();
id = _id;
}
@@ -120,6 +117,40 @@ void PokeGen::PokeMod::Move::Validate()
isValid = false;
}
}
+ if (GetMoveEffectCount())
+ {
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
+ for (std::vector<MoveEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
+ {
+ LogSubmoduleIterate("Move", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Move", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Move", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ }
+ else
+ {
+ LogSubmoduleEmpty("Move", id, "effect", name);
+ isValid = false;
+ }
LogValidateOver("Move", id, name);
}
@@ -127,40 +158,40 @@ void PokeGen::PokeMod::Move::Validate()
void PokeGen::PokeMod::Move::Validate(const wxListBox &output)
{
LogValidateStart("Move", id, name);
- if (name == ""
+ if (name == "")
{
LogVarNotSet("Move", id, "name");
- output.append(ConsoleLogVarNotSet("Move", id, "name"););
+ output.Append(ConsoleLogVarNotSet("Move", id, "name"););
isValid = "";
}
if (!curPokeMod.GetType(type))
{
LogVarNotValid("Move", id, "type", name);
- output.append(ConsoleLogVarNotValid("Move", id, "type", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "type", name));
isValid = false;
}
if (!powerPoints)
{
LogVarNotValid("Move", id, "powerPoints", name);
- output.append(ConsoleLogVarNotValid("Move", id, "powerPoints", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "powerPoints", name));
isValid = false;
}
if (TAR_END <= target)
{
LogVarNotValid("Move", id, "target", name);
- output.append(ConsoleLogVarNotValid("Move", id, "target", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "target", name));
isValid = false;
}
if (!targets || (curPokeMod.GetMaxFight() << 1) < numTargets)
{
LogVarNotValid("Move", id, "numTargets", name);
- output.append(ConsoleLogVarNotValid("Move", id, "numTargets", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "numTargets", name));
isValid = false;
}
if (CHC_END <= targetChoice)
{
LogVarNotValid("Move", id, "targetChoice", name);
- output.append(ConsoleLogVarNotValid("Move", id, "targetChoice", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "targetChoice", name));
isValid = false;
}
if (curPokeMod.IsContestAllowed())
@@ -168,28 +199,65 @@ void PokeGen::PokeMod::Move::Validate(const wxListBox &output)
if (COTY_END <= contestType)
{
LogVarNotValid("Move", id, "contestType", name);
- output.append(ConsoleLogVarNotValid("Move", id, "contestType", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "contestType", name));
isValid = false;
}
if (!contestPoints)
{
LogVarNotValid("Move", id, "contestPoints", name);
- output.append(ConsoleLogVarNotValid("Move", id, "contestPoints", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "contestPoints", name));
isValid = false;
}
if (CONE_END <= contestEffect)
{
LogVarNotValid("Move", id, "contestEffect", name);
- output.append(ConsoleLogVarNotValid("Move", id, "contestEffect", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "contestEffect", name));
isValid = false;
}
if (CONT_END <= contestTarget)
{
LogVarNotValid("Move", id, "contestTarget", name);
- output.append(ConsoleLogVarNotValid("Move", id, "contestTarget", name));
+ output.Append(ConsoleLogVarNotValid("Move", id, "contestTarget", name));
isValid = false;
}
}
+ if (GetMoveEffectCount())
+ {
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
+ for (std::vector<MoveEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
+ {
+ LogSubmoduleIterate("Move", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Move", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Move", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Move", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Move", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ }
+ else
+ {
+ LogSubmoduleEmpty("Move", id, "effect", name);
+ output.Append(ConsoleLogSubmoduleEmpty("Move", id, "effect", name));
+ isValid = false;
+ }
LogValidateOver("Move", id, move);
}
#endif
@@ -207,7 +275,7 @@ void PokeGen::PokeMod::Move::ImportIni(Ini &ini, const unsigned _id)
id = _id;
unsigned i;
unsigned j;
- ini.GetValue("name", name, "");
+ ini.GetValue("name", name);
ini.GetValue("accuracy-n", i, 1);
ini.GetValue("accuracy-d", j, 1);
accuracy.Set(i, j);
@@ -392,7 +460,7 @@ void PokeGen::PokeMod::Move::SetContestPoints(const int c)
void PokeGen::PokeMod::Move::SetJamPoints(const int j)
{
- LogSetVar("Move", id, "jamPoints",j, name);
+ LogSetVar("Move", id, "jamPoints", j, name);
jamPoints = j;
}
@@ -603,7 +671,6 @@ unsigned PokeGen::PokeMod::Move::GetMoveEffectCount() const
void PokeGen::PokeMod::Move::NewMoveEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetMoveEffectCount(); ++i)
{
if (!GetMoveEffect(i))
@@ -629,3 +696,4 @@ void PokeGen::PokeMod::Move::DeleteMoveEffect(unsigned _id)
}
LogSubmoduleRemoveFail("Move", id, "effect", _id, name);
}
+
diff --git a/pokemod/Move.h b/pokemod/Move.h
index ccc03850..e585eee2 100644
--- a/pokemod/Move.h
+++ b/pokemod/Move.h
@@ -25,6 +25,7 @@
#define __POKEMOD_MOVE__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "MoveEffect.h"
diff --git a/pokemod/MoveEffect.cpp b/pokemod/MoveEffect.cpp
index fc05511d..88926348 100644
--- a/pokemod/MoveEffect.cpp
+++ b/pokemod/MoveEffect.cpp
@@ -25,13 +25,13 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
-PokeGen::PokeMod::MoveEffect::MoveEffect(const unsigned _id)
+PokeGen::PokeMod::MoveEffect::MoveEffect(const unsigned _id) :
+ chance(1, 1),
+ effect(UINT_MAX),
+ val1(INT_MAX),
+ val2(UINT_MAX)
{
LogCtor("MoveEffect", _id);
- chance.Set(1, 1);
- effect = UINT_MAX;
- val1 = INT_MAX;
- val2 = UINT_MAX;
id = _id;
}
@@ -56,6 +56,7 @@ void PokeGen::PokeMod::MoveEffect::Validate()
{
LogValidateStart("MoveEffect", id);
// TODO (Validation#1#): MoveEffect Validation
+# warning "MoveEffect Validation"
LogValidateOver("MoveEffect", id, isValid);
}
@@ -65,7 +66,6 @@ void PokeGen::PokeMod::MoveEffect::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("MoveEffect");
}
@@ -84,7 +84,6 @@ void PokeGen::PokeMod::MoveEffect::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::MoveEffect::ExportIni(std::ofstream &fout, const String &move) const
{
LogExportStart("MoveEffect", id);
- // Make elements
Ini exMoveEffect(move + " moveEffect");
exMoveEffect.AddField("id", id);
exMoveEffect.AddField("chance-n", chance.GetNum());
diff --git a/pokemod/Nature.cpp b/pokemod/Nature.cpp
index e7ff5c93..c6059ccb 100644
--- a/pokemod/Nature.cpp
+++ b/pokemod/Nature.cpp
@@ -24,7 +24,7 @@
#include "Nature.h"
PokeGen::PokeMod::Nature::Nature(const unsigned _id) :
- name("")
+ name("")
{
LogCtor("Nature", _id);
id = _id;
@@ -51,13 +51,33 @@ void PokeGen::PokeMod::Nature::Validate()
LogVarNotSet("Nature", id, "name");
isValid = false;
}
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
if (GetNatureEffectCount())
{
- for (unsigned i = 0; i < GetNatureEffectCount(); ++i)
+ for (std::vector<NatureEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
- LogSubmoduleIterate("Nature", id, "effect", i, name);
- if (!effects[i].IsValid())
+ LogSubmoduleIterate("Nature", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetStatString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Nature", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Nature", id, "effect", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -75,16 +95,38 @@ void PokeGen::PokeMod::Nature::Validate(const wxListBox &output)
if (name == "")
{
LogVarNotSet("Nature", id, "name");
- output.Append(ConsoleLogVarNotSet("Nature", id, "name");
+ output.Append(ConsoleLogVarNotSet("Nature", id, "name"));
isValid = false;
}
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
if (GetNatureEffectCount())
{
- for (unsigned i = 0; i < GetNatureEffectCount(); ++i)
+ for (std::vector<NatureEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
+ {
+ LogSubmoduleIterate("Nature", id, "effect", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Nature", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Nature", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
{
- LogSubmoduleIterate("Nature", "effect", id, i, name);
- if (!effects[i].IsValid())
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Nature", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Nature", id, "effect", i->first, name));
isValid = false;
+ }
}
}
else
@@ -104,13 +146,12 @@ void PokeGen::PokeMod::Nature::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the section?
if (id == UINT_MAX)
LogIdNotFound("Nature");
}
else
id = _id;
- ini.GetValue("name", name, "");
+ ini.GetValue("name", name);
effects.clear();
LogImportOver("Nature");
}
@@ -159,7 +200,6 @@ unsigned PokeGen::PokeMod::Nature::GetNatureEffectCount() const
void PokeGen::PokeMod::Nature::NewNatureEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetNatureEffectCount(); ++i)
{
if (!GetNatureEffect(i))
diff --git a/pokemod/Nature.h b/pokemod/Nature.h
index eb544884..57bd4ba0 100644
--- a/pokemod/Nature.h
+++ b/pokemod/Nature.h
@@ -46,7 +46,7 @@ namespace PokeGen
void SetName(const String &n);
String GetName() const;
-
+
const NatureEffect *GetNatureEffect(const unsigned _id) const;
unsigned GetNatureEffectCount() const;
void NewNatureEffect(Ini *const ini = NULL);
diff --git a/pokemod/NatureEffect.cpp b/pokemod/NatureEffect.cpp
index 6f040b5f..04ab35f5 100644
--- a/pokemod/NatureEffect.cpp
+++ b/pokemod/NatureEffect.cpp
@@ -26,8 +26,8 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::NatureEffect::NatureEffect(const unsigned _id) :
- stat(UINT_MAX),
- multiplier(1, 1)
+ stat(UINT_MAX),
+ multiplier(1, 1)
{
LogCtor("NatureEffect", _id);
id = _id;
@@ -65,7 +65,7 @@ void PokeGen::PokeMod::NatureEffect::Validate(const wxListBox &output)
if ((curPokeMod.IsSpecialSplit() ? STH_END_GSC : STH_END_RBY) <= stat)
{
LogVarNotValid("NatureEffect", id, "stat");
- output.append(ConsoleLogVarNotValid("NatureEffect", id, "stat"));
+ output.Append(ConsoleLogVarNotValid("NatureEffect", id, "stat"));
isValid = false;
}
multipler.Reduce();
@@ -80,7 +80,6 @@ void PokeGen::PokeMod::NatureEffect::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the section?
if (id == UINT_MAX)
LogIdNotFound("NatureEffect");
}
@@ -98,8 +97,7 @@ void PokeGen::PokeMod::NatureEffect::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::NatureEffect::ExportIni(std::ofstream &fout, const String &nature) const
{
LogExportStart("NatureEffect", id);
- // Make elements
- Ini exNatureEffect(nature + " natureEffect");
+ Ini exNatureEffect("natureEffect " + nature);
exNatureEffect.AddField("id", id);
exNatureEffect.AddField("stat", stat);
exNatureEffect.AddField("multiplier-n", multiplier.GetNum());
diff --git a/pokemod/Object.cpp b/pokemod/Object.cpp
index cb9f1f8b..d2d9c315 100644
--- a/pokemod/Object.cpp
+++ b/pokemod/Object.cpp
@@ -40,7 +40,6 @@ bool PokeGen::PokeMod::Object::IsValid()
#ifdef PG_DEBUG_WINDOW
bool PokeGen::PokeMod::Object::IsValid(const wxListBox &output)
{
- // Validate with debugging console output
isValid = (id != UINT_MAX);
if (isValid)
Validate(output);
diff --git a/pokemod/Path.cpp b/pokemod/Path.cpp
index c8945e28..a8fa5ebb 100644
--- a/pokemod/Path.cpp
+++ b/pokemod/Path.cpp
@@ -50,7 +50,6 @@ bool PokeGen::PokeMod::Path::DoesExist()
{
if (*this == "")
return false;
- // Try to open the file
std::ifstream test(c_str(), std::ios::in);
test.close();
if (test.fail())
@@ -65,7 +64,6 @@ bool PokeGen::PokeMod::Path::HasExtension(const String &ext)
String fileExt(substr(pos + 1));
if ((pos == npos) || (pos + 1 == length()) || (fileExt.length() != ext.length()))
return false;
- // Loop while the two are equal
for (unsigned i = 0; ret && (i < ext.length()); ++i)
ret = (tolower(ext[i]) == tolower(fileExt[i]));
return ret;
diff --git a/pokemod/Point.cpp b/pokemod/Point.cpp
index c4e32859..40c97050 100644
--- a/pokemod/Point.cpp
+++ b/pokemod/Point.cpp
@@ -35,7 +35,6 @@ void PokeGen::PokeMod::Point::ImportIni(Ini &ini)
void PokeGen::PokeMod::Point::ExportIni(std::ofstream &fout, const String &val) const
{
Log(String("Point Export: Starting (%u, %u) as %s", x, y, val.c_str()), PM_DEBUG_INFO);
- // Declare the elements
Ini exPoint(val);
exPoint.AddField("x", x);
exPoint.AddField("y", y);
diff --git a/pokemod/Point.h b/pokemod/Point.h
index 6071d205..b05a7428 100644
--- a/pokemod/Point.h
+++ b/pokemod/Point.h
@@ -35,8 +35,8 @@ namespace PokeGen
{
public:
inline Point(const unsigned _x = 0, const unsigned _y = 0) :
- x(_x),
- y(_y)
+ x(_x),
+ y(_y)
{
}
diff --git a/pokemod/Pokemod.cpp b/pokemod/Pokemod.cpp
index 4799fd89..615fb565 100644
--- a/pokemod/Pokemod.cpp
+++ b/pokemod/Pokemod.cpp
@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: pokemod/Pokemod.cpp
-// Purpose:
+// Purpose: Define a custom PokéMod for PokéGen
// Author: Ben Boeckel
// Modified by: Ben Boeckel
// Created: Sat Feb 24 21:41:19 2007
@@ -23,7 +23,54 @@
#include "Pokemod.h"
-PokeGen::PokeMod::Pokemod::Pokemod()
+PokeGen::PokeMod::Pokemod::Pokemod() :
+ title(""),
+ version(""),
+ description(""),
+ genderAllowed(false),
+ breedingAllowed(false),
+ eggSpecies(UINT_MAX),
+ holdItems(false),
+ criticalDomains(false),
+ contestAllowed(false),
+ abilityAllowed(false),
+ natureAllowed(false),
+ numDaycares(0),
+ numPokemonBoxes(0),
+ numPokemonPerBox(1),
+ maxParty(1),
+ maxFight(1),
+ maxMoves(1),
+ maxLevel(1),
+ maxMoney(0),
+ hardCash(false),
+ specialSplit(false),
+ specialDVSplit(false),
+ maxDVValue(16),
+ happiness(false),
+ happyFaintLoss(0),
+ happyLevelGain(0),
+ happySteps(0),
+ effortValuesAllowed(false),
+ maxTotalEV(0),
+ maxEVPerStat(0),
+ pokerusChance(1, 1),
+ startMap(UINT_MAX),
+ startMoney(0),
+ startCoordinate(0, 0),
+ startDirection(UINT_MAX),
+ startDialog(UINT_MAX),
+ walkSkin(""),
+ bikeSkin(""),
+ surfSkin(""),
+ flySkin(""),
+ fishSkin(""),
+ surfFishSkin(""),
+ superPCUname(""),
+ superPCPasswd(""),
+ struggleMove(UINT_MAX),
+ confuseMove(UINT_MAX),
+ typeChart(1, 1, Frac(1, 1, true))
{
LogCtor("Pokemod", 0);
}
@@ -43,6 +90,7 @@ void PokeGen::PokeMod::Pokemod::Validate()
{
LogValidateStart("Pokemod", 0);
// TODO (Validation#1#): Pokemod Validation
+# warning "Pokemod Validation"
LogValidateOver("Pokemod", 0, isValid);
}
@@ -55,10 +103,2565 @@ void PokeGen::PokeMod::Pokemod::Validate(const wxListBox &output)
void PokeGen::PokeMod::Pokemod::ImportIni(std::ifstream &fin)
{
- // TODO (Ini#1#): Import Pokemod
+ LogImportStart("Pokemod");
+ std::vector<Ini> sections;
+ Ini meta("unset");
+ while (fin.peek() != '\n')
+ {
+ Ini curSection(fin);
+ if (curSection.GetName() == "pokemod")
+ {
+ if (meta.GetName() == "unset")
+ {
+ Log(String("Pokemod: Multiple meta data sections in PokéMod file"), PM_DEBUG_ERROR);
+ return;
+ }
+ meta = curSection;
+ unsigned i;
+ unsigned j;
+ curSection.GetValue("title", title);
+ curSection.GetValue("version", version);
+ curSection.GetValue("description", description);
+ curSection.GetValue("genderAllowed", genderAllowed, false);
+ curSection.GetValue("breedingAllowed", breedingAllowed, false);
+ curSection.GetValue("eggSpecies", eggSpecies);
+ curSection.GetValue("holdItems", holdItems, false);
+ curSection.GetValue("criticalDomains", criticalDomains, false);
+ curSection.GetValue("contestAllowed", contestAllowed, false);
+ curSection.GetValue("abilityAllowed", abilityAllowed, false);
+ curSection.GetValue("natureAllowed", natureAllowed, false);
+ curSection.GetValue("numDaycares", numDaycares, 0);
+ curSection.GetValue("numPokemonBoxes", numPokemonBoxes, 0);
+ curSection.GetValue("numPokemonPerBox", numPokemonPerBox, 1);
+ curSection.GetValue("maxParty", maxParty, 1);
+ curSection.GetValue("maxFight", maxFight, 1);
+ curSection.GetValue("maxMoves", maxMoves, 1);
+ curSection.GetValue("maxLevel", maxLevel, 0);
+ curSection.GetValue("maxMoney", maxMoney, 0);
+ curSection.GetValue("hardCash", hardCash, false);
+ curSection.GetValue("specialSplit", specialSplit, false);
+ curSection.GetValue("specialDVSplit", specialDVSplit, false);
+ curSection.GetValue("maxDVValue", maxDVValue, 16);
+ curSection.GetValue("happiness", happiness, false);
+ curSection.GetValue("happyFaintLoss", happyFaintLoss, 0);
+ curSection.GetValue("happyLevelGain", happyLevelGain, 0);
+ curSection.GetValue("happySteps", happySteps, 0);
+ curSection.GetValue("effortValuesAllowed", effortValuesAllowed, false);
+ curSection.GetValue("maxTotalEV", maxTotalEV, 0);
+ curSection.GetValue("maxEVPerStat", maxEVPerStat, 0);
+ curSection.GetValue("pokerusChance-n", i, 1);
+ curSection.GetValue("pokerusChance-d", j, 1);
+ pokerusChance.Set(i, j);
+ curSection.GetValue("startMap", startMap);
+ curSection.GetValue("startMoney", startMoney, 0);
+ curSection.GetValue("startCoordinate-x", i, 0);
+ curSection.GetValue("startCoordinate-y", j, 0);
+ startCoordinate.Set(i, j);
+ curSection.GetValue("startDirection", startDirection);
+ curSection.GetValue("startDialog", startDialog);
+ curSection.GetValue("walkSkin", walkSkin);
+ curSection.GetValue("bikeSkin", bikeSkin);
+ curSection.GetValue("surfSkin", surfSkin);
+ curSection.GetValue("flySkin", flySkin);
+ curSection.GetValue("fishSkin", fishSkin);
+ curSection.GetValue("surfFishSkin", surfFishSkin);
+ curSection.GetValue("superPCUname", superPCUname);
+ curSection.GetValue("superPCPasswd", superPCPasswd);
+ curSection.GetValue("struggleMove", struggleMove);
+ curSection.GetValue("confuseMove", confuseMove);
+ }
+ else if (curSection.GetName() == "ability")
+ NewAbility(&curSection);
+ else if (curSection.GetName() == "author")
+ NewAuthor(&curSection);
+ else if (curSection.GetName() == "badge")
+ NewBadge(&curSection);
+ else if (curSection.GetName() == "coinList")
+ NewCoinList(&curSection);
+ else if (curSection.GetName() == "dialog")
+ NewDialog(&curSection);
+ else if (curSection.GetName() == "eggGroup")
+ NewEggGroup(&curSection);
+ else if (curSection.GetName() == "item")
+ NewItem(&curSection);
+ else if (curSection.GetName() == "itemStorage")
+ NewItemStorage(&curSection);
+ else if (curSection.GetName() == "map")
+ NewMap(&curSection);
+ else if (curSection.GetName() == "move")
+ NewMove(&curSection);
+ else if (curSection.GetName() == "nature")
+ NewNature(&curSection);
+ else if (curSection.GetName() == "pokemon")
+ NewPokemon(&curSection);
+ else if (curSection.GetName() == "status")
+ NewStatus(&curSection);
+ else if (curSection.GetName() == "store")
+ NewStore(&curSection);
+ else if (curSection.GetName() == "tile")
+ NewTile(&curSection);
+ else if (curSection.GetName() == "time")
+ NewTime(&curSection);
+ else if (curSection.GetName() == "type")
+ NewType(&curSection);
+ else
+ sections.push_back(curSection);
+ }
+ if (meta.GetName() == "unset")
+ {
+ Log(String("Pokemod: No meta data found in PokéMod file"), PM_DEBUG_ERROR);
+ return;
+ }
+ for (std::vector<Type>::iterator i = types.begin(); i != types.end(); ++i)
+ {
+ for (std::vector<Type>::iterator j = types.begin(); j != types.end(); ++j)
+ {
+ unsigned k;
+ unsigned l;
+ meta.GetValue(String("typeChart-%u-%u-n", i->GetId(), j->GetId()), k, 1);
+ meta.GetValue(String("typeChart-%u-%u-d", i->GetId(), j->GetId()), l, 1);
+ SetTypeChart(i->GetId(), j->GetId(), k, l);
+ }
+ }
+ std::stringstream ss;
+ std::string s;
+ std::string s1;
+ unsigned u;
+ for (std::vector<Ini>::iterator i = sections.begin(); i != sections.end(); ++i)
+ {
+ ss.write(i->GetName().c_str(), i->GetName().length());
+ ss >> s;
+ ss >> s1;
+ if (s == "abilityEffect")
+ {
+ if (Ability *a = (Ability *)GetAbility(s1))
+ a->NewAbilityEffect(&*i);
+ sections.erase(i);
+ }
+ else if (s == "coinItem")
+ {
+ if (CoinList *c = (CoinList *)GetCoinList(s1))
+ c->NewCoinItem(&*i);
+ sections.erase(i);
+ }
+ else if (s == "itemEffect")
+ {
+ if (Item *it = (Item *)GetItem(s1))
+ it->NewItemEffect(&*i);
+ sections.erase(i);
+ }
+ else if (s == "mapEffect")
+ {
+ if (Map *m = (Map *)GetMap(s1))
+ m->NewMapEffect(&*i);
+ sections.erase(i);
+ }
+ else if (s == "mapTrainer")
+ {
+ if (Map *m = (Map *)GetMap(s1))
+ m->NewMapTrainer(&*i);
+ sections.erase(i);
+ }
+ else if (s == "mapWarp")
+ {
+ if (Map *m = (Map *)GetMap(s1))
+ m->NewMapWarp(&*i);
+ sections.erase(i);
+ }
+ else if (s == "mapWildList")
+ {
+ if (Map *m = (Map *)GetMap(s1))
+ m->NewMapWildList(&*i);
+ sections.erase(i);
+ }
+ else if (s == "moveEffect")
+ {
+ if (Move *m = (Move *)GetMove(s1))
+ m->NewMoveEffect(&*i);
+ sections.erase(i);
+ }
+ else if (s == "natureEffect")
+ {
+ if (Nature *n = (Nature *)GetNature(s1))
+ n->NewNatureEffect(&*i);
+ sections.erase(i);
+ }
+ else if (s == "pokemonAbility")
+ {
+ if (Pokemon *p = (Pokemon *)GetPokemon(s1))
+ p->NewPokemonAbility(&*i);
+ sections.erase(i);
+ }
+ else if (s == "pokemonEvolution")
+ {
+ if (Pokemon *p = (Pokemon *)GetPokemon(s1))
+ p->NewPokemonEvolution(&*i);
+ sections.erase(i);
+ }
+ else if (s == "pokemonItem")
+ {
+ if (Pokemon *p = (Pokemon *)GetPokemon(s1))
+ p->NewPokemonItem(&*i);
+ sections.erase(i);
+ }
+ else if (s == "pokemonMove")
+ {
+ if (Pokemon *p = (Pokemon *)GetPokemon(s1))
+ p->NewPokemonMove(&*i);
+ sections.erase(i);
+ }
+ else if (s == "pokemonNature")
+ {
+ if (Pokemon *p = (Pokemon *)GetPokemon(s1))
+ p->NewPokemonNature(&*i);
+ sections.erase(i);
+ }
+ else if (s == "statusEffect")
+ {
+ if (Status *st = (Status *)GetStatus(s1))
+ st->NewStatusEffect(&*i);
+ sections.erase(i);
+ }
+ ss.clear();
+ }
+ for (std::vector<Ini>::iterator i = sections.begin(); i != sections.end(); ++i)
+ {
+ if (s == "mapTrainerTeam")
+ {
+ ss >> u;
+ if (const Map *m = GetMap(s1))
+ {
+ if (MapTrainer *t = (MapTrainer *)m->GetMapTrainer(u))
+ t->NewMapTrainerTeam(&*i);
+ }
+ sections.erase(i);
+ }
+ else if (s == "mapWildPokemon")
+ {
+ ss >> u;
+ if (const Map *m = GetMap(s1))
+ {
+ if (MapWildList *t = (MapWildList *)m->GetMapWildList(u))
+ t->NewMapWildPokemon(&*i);
+ }
+ sections.erase(i);
+ }
+ }
+ for (std::vector<Ini>::iterator i = sections.begin(); i != sections.end(); ++i)
+ Log(String("Pokemod: Unused INI section named \"%s\"", i->GetName().c_str()), PM_DEBUG_INFO);
+ LogImportOver("Pokemod", 0, title);
}
void PokeGen::PokeMod::Pokemod::ExportIni(std::ofstream &fout) const
{
- // TODO (Ini#1#): Export Pokemod
+ LogExportStart("Pokemod", 0, title);
+ Ini exPokemod("pokemod");
+ exPokemod.AddField("title", title);
+ exPokemod.AddField("version", version);
+ exPokemod.AddField("description", description);
+ exPokemod.AddField("genderAllowed", genderAllowed);
+ exPokemod.AddField("breedingAllowed", breedingAllowed);
+ exPokemod.AddField("eggSpecies", eggSpecies);
+ exPokemod.AddField("holdItems", holdItems);
+ exPokemod.AddField("criticalDomains", criticalDomains);
+ exPokemod.AddField("contestAllowed", contestAllowed);
+ exPokemod.AddField("abilityAllowed", abilityAllowed);
+ exPokemod.AddField("natureAllowed", natureAllowed);
+ exPokemod.AddField("numDaycares", numDaycares);
+ exPokemod.AddField("numPokemonBoxes", numPokemonBoxes);
+ exPokemod.AddField("numPokemonPerBox", numPokemonPerBox);
+ exPokemod.AddField("maxParty", maxParty);
+ exPokemod.AddField("maxFight", maxFight);
+ exPokemod.AddField("maxMoves", maxMoves);
+ exPokemod.AddField("maxLevel", maxLevel);
+ exPokemod.AddField("maxMoney", maxMoney);
+ exPokemod.AddField("hardCash", hardCash);
+ exPokemod.AddField("specialSplit", specialSplit);
+ exPokemod.AddField("specialDVSplit", specialDVSplit);
+ exPokemod.AddField("maxDVValue", maxDVValue);
+ exPokemod.AddField("happiness", happiness);
+ exPokemod.AddField("happyFaintLoss", happyFaintLoss);
+ exPokemod.AddField("happyLevelGain", happyLevelGain);
+ exPokemod.AddField("happySteps", happySteps);
+ exPokemod.AddField("effortValuesAllowed", effortValuesAllowed);
+ exPokemod.AddField("maxTotalEV", maxTotalEV);
+ exPokemod.AddField("maxEVPerStat", maxEVPerStat);
+ exPokemod.AddField("pokerusChance-n", pokerusChance.GetNum());
+ exPokemod.AddField("pokerusChance-d", pokerusChance.GetDenom());
+ exPokemod.AddField("startMap", startMap);
+ exPokemod.AddField("startMoney", startMoney);
+ exPokemod.AddField("startCoordinate-x", startCoordinate.GetX());
+ exPokemod.AddField("startCoordinate-y", startCoordinate.GetY());
+ exPokemod.AddField("startDirection", startDirection);
+ exPokemod.AddField("startDialog", startDialog);
+ exPokemod.AddField("walkSkin", walkSkin);
+ exPokemod.AddField("bikeSkin", bikeSkin);
+ exPokemod.AddField("surfSkin", surfSkin);
+ exPokemod.AddField("flySkin", flySkin);
+ exPokemod.AddField("fishSkin", fishSkin);
+ exPokemod.AddField("surfFishSkin", surfFishSkin);
+ exPokemod.AddField("superPCUname", superPCUname);
+ exPokemod.AddField("superPCPasswd", superPCPasswd);
+ exPokemod.AddField("struggleMove", struggleMove);
+ exPokemod.AddField("confuseMove", confuseMove);
+ for (unsigned i = 1; i < typeChart.GetWidth(); ++i)
+ {
+ for (unsigned j = 1; j < typeChart.GetHeight(); ++j)
+ {
+ exPokemod.AddField(String("typeChart-%u-%u-n", typeChart[i][0].GetNum(), typeChart[0][j].GetNum()), typeChart[i][j].GetNum());
+ exPokemod.AddField(String("typeChart-%u-%u-d", typeChart[i][0].GetNum(), typeChart[0][j].GetNum()), typeChart[i][j].GetDenom());
+ }
+ }
+ exPokemod.Export(fout);
+ for (std::vector<Ability>::const_iterator i = abilities.begin(); i != abilities.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Author>::const_iterator i = authors.begin(); i != authors.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Badge>::const_iterator i = badges.begin(); i != badges.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<CoinList>::const_iterator i = coinLists.begin(); i != coinLists.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Dialog>::const_iterator i = dialogs.begin(); i != dialogs.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<EggGroup>::const_iterator i = eggGroups.begin(); i != eggGroups.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Item>::const_iterator i = items.begin(); i != items.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<ItemStorage>::const_iterator i = itemStorages.begin(); i != itemStorages.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Map>::const_iterator i = maps.begin(); i != maps.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Move>::const_iterator i = moves.begin(); i != moves.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Nature>::const_iterator i = natures.begin(); i != natures.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Pokemon>::const_iterator i = pokemon.begin(); i != pokemon.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Status>::const_iterator i = statuses.begin(); i != statuses.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Store>::const_iterator i = stores.begin(); i != stores.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Tile>::const_iterator i = tiles.begin(); i != tiles.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Time>::const_iterator i = times.begin(); i != times.end(); ++i)
+ i->ExportIni(fout);
+ for (std::vector<Type>::const_iterator i = types.begin(); i != types.end(); ++i)
+ i->ExportIni(fout);
+ LogExportOver("Pokemod", 0, title);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTitle(const String &t)
+{
+ LogSetVar("Pokemod", 0, "title", t);
+ title = t;
+}
+
+void PokeGen::PokeMod::Pokemod::SetVersion(const String &v)
+{
+ LogSetVar("Pokemod", 0, "version", v);
+ version = v;
+}
+
+void PokeGen::PokeMod::Pokemod::SetDescription(const String &d)
+{
+ LogSetVar("Pokemod", 0, "description", d);
+ description = d;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsGenderAllowed(const bool g)
+{
+ LogSetVar("Pokemod", 0, "genderAllowed", g);
+ genderAllowed = g;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsBreedingAllowed(const bool b)
+{
+ LogSetVar("Pokemod", 0, "breedingAllowed", b);
+ breedingAllowed = b;
+}
+
+void PokeGen::PokeMod::Pokemod::SetEggSpecies(const unsigned e)
+{
+ LogSetVar("Pokemod", 0, "eggSpecies", e);
+ if (GetPokemon(e))
+ eggSpecies = e;
+}
+
+void PokeGen::PokeMod::Pokemod::SetEggSpecies(const String &e)
+{
+ LogSetVar("Pokemod", 0, "eggSpecies string", e);
+ if (const Pokemon *p = GetPokemon(e))
+ eggSpecies = p->GetId();
+}
+
+void PokeGen::PokeMod::Pokemod::SetCanHoldItems(const bool h)
+{
+ LogSetVar("Pokemod", 0, "holdItems", h);
+ holdItems = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetHasCriticalDomains(const bool c)
+{
+ LogSetVar("Pokemod", 0, "criticalDomains", c);
+ criticalDomains = c;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsContestAllowed(const bool c)
+{
+ LogSetVar("Pokemod", 0, "contestAllowed", c);
+ contestAllowed = c;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsAbilityAllowed(const bool a)
+{
+ LogSetVar("Pokemod", 0, "abilityAllowed", a);
+ abilityAllowed = a;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsNatureAllowed(const bool n)
+{
+ LogSetVar("Pokemod", 0, "natureAllowed", n);
+ natureAllowed = n;
+}
+
+void PokeGen::PokeMod::Pokemod::SetNumDaycares(const unsigned n)
+{
+ LogSetVar("Pokemod", 0, "numDaycares", n);
+ numDaycares = n;
+}
+
+void PokeGen::PokeMod::Pokemod::SetNumPokemonBoxes(const unsigned n)
+{
+ LogSetVar("Pokemod", 0, "numPokemonBoxes", n);
+ numPokemonBoxes = n;
+}
+
+void PokeGen::PokeMod::Pokemod::SetNumPokemonPerBox(const unsigned n)
+{
+ LogSetVar("Pokemod", 0, "numPokemonPerBox", n);
+ numPokemonPerBox = n;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxParty(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxParty", m);
+ maxParty = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxFight(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxFight", m);
+ if (m <= maxParty)
+ maxFight = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxMoves(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxMoves", m);
+ maxMoves = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxLevel(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxLevel", m);
+ maxLevel = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxMoney(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxMoney", m);
+ maxMoney = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsHardCash(const bool h)
+{
+ LogSetVar("Pokemod", 0, "hardCash", h);
+ hardCash = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsSpecialSplit(const bool s)
+{
+ LogSetVar("Pokemod", 0, "specialSplit", s);
+ specialSplit = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsSpecialDVSplit(const bool s)
+{
+ LogSetVar("Pokemod", 0, "specialDVSplit", s);
+ specialDVSplit = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxDVValue(const unsigned char m)
+{
+ LogSetVar("Pokemod", 0, "maxDVValue", m);
+ if ((m == 16) || (m == 32))
+ maxDVValue = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsHappiness(const bool h)
+{
+ LogSetVar("Pokemod", 0, "happiness", h);
+ happiness = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetHappyFaintLoss(const unsigned h)
+{
+ LogSetVar("Pokemod", 0, "happyFaintLoss", h);
+ happyFaintLoss = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetHappyLevelGain(const unsigned h)
+{
+ LogSetVar("Pokemod", 0, "happyLevelGain", h);
+ happyLevelGain = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetHappySteps(const unsigned h)
+{
+ LogSetVar("Pokemod", 0, "happySteps", h);
+ happySteps = h;
+}
+
+void PokeGen::PokeMod::Pokemod::SetIsEffortValuesAllowed(const bool e)
+{
+ LogSetVar("Pokemod", 0, "effortValuesAllowed", e);
+ effortValuesAllowed = e;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxTotalEV(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxTotalEV", m);
+ maxTotalEV = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetMaxEVPerStat(const unsigned m)
+{
+ LogSetVar("Pokemod", 0, "maxEVPerStat", m);
+ maxEVPerStat = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetPokerusChance(const Frac &p)
+{
+ LogSetVar("Pokemod", 0, "pokerusChance", p.GetNum(), p.GetDenom());
+ pokerusChance = p;
+}
+
+void PokeGen::PokeMod::Pokemod::SetPokerusChance(const unsigned n, const unsigned d)
+{
+ LogSetVar("Pokemod", 0, "pokerusChance", n, d);
+ pokerusChance.Set(n, d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetPokerusChanceNum(const unsigned n)
+{
+ LogSetVar("Pokemod", 0, "pokerusChance numerator", n);
+ pokerusChance.SetNum(n);
+}
+
+void PokeGen::PokeMod::Pokemod::SetPokerusChanceDenom(const unsigned d)
+{
+ LogSetVar("Pokemod", 0, "pokerusChance denominator", d);
+ pokerusChance.SetDenom(d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartMap(const unsigned s)
+{
+ LogSetVar("Pokemod", 0, "startMap", s);
+ if (GetMap(s))
+ startMap = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartMap(const String &s)
+{
+ LogSetVar("Pokemod", 0, "startMap string", s);
+ if (const Map *m = GetMap(s))
+ startMap = m->GetId();
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartMoney(const unsigned s)
+{
+ LogSetVar("Pokemod", 0, "startMoney", s);
+ startMoney = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartCoordinate(const Point &s)
+{
+ LogSetVar("Pokemod", 0, "startCoordinate", s.GetX(), s.GetY());
+ if (const Map *m = GetMap(startMap))
+ {
+ if ((s.GetX() < m->GetWidth()) && (s.GetY() < m->GetHeight()))
+ startCoordinate = s;
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartCoordinate(const unsigned x, const unsigned y)
+{
+ LogSetVar("Pokemod", 0, "startCoordinate", x, y);
+ if (const Map *m = GetMap(startMap))
+ {
+ if ((x < m->GetWidth()) && (y < m->GetHeight()))
+ startCoordinate.Set(x, y);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartCoordinateX(const unsigned x)
+{
+ LogSetVar("Pokemod", 0, "startCoordinate x", x);
+ if (const Map *m = GetMap(startMap))
+ {
+ if (x < m->GetWidth())
+ startCoordinate.SetX(x);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartCoordinateY(const unsigned y)
+{
+ LogSetVar("Pokemod", 0, "startCoordinate y", y);
+ if (const Map *m = GetMap(startMap))
+ {
+ if (y < m->GetHeight())
+ startCoordinate.SetY(y);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartDirection(const unsigned s)
+{
+ LogSetVar("Pokemod", 0, "startDirection", s);
+ if (s < DIR_END)
+ startDirection = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartDirection(const String &s)
+{
+ SetStartDirection(FindIn(DIR_END, s, DirectionStr));
+}
+
+void PokeGen::PokeMod::Pokemod::SetStartDialog(const unsigned s)
+{
+ LogSetVar("Pokemod", 0, "startDialog", s);
+ if (GetDialog(s))
+ startDialog = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetWalkSkin(const Path &w)
+{
+ LogSetVar("Pokemod", 0, "walkSkin", w);
+ walkSkin = w;
+}
+
+void PokeGen::PokeMod::Pokemod::SetBikeSkin(const Path &b)
+{
+ LogSetVar("Pokemod", 0, "bikeSkin", b);
+ bikeSkin = b;
+}
+
+void PokeGen::PokeMod::Pokemod::SetSurfSkin(const Path &s)
+{
+ LogSetVar("Pokemod", 0, "surfSkin", s);
+ surfSkin = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetFlySkin(const Path &f)
+{
+ LogSetVar("Pokemod", 0, "flySkin", f);
+ flySkin = f;
+}
+
+void PokeGen::PokeMod::Pokemod::SetFishSkin(const Path &f)
+{
+ LogSetVar("Pokemod", 0, "fishSkin", f);
+ fishSkin = f;
+}
+
+void PokeGen::PokeMod::Pokemod::SetSurfFishSkin(const Path &s)
+{
+ LogSetVar("Pokemod", 0, "surfFishSkin", s);
+ surfFishSkin = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetSuperPCUname(const String &u)
+{
+ LogSetVar("Pokemod", 0, "superPCUname", u);
+ superPCUname = u;
+}
+
+void PokeGen::PokeMod::Pokemod::SetSuperPCPasswd(const String &p)
+{
+ LogSetVar("Pokemod", 0, "superPCPasswd", p);
+ superPCPasswd = p;
+}
+
+void PokeGen::PokeMod::Pokemod::SetStruggleMove(const unsigned s)
+{
+ LogSetVar("Pokemod", 0, "struggleMove", s);
+ if (GetMove(s))
+ struggleMove = s;
+}
+
+void PokeGen::PokeMod::Pokemod::SetStruggleMove(const String &s)
+{
+ LogSetVar("Pokemod", 0, "struggleMove string", s);
+ if (const Move *m = GetMove(s))
+ struggleMove = m->GetId();
+}
+
+void PokeGen::PokeMod::Pokemod::SetConfuseMove(const unsigned c)
+{
+ LogSetVar("Pokemod", 0, "confuseMove", c);
+ if (GetMove(c))
+ confuseMove = c;
+}
+
+void PokeGen::PokeMod::Pokemod::SetConfuseMove(const String &c)
+{
+ LogSetVar("Pokemod", 0, "confuseMove string", c);
+ if (const Move *m = GetMove(c))
+ confuseMove = m->GetId();
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetTitle() const
+{
+ LogFetchVar("Pokemod", 0, "title", title);
+ return title;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetVersion() const
+{
+ LogFetchVar("Pokemod", 0, "version", version);
+ return version;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetDescription() const
+{
+ LogFetchVar("Pokemod", 0, "description", description);
+ return description;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsGenderAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "genderAllowed", genderAllowed);
+ return genderAllowed;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsBreedingAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "breedingAllowed", breedingAllowed);
+ return breedingAllowed;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetEggSpecies() const
+{
+ LogFetchVar("Pokemod", 0, "eggSpecies", eggSpecies);
+ return eggSpecies;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetEggSpeciesString() const
+{
+ LogFetchVar("Pokemod", 0, "eggSpecies", eggSpecies);
+ if (const Pokemon *p = GetPokemon(eggSpecies))
+ return p->GetName();
+ return "";
+}
+
+bool PokeGen::PokeMod::Pokemod::CanHoldItems() const
+{
+ LogFetchVar("Pokemod", 0, "holdItems", holdItems);
+ return holdItems;
+}
+
+bool PokeGen::PokeMod::Pokemod::HasCriticalDomains() const
+{
+ LogFetchVar("Pokemod", 0, "criticalDomains", criticalDomains);
+ return criticalDomains;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsContestAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "contestAllowed", contestAllowed);
+ return contestAllowed;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsAbilityAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "abilityAllowed", abilityAllowed);
+ return abilityAllowed;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsNatureAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "natureAllowed", natureAllowed);
+ return natureAllowed;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetNumDaycares() const
+{
+ LogFetchVar("Pokemod", 0, "numDaycares", numDaycares);
+ return numDaycares;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetNumPokemonBoxes() const
+{
+ LogFetchVar("Pokemod", 0, "numPokemonBoxes", numPokemonBoxes);
+ return numPokemonBoxes;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetNumPokemonPerBox() const
+{
+ LogFetchVar("Pokemod", 0, "numPokemonPerBox", numPokemonPerBox);
+ return numPokemonPerBox;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxParty() const
+{
+ LogFetchVar("Pokemod", 0, "maxParty", maxParty);
+ return maxParty;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxFight() const
+{
+ LogFetchVar("Pokemod", 0, "maxFight", maxFight);
+ return maxFight;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxMoves() const
+{
+ LogFetchVar("Pokemod", 0, "maxMoves", maxMoves);
+ return maxMoves;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxLevel() const
+{
+ LogFetchVar("Pokemod", 0, "maxLevel", maxLevel);
+ return maxLevel;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxMoney() const
+{
+ LogFetchVar("Pokemod", 0, "maxMoney", maxMoney);
+ return maxMoney;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsHardCash() const
+{
+ LogFetchVar("Pokemod", 0, "hardCash", hardCash);
+ return hardCash;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsSpecialSplit() const
+{
+ LogFetchVar("Pokemod", 0, "specialSplit", specialSplit);
+ return specialSplit;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsSpecialDVSplit() const
+{
+ LogFetchVar("Pokemod", 0, "specialDVSplit", specialDVSplit);
+ return specialDVSplit;
+}
+
+unsigned char PokeGen::PokeMod::Pokemod::GetMaxDVValue() const
+{
+ LogFetchVar("Pokemod", 0, "maxDVValue", maxDVValue);
+ return maxDVValue;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsHappiness() const
+{
+ LogFetchVar("Pokemod", 0, "happiness", happiness);
+ return happiness;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetHappyFaintLoss() const
+{
+ LogFetchVar("Pokemod", 0, "happyFaintLoss", happyFaintLoss);
+ return happyFaintLoss;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetHappyLevelGain() const
+{
+ LogFetchVar("Pokemod", 0, "happyLevelGain", happyLevelGain);
+ return happyLevelGain;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetHappySteps() const
+{
+ LogFetchVar("Pokemod", 0, "happySteps", happySteps);
+ return happySteps;
+}
+
+bool PokeGen::PokeMod::Pokemod::IsEffortValuesAllowed() const
+{
+ LogFetchVar("Pokemod", 0, "effortValuesAllowed", effortValuesAllowed);
+ return effortValuesAllowed;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxTotalEV() const
+{
+ LogFetchVar("Pokemod", 0, "maxTotalEV", maxTotalEV);
+ return maxTotalEV;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMaxEVPerStat() const
+{
+ LogFetchVar("Pokemod", 0, "maxEVPerStat", maxEVPerStat);
+ return maxEVPerStat;
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::Pokemod::GetPokerusChance() const
+{
+ LogFetchVar("Pokemod", 0, "pokerusChance", pokerusChance.GetNum(), pokerusChance.GetDenom());
+ return pokerusChance;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetPokerusChanceNum() const
+{
+ LogFetchVar("Pokemod", 0, "pokerusChance numerator", pokerusChance.GetNum());
+ return pokerusChance.GetNum();
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetPokerusChanceDenom() const
+{
+ LogFetchVar("Pokemod", 0, "pokerusChance denominator", pokerusChance.GetDenom());
+ return pokerusChance.GetDenom();
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartMap() const
+{
+ LogFetchVar("Pokemod", 0, "startMap", startMap);
+ return startMap;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetStartMapString() const
+{
+ LogFetchVar("Pokemod", 0, "startMap string", startMap);
+ if (const Map *m = GetMap(startMap))
+ return m->GetName();
+ return "";
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartMoney() const
+{
+ LogFetchVar("Pokemod", 0, "startMoney", startMoney);
+ return startMoney;
+}
+
+PokeGen::PokeMod::Point PokeGen::PokeMod::Pokemod::GetStartCoordinate() const
+{
+ LogFetchVar("Pokemod", 0, "startCoordinate", startCoordinate.GetX(), startCoordinate.GetY());
+ return startCoordinate;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartCoordinateX() const
+{
+ LogFetchVar("Pokemod", 0, "startCoordinate x", startCoordinate.GetX());
+ return startCoordinate.GetX();
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartCoordinateY() const
+{
+ LogFetchVar("Pokemod", 0, "startCoordinate y", startCoordinate.GetY());
+ return startCoordinate.GetY();
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartDirection() const
+{
+ LogFetchVar("Pokemod", 0, "startDirection", startDirection);
+ return startDirection;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetStartDirectionString() const
+{
+ LogFetchVar("Pokemod", 0, "startDirection string", startDirection);
+ if (startDirection < DIR_END)
+ return DirectionStr[startDirection];
+ return "";
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStartDialog() const
+{
+ LogFetchVar("Pokemod", 0, "startDialog", startDialog);
+ return startDialog;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetStartDialogString() const
+{
+ LogFetchVar("Pokemod", 0, "startDialog string", startDialog);
+ if (const Dialog *d = GetDialog(startDialog))
+ return d->GetDialog();
+ return "";
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetWalkSkin() const
+{
+ LogFetchVar("Pokemod", 0, "walkSkin", walkSkin);
+ return walkSkin;
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetBikeSkin() const
+{
+ LogFetchVar("Pokemod", 0, "bikeSkin", bikeSkin);
+ return bikeSkin;
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetSurfSkin() const
+{
+ LogFetchVar("Pokemod", 0, "surfSkin", surfSkin);
+ return surfSkin;
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetFlySkin() const
+{
+ LogFetchVar("Pokemod", 0, "flySkin", flySkin);
+ return flySkin;
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetFishSkin() const
+{
+ LogFetchVar("Pokemod", 0, "fishSkin", fishSkin);
+ return fishSkin;
+}
+
+PokeGen::PokeMod::Path PokeGen::PokeMod::Pokemod::GetSurfFishSkin() const
+{
+ LogFetchVar("Pokemod", 0, "surfFishSkin", surfFishSkin);
+ return surfFishSkin;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetSuperPCUname() const
+{
+ LogFetchVar("Pokemod", 0, "superPCUname", superPCUname);
+ return superPCUname;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetSuperPCPasswd() const
+{
+ LogFetchVar("Pokemod", 0, "superPCPasswd", superPCPasswd);
+ return superPCPasswd;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStruggleMove() const
+{
+ LogFetchVar("Pokemod", 0, "struggleMove", struggleMove);
+ return struggleMove;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetStruggleMoveString() const
+{
+ LogFetchVar("Pokemod", 0, "struggleMove string", struggleMove);
+ if (const Move *m = GetMove(struggleMove))
+ return m->GetName();
+ return "";
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetConfuseMove() const
+{
+ LogFetchVar("Pokemod", 0, "confuseMove", confuseMove);
+ return confuseMove;
+}
+
+PokeGen::PokeMod::String PokeGen::PokeMod::Pokemod::GetConfuseMoveString() const
+{
+ LogFetchVar("Pokemod", 0, "confuseMove string", confuseMove);
+ if (const Move *m = GetMove(confuseMove))
+ return m->GetName();
+ return "";
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const unsigned att, const unsigned def, const Frac &m) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ typeChart[col][row] = m;
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const unsigned att, const unsigned def, const unsigned n, const unsigned d) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ typeChart[col][row].Set(n, d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartNum(const unsigned att, const unsigned def, const unsigned n) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ typeChart[col][row].SetNum(n);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartDenom(const unsigned att, const unsigned def, const unsigned d) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ typeChart[col][row].SetDenom(d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const String &att, const unsigned def, const Frac &m) const
+{
+ if (const Type *t = GetType(att))
+ SetTypeChart(t->GetId(), def, m);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const String &att, const unsigned def, const unsigned n, const unsigned d) const
+{
+ if (const Type *t = GetType(att))
+ SetTypeChart(t->GetId(), def, n, d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartNum(const String &att, const unsigned def, const unsigned n) const
+{
+ if (const Type *t = GetType(att))
+ SetTypeChartNum(t->GetId(), def, n);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartDenom(const String &att, const unsigned def, const unsigned d) const
+{
+ if (const Type *t = GetType(att))
+ SetTypeChartDenom(t->GetId(), def, d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const unsigned att, const String &def, const Frac &m) const
+{
+ if (const Type *t = GetType(def))
+ SetTypeChart(att, t->GetId(), m);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const unsigned att, const String &def, const unsigned n, const unsigned d) const
+{
+ if (const Type *t = GetType(def))
+ SetTypeChart(att, t->GetId(), n, d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartNum(const unsigned att, const String &def, const unsigned n) const
+{
+ if (const Type *t = GetType(def))
+ SetTypeChartNum(att, t->GetId(), n);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartDenom(const unsigned att, const String &def, const unsigned d) const
+{
+ if (const Type *t = GetType(def))
+ SetTypeChartDenom(att, t->GetId(), d);
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const String &att, const String &def, const Frac &m) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ SetTypeChart(t->GetId(), t2->GetId(), m);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChart(const String &att, const String &def, const unsigned n, const unsigned d) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ SetTypeChart(t->GetId(), t2->GetId(), n, d);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartNum(const String &att, const String &def, const unsigned n) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ SetTypeChartNum(t->GetId(), t2->GetId(), n);
+ }
+}
+
+void PokeGen::PokeMod::Pokemod::SetTypeChartDenom(const String &att, const String &def, const unsigned d) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ SetTypeChartDenom(t->GetId(), t2->GetId(), d);
+ }
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::Pokemod::GetTypeChart(const unsigned att, const unsigned def) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ return typeChart[col][row];
+ return Frac(1, 1);
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartNum(const unsigned att, const unsigned def) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ return typeChart[col][row].GetNum();
+ return UINT_MAX;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartDenom(const unsigned att, const unsigned def) const
+{
+ unsigned col = UINT_MAX;
+ unsigned row = UINT_MAX;
+ for (unsigned i = 1; (i < typeChart.GetWidth()) && ((col == UINT_MAX) || (row != UINT_MAX)); ++i)
+ {
+ if (typeChart[i][0].GetNum() == att)
+ row = i;
+ if (typeChart[i][0].GetNum() == def)
+ col = i;
+ }
+ if ((col != UINT_MAX) && (row != UINT_MAX))
+ return typeChart[col][row].GetDenom();
+ return UINT_MAX;
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::Pokemod::GetTypeChart(const String &att, const unsigned def) const
+{
+ if (const Type *t = GetType(att))
+ return GetTypeChart(t->GetId(), def);
+ return Frac(1, 1);
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartNum(const String &att, const unsigned def) const
+{
+ if (const Type *t = GetType(att))
+ return GetTypeChartNum(t->GetId(), def);
+ return UINT_MAX;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartDenom(const String &att, const unsigned def) const
+{
+ if (const Type *t = GetType(att))
+ return GetTypeChartDenom(t->GetId(), def);
+ return UINT_MAX;
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::Pokemod::GetTypeChart(const unsigned att, const String &def) const
+{
+ if (const Type *t = GetType(def))
+ return GetTypeChart(att, t->GetId());
+ return Frac(1, 1);
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartNum(const unsigned att, const String &def) const
+{
+ if (const Type *t = GetType(def))
+ return GetTypeChartNum(att, t->GetId());
+ return UINT_MAX;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartDenom(const unsigned att, const String &def) const
+{
+ if (const Type *t = GetType(def))
+ return GetTypeChartDenom(def, t->GetId());
+ return UINT_MAX;
+}
+
+PokeGen::PokeMod::Frac PokeGen::PokeMod::Pokemod::GetTypeChart(const String &att, const String &def) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ return GetTypeChart(t->GetId(), t2->GetId());
+ }
+ return Frac(1, 1);
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartNum(const String &att, const String &def) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ return GetTypeChartNum(t->GetId(), t2->GetId());
+ }
+ return UINT_MAX;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeChartDenom(const String &att, const String &def) const
+{
+ if (const Type *t = GetType(att))
+ {
+ if (const Type *t2 = GetType(def))
+ return GetTypeChartDenom(t->GetId(), t2->GetId());
+ }
+ return UINT_MAX;
+}
+
+const PokeGen::PokeMod::Ability *PokeGen::PokeMod::Pokemod::GetAbility(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "ability", _id);
+ for (unsigned i = 0; i < GetAbilityCount(); ++i)
+ {
+ if (abilities[i].GetId() == _id)
+ return &abilities[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "ability", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Ability *PokeGen::PokeMod::Pokemod::GetAbility(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "ability", n);
+ for (unsigned i = 0; i < GetAbilityCount(); ++i)
+ {
+ if (abilities[i].GetName() == n)
+ return &abilities[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "ability", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetAbilityCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "ability");
+ return abilities.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewAbility(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetAbilityCount(); ++i)
+ {
+ if (!GetAbility(i))
+ break;
+ }
+ Ability newAbility(i);
+ if (ini)
+ newAbility.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "ability", i);
+ abilities.push_back(newAbility);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteAbility(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "ability", _id);
+ for (std::vector<Ability>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "ability", _id);
+ abilities.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "ability", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteAbility(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "ability", n);
+ for (std::vector<Ability>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "ability", n);
+ abilities.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "ability", n);
+}
+
+const PokeGen::PokeMod::Author *PokeGen::PokeMod::Pokemod::GetAuthor(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "author", _id);
+ for (unsigned i = 0; i < GetAuthorCount(); ++i)
+ {
+ if (authors[i].GetId() == _id)
+ return &authors[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "author", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Author *PokeGen::PokeMod::Pokemod::GetAuthor(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "author", n);
+ for (unsigned i = 0; i < GetAuthorCount(); ++i)
+ {
+ if (authors[i].GetName() == n)
+ return &authors[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "author", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetAuthorCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "author");
+ return authors.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewAuthor(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetAuthorCount(); ++i)
+ {
+ if (!GetAuthor(i))
+ break;
+ }
+ Author newAuthor(i);
+ if (ini)
+ newAuthor.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "author", i);
+ authors.push_back(newAuthor);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteAuthor(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "author", _id);
+ for (std::vector<Author>::iterator i = authors.begin(); i != authors.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "author", _id);
+ authors.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "author", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteAuthor(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "author", n);
+ for (std::vector<Author>::iterator i = authors.begin(); i != authors.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "author", n);
+ authors.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "author", n);
+}
+
+const PokeGen::PokeMod::Badge *PokeGen::PokeMod::Pokemod::GetBadge(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "badge", _id);
+ for (unsigned i = 0; i < GetBadgeCount(); ++i)
+ {
+ if (badges[i].GetId() == _id)
+ return &badges[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "badge", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Badge *PokeGen::PokeMod::Pokemod::GetBadge(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "badge", n);
+ for (unsigned i = 0; i < GetBadgeCount(); ++i)
+ {
+ if (badges[i].GetName() == n)
+ return &badges[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "badge", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetBadgeCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "badge");
+ return badges.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewBadge(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetBadgeCount(); ++i)
+ {
+ if (!GetBadge(i))
+ break;
+ }
+ Badge newBadge(i);
+ if (ini)
+ newBadge.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "badge", i);
+ badges.push_back(newBadge);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteBadge(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "badge", _id);
+ for (std::vector<Badge>::iterator i = badges.begin(); i != badges.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "badge", _id);
+ badges.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "badge", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteBadge(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "badge", n);
+ for (std::vector<Badge>::iterator i = badges.begin(); i != badges.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "badge", n);
+ badges.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "badge", n);
+}
+
+const PokeGen::PokeMod::CoinList *PokeGen::PokeMod::Pokemod::GetCoinList(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "coin list", _id);
+ for (unsigned i = 0; i < GetCoinListCount(); ++i)
+ {
+ if (coinLists[i].GetId() == _id)
+ return &coinLists[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "coin list", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::CoinList *PokeGen::PokeMod::Pokemod::GetCoinList(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "coin list", n);
+ for (unsigned i = 0; i < GetCoinListCount(); ++i)
+ {
+ if (coinLists[i].GetName() == n)
+ return &coinLists[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "coin list", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetCoinListCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "coin list");
+ return coinLists.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewCoinList(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetCoinListCount(); ++i)
+ {
+ if (!GetCoinList(i))
+ break;
+ }
+ CoinList newCoinList(i);
+ if (ini)
+ newCoinList.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "coin list", i);
+ coinLists.push_back(newCoinList);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteCoinList(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "coin list", _id);
+ for (std::vector<CoinList>::iterator i = coinLists.begin(); i != coinLists.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "coin list", _id);
+ coinLists.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "coin list", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteCoinList(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "coin list", n);
+ for (std::vector<CoinList>::iterator i = coinLists.begin(); i != coinLists.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "coin list", n);
+ coinLists.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "coin list", n);
+}
+
+const PokeGen::PokeMod::Dialog *PokeGen::PokeMod::Pokemod::GetDialog(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "dialog", _id);
+ for (unsigned i = 0; i < GetDialogCount(); ++i)
+ {
+ if (dialogs[i].GetId() == _id)
+ return &dialogs[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "dialog", _id);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetDialogCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "dialog");
+ return dialogs.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewDialog(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetDialogCount(); ++i)
+ {
+ if (!GetDialog(i))
+ break;
+ }
+ Dialog newDialog(i);
+ if (ini)
+ newDialog.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "dialog", i);
+ dialogs.push_back(newDialog);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteDialog(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "dialog", _id);
+ for (std::vector<Dialog>::iterator i = dialogs.begin(); i != dialogs.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "dialog", _id);
+ dialogs.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "dialog", _id);
+}
+
+const PokeGen::PokeMod::EggGroup *PokeGen::PokeMod::Pokemod::GetEggGroup(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "egg group", _id);
+ for (unsigned i = 0; i < GetEggGroupCount(); ++i)
+ {
+ if (eggGroups[i].GetId() == _id)
+ return &eggGroups[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "egg group", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::EggGroup *PokeGen::PokeMod::Pokemod::GetEggGroup(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "egg group", n);
+ for (unsigned i = 0; i < GetEggGroupCount(); ++i)
+ {
+ if (eggGroups[i].GetName() == n)
+ return &eggGroups[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "egg group", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetEggGroupCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "egg group");
+ return eggGroups.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewEggGroup(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetEggGroupCount(); ++i)
+ {
+ if (!GetEggGroup(i))
+ break;
+ }
+ EggGroup newEggGroup(i);
+ if (ini)
+ newEggGroup.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "egg group", i);
+ eggGroups.push_back(newEggGroup);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteEggGroup(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "egg group", _id);
+ for (std::vector<EggGroup>::iterator i = eggGroups.begin(); i != eggGroups.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "egg group", _id);
+ eggGroups.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "egg group", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteEggGroup(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "egg group", n);
+ for (std::vector<EggGroup>::iterator i = eggGroups.begin(); i != eggGroups.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "egg group", n);
+ eggGroups.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "egg group", n);
+}
+
+const PokeGen::PokeMod::Item *PokeGen::PokeMod::Pokemod::GetItem(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "item", _id);
+ for (unsigned i = 0; i < GetItemCount(); ++i)
+ {
+ if (items[i].GetId() == _id)
+ return &items[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "item", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Item *PokeGen::PokeMod::Pokemod::GetItem(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "item", n);
+ for (unsigned i = 0; i < GetItemCount(); ++i)
+ {
+ if (items[i].GetName() == n)
+ return &items[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "item", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetItemCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "item");
+ return items.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewItem(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetItemCount(); ++i)
+ {
+ if (!GetItem(i))
+ break;
+ }
+ Item newItem(i);
+ if (ini)
+ newItem.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "item", i);
+ items.push_back(newItem);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteItem(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "item", _id);
+ for (std::vector<Item>::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "item", _id);
+ items.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "item", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteItem(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "item", n);
+ for (std::vector<Item>::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "item", n);
+ items.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "item", n);
+}
+
+const PokeGen::PokeMod::ItemStorage *PokeGen::PokeMod::Pokemod::GetItemStorage(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "item storage", _id);
+ for (unsigned i = 0; i < GetItemStorageCount(); ++i)
+ {
+ if (itemStorages[i].GetId() == _id)
+ return &itemStorages[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "item storage", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::ItemStorage *PokeGen::PokeMod::Pokemod::GetItemStorage(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "item storage", n);
+ for (unsigned i = 0; i < GetItemStorageCount(); ++i)
+ {
+ if (itemStorages[i].GetName() == n)
+ return &itemStorages[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "item storage", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetItemStorageCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "item storage");
+ return itemStorages.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewItemStorage(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetItemStorageCount(); ++i)
+ {
+ if (!GetItemStorage(i))
+ break;
+ }
+ ItemStorage newItemStorage(i);
+ if (ini)
+ newItemStorage.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "item storage", i);
+ itemStorages.push_back(newItemStorage);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteItemStorage(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "item storage", _id);
+ for (std::vector<ItemStorage>::iterator i = itemStorages.begin(); i != itemStorages.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "item storage", _id);
+ itemStorages.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "item storage", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteItemStorage(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "item storage", n);
+ for (std::vector<ItemStorage>::iterator i = itemStorages.begin(); i != itemStorages.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "item storage", n);
+ itemStorages.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "item storage", n);
+}
+
+const PokeGen::PokeMod::Map *PokeGen::PokeMod::Pokemod::GetMap(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "map", _id);
+ for (unsigned i = 0; i < GetMapCount(); ++i)
+ {
+ if (maps[i].GetId() == _id)
+ return &maps[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "map", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Map *PokeGen::PokeMod::Pokemod::GetMap(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "map", n);
+ for (unsigned i = 0; i < GetMapCount(); ++i)
+ {
+ if (maps[i].GetName() == n)
+ return &maps[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "map", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMapCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "map");
+ return maps.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewMap(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetMapCount(); ++i)
+ {
+ if (!GetMap(i))
+ break;
+ }
+ Map newMap(i);
+ if (ini)
+ newMap.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "map", i);
+ maps.push_back(newMap);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteMap(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "map", _id);
+ for (std::vector<Map>::iterator i = maps.begin(); i != maps.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "map", _id);
+ maps.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "map", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteMap(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "map", n);
+ for (std::vector<Map>::iterator i = maps.begin(); i != maps.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "map", n);
+ maps.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "map", n);
+}
+
+const PokeGen::PokeMod::Move *PokeGen::PokeMod::Pokemod::GetMove(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "move", _id);
+ for (unsigned i = 0; i < GetMoveCount(); ++i)
+ {
+ if (moves[i].GetId() == _id)
+ return &moves[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "move", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Move *PokeGen::PokeMod::Pokemod::GetMove(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "move", n);
+ for (unsigned i = 0; i < GetMoveCount(); ++i)
+ {
+ if (moves[i].GetName() == n)
+ return &moves[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "move", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetMoveCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "move");
+ return moves.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewMove(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetMoveCount(); ++i)
+ {
+ if (!GetMove(i))
+ break;
+ }
+ Move newMove(i);
+ if (ini)
+ newMove.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "move", i);
+ moves.push_back(newMove);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteMove(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "move", _id);
+ for (std::vector<Move>::iterator i = moves.begin(); i != moves.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "move", _id);
+ moves.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "move", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteMove(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "move", n);
+ for (std::vector<Move>::iterator i = moves.begin(); i != moves.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "move", n);
+ moves.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "move", n);
+}
+
+const PokeGen::PokeMod::Nature *PokeGen::PokeMod::Pokemod::GetNature(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "nature", _id);
+ for (unsigned i = 0; i < GetNatureCount(); ++i)
+ {
+ if (natures[i].GetId() == _id)
+ return &natures[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "nature", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Nature *PokeGen::PokeMod::Pokemod::GetNature(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "nature", n);
+ for (unsigned i = 0; i < GetNatureCount(); ++i)
+ {
+ if (natures[i].GetName() == n)
+ return &natures[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "nature", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetNatureCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "nature");
+ return natures.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewNature(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetNatureCount(); ++i)
+ {
+ if (!GetNature(i))
+ break;
+ }
+ Nature newNature(i);
+ if (ini)
+ newNature.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "nature", i);
+ natures.push_back(newNature);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteNature(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "nature", _id);
+ for (std::vector<Nature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "nature", _id);
+ natures.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "nature", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteNature(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "nature", n);
+ for (std::vector<Nature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "nature", n);
+ natures.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "nature", n);
+}
+
+const PokeGen::PokeMod::Pokemon *PokeGen::PokeMod::Pokemod::GetPokemon(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "Pokémon", _id);
+ for (unsigned i = 0; i < GetPokemonCount(); ++i)
+ {
+ if (pokemon[i].GetId() == _id)
+ return &pokemon[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "Pokémon", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Pokemon *PokeGen::PokeMod::Pokemod::GetPokemon(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "Pokémon", n);
+ for (unsigned i = 0; i < GetPokemonCount(); ++i)
+ {
+ if (pokemon[i].GetName() == n)
+ return &pokemon[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "Pokémon", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetPokemonCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "Pokémon");
+ return pokemon.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewPokemon(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetPokemonCount(); ++i)
+ {
+ if (!GetPokemon(i))
+ break;
+ }
+ Pokemon newPokemon(i);
+ if (ini)
+ newPokemon.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "Pokémon", i);
+ pokemon.push_back(newPokemon);
+}
+
+void PokeGen::PokeMod::Pokemod::DeletePokemon(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "Pokémon", _id);
+ for (std::vector<Pokemon>::iterator i = pokemon.begin(); i != pokemon.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "Pokémon", _id);
+ pokemon.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "Pokémon", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeletePokemon(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "Pokémon", n);
+ for (std::vector<Pokemon>::iterator i = pokemon.begin(); i != pokemon.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "Pokémon", n);
+ pokemon.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "Pokémon", n);
+}
+
+const PokeGen::PokeMod::Status *PokeGen::PokeMod::Pokemod::GetStatus(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "status", _id);
+ for (unsigned i = 0; i < GetStatusCount(); ++i)
+ {
+ if (statuses[i].GetId() == _id)
+ return &statuses[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "status", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Status *PokeGen::PokeMod::Pokemod::GetStatus(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "status", n);
+ for (unsigned i = 0; i < GetStatusCount(); ++i)
+ {
+ if (statuses[i].GetName() == n)
+ return &statuses[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "status", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStatusCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "status");
+ return statuses.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewStatus(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetStatusCount(); ++i)
+ {
+ if (!GetStatus(i))
+ break;
+ }
+ Status newStatus(i);
+ if (ini)
+ newStatus.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "status", i);
+ statuses.push_back(newStatus);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteStatus(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "status", _id);
+ for (std::vector<Status>::iterator i = statuses.begin(); i != statuses.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "status", _id);
+ statuses.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "status", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteStatus(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "status", n);
+ for (std::vector<Status>::iterator i = statuses.begin(); i != statuses.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "status", n);
+ statuses.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "status", n);
+}
+
+const PokeGen::PokeMod::Store *PokeGen::PokeMod::Pokemod::GetStore(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "store", _id);
+ for (unsigned i = 0; i < GetStoreCount(); ++i)
+ {
+ if (stores[i].GetId() == _id)
+ return &stores[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "store", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Store *PokeGen::PokeMod::Pokemod::GetStore(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "store", n);
+ for (unsigned i = 0; i < GetStoreCount(); ++i)
+ {
+ if (stores[i].GetName() == n)
+ return &stores[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "store", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetStoreCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "store");
+ return stores.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewStore(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetStoreCount(); ++i)
+ {
+ if (!GetStore(i))
+ break;
+ }
+ Store newStore(i);
+ if (ini)
+ newStore.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "store", i);
+ stores.push_back(newStore);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteStore(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "store", _id);
+ for (std::vector<Store>::iterator i = stores.begin(); i != stores.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "store", _id);
+ stores.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "store", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteStore(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "store", n);
+ for (std::vector<Store>::iterator i = stores.begin(); i != stores.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "store", n);
+ stores.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "store", n);
+}
+
+const PokeGen::PokeMod::Tile *PokeGen::PokeMod::Pokemod::GetTile(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "tile", _id);
+ for (unsigned i = 0; i < GetTileCount(); ++i)
+ {
+ if (tiles[i].GetId() == _id)
+ return &tiles[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "tile", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Tile *PokeGen::PokeMod::Pokemod::GetTile(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "tile", n);
+ for (unsigned i = 0; i < GetTileCount(); ++i)
+ {
+ if (tiles[i].GetName() == n)
+ return &tiles[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "tile", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTileCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "tile");
+ return tiles.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewTile(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetTileCount(); ++i)
+ {
+ if (!GetTile(i))
+ break;
+ }
+ Tile newTile(i);
+ if (ini)
+ newTile.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "tile", i);
+ tiles.push_back(newTile);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteTile(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "tile", _id);
+ for (std::vector<Tile>::iterator i = tiles.begin(); i != tiles.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "tile", _id);
+ tiles.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "tile", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteTile(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "tile", n);
+ for (std::vector<Tile>::iterator i = tiles.begin(); i != tiles.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "tile", n);
+ tiles.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "tile", n);
+}
+
+const PokeGen::PokeMod::Time *PokeGen::PokeMod::Pokemod::GetTime(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "time", _id);
+ for (unsigned i = 0; i < GetTimeCount(); ++i)
+ {
+ if (times[i].GetId() == _id)
+ return &times[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "time", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Time *PokeGen::PokeMod::Pokemod::GetTime(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "time", n);
+ for (unsigned i = 0; i < GetTimeCount(); ++i)
+ {
+ if (times[i].GetName() == n)
+ return &times[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "time", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTimeCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "time");
+ return times.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewTime(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetTimeCount(); ++i)
+ {
+ if (!GetTime(i))
+ break;
+ }
+ Time newTime(i);
+ if (ini)
+ newTime.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "time", i);
+ times.push_back(newTime);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteTime(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "time", _id);
+ for (std::vector<Time>::iterator i = times.begin(); i != times.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "time", _id);
+ times.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "time", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteTime(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "time", n);
+ for (std::vector<Time>::iterator i = times.begin(); i != times.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "time", n);
+ times.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "time", n);
+}
+
+const PokeGen::PokeMod::Type *PokeGen::PokeMod::Pokemod::GetType(const unsigned _id) const
+{
+ LogSubmoduleFetch("Pokemod", id, "type", _id);
+ for (unsigned i = 0; i < GetTypeCount(); ++i)
+ {
+ if (types[i].GetId() == _id)
+ return &types[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "type", _id);
+ return NULL;
+}
+
+const PokeGen::PokeMod::Type *PokeGen::PokeMod::Pokemod::GetType(const String &n) const
+{
+ LogSubmoduleFetch("Pokemod", id, "type", n);
+ for (unsigned i = 0; i < GetTypeCount(); ++i)
+ {
+ if (types[i].GetName() == n)
+ return &types[i];
+ }
+ LogSubmoduleFetchFail("Pokemod", id, "type", n);
+ return NULL;
+}
+
+unsigned PokeGen::PokeMod::Pokemod::GetTypeCount() const
+{
+ LogSubmoduleCount("Pokemod", id, "type");
+ return types.size();
+}
+
+void PokeGen::PokeMod::Pokemod::NewType(Ini *const ini)
+{
+ unsigned i = 0;
+ for (; i < GetTypeCount(); ++i)
+ {
+ if (!GetType(i))
+ break;
+ }
+ Type newType(i);
+ if (ini)
+ newType.ImportIni(*ini);
+ LogSubmoduleNew("Pokemod", id, "type", i);
+ types.push_back(newType);
+ typeChart.AddCol(Frac(1, 1));
+ typeChart.AddRow(Frac(1, 1));
+ typeChart[0][typeChart.GetHeight() - 1] = Frac(i, 1, true);
+ typeChart[typeChart.GetHeight() - 1][0] = Frac(i, 1, true);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteType(const unsigned _id)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "type", _id);
+ for (std::vector<Type>::iterator i = types.begin(); i != types.end(); ++i)
+ {
+ if (i->GetId() == _id)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "type", _id);
+ for (unsigned j = 0; j < typeChart.GetWidth(); ++j)
+ {
+ if (typeChart[j][0].GetNum() == _id)
+ {
+ typeChart.DeleteCol(j);
+ typeChart.DeleteRow(j);
+ }
+ }
+ types.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "type", _id);
+}
+
+void PokeGen::PokeMod::Pokemod::DeleteType(const String &n)
+{
+ LogSubmoduleRemoveStart("Pokemod", id, "type", n);
+ for (std::vector<Type>::iterator i = types.begin(); i != types.end(); ++i)
+ {
+ if (i->GetName() == n)
+ {
+ LogSubmoduleRemoved("Pokemod", id, "type", n);
+ for (unsigned j = 0; j < typeChart.GetWidth(); ++j)
+ {
+ if (typeChart[j][0].GetNum() == i->GetId())
+ {
+ typeChart.DeleteCol(j);
+ typeChart.DeleteRow(j);
+ }
+ }
+ types.erase(i);
+ }
+ }
+ LogSubmoduleRemoveFail("Pokemod", id, "type", n);
}
diff --git a/pokemod/Pokemod.h b/pokemod/Pokemod.h
index d9776957..a1bbc096 100644
--- a/pokemod/Pokemod.h
+++ b/pokemod/Pokemod.h
@@ -1,6 +1,6 @@
/////////////////////////////////////////////////////////////////////////////
// Name: pokemod/Pokemod.h
-// Purpose:
+// Purpose: Define a custom PokéMod for PokéGen
// Author: Ben Boeckel
// Modified by: Ben Boeckel
// Created: Sat Feb 24 21:41:19 2007
@@ -24,7 +24,13 @@
#ifndef __POKEMOD_POKEMOD__
#define __POKEMOD_POKEMOD__
+#define CUR_MAJOR_VERSION 0
+#define CUR_MINOR_VERSION 1
+
#include <vector>
+#include <map>
+#include <sstream>
+#include <string>
#include "pokemod_inc.h"
#include "Object.h"
#include "Ref.h"
@@ -34,14 +40,17 @@
#include "CoinList.h"
#include "Dialog.h"
#include "EggGroup.h"
+#include "Ini.h"
#include "Item.h"
#include "ItemStorage.h"
#include "Map.h"
#include "Move.h"
#include "Nature.h"
+#include "Point.h"
#include "Pokemon.h"
#include "Status.h"
#include "Store.h"
+#include "String.h"
#include "Tile.h"
#include "Time.h"
#include "Type.h"
@@ -60,11 +69,151 @@ namespace PokeGen
void ImportIni(std::ifstream &fin);
void ExportIni(std::ofstream &fout) const;
- bool IsSpecialSplit() const;
- bool IsSpecialDVSplit() const;
+ unsigned MaxCompatability(const Pokemod &p) const;
+
+ void SetTitle(const String &t);
+ void SetVersion(const String &v);
+ void SetDescription(const String &d);
+ void SetIsGenderAllowed(const bool g);
+ void SetIsBreedingAllowed(const bool b);
+ void SetEggSpecies(const unsigned e);
+ void SetEggSpecies(const String &e);
+ void SetCanHoldItems(const bool h);
+ void SetHasCriticalDomains(const bool c);
+ void SetIsContestAllowed(const bool c);
+ void SetIsAbilityAllowed(const bool a);
+ void SetIsNatureAllowed(const bool n);
+ void SetNumDaycares(const unsigned n);
+ void SetNumPokemonBoxes(const unsigned n);
+ void SetNumPokemonPerBox(const unsigned n);
+ void SetMaxParty(const unsigned m);
+ void SetMaxFight(const unsigned m);
+ void SetMaxMoves(const unsigned m);
+ void SetMaxLevel(const unsigned m);
+ void SetMaxMoney(const unsigned m);
+ void SetIsHardCash(const bool h);
+ void SetIsSpecialSplit(const bool s);
+ void SetIsSpecialDVSplit(const bool s);
+ void SetMaxDVValue(const unsigned char m);
+ void SetIsHappiness(const bool h);
+ void SetHappyFaintLoss(const unsigned h);
+ void SetHappyLevelGain(const unsigned h);
+ void SetHappySteps(const unsigned h);
+ void SetIsEffortValuesAllowed(const bool e);
+ void SetMaxTotalEV(const unsigned m);
+ void SetMaxEVPerStat(const unsigned m);
+ void SetPokerusChance(const Frac &p);
+ void SetPokerusChance(const unsigned n, const unsigned d);
+ void SetPokerusChanceNum(const unsigned n);
+ void SetPokerusChanceDenom(const unsigned d);
+ void SetStartMap(const unsigned s);
+ void SetStartMap(const String &s);
+ void SetStartMoney(const unsigned s);
+ void SetStartCoordinate(const Point &s);
+ void SetStartCoordinate(const unsigned x, const unsigned y);
+ void SetStartCoordinateX(const unsigned x);
+ void SetStartCoordinateY(const unsigned y);
+ void SetStartDirection(const unsigned s);
+ void SetStartDirection(const String &s);
+ void SetStartDialog(const unsigned s);
+ void SetWalkSkin(const Path &w);
+ void SetBikeSkin(const Path &b);
+ void SetSurfSkin(const Path &s);
+ void SetFlySkin(const Path &f);
+ void SetFishSkin(const Path &f);
+ void SetSurfFishSkin(const Path &s);
+ void SetSuperPCUname(const String &u);
+ void SetSuperPCPasswd(const String &p);
+ void SetStruggleMove(const unsigned s);
+ void SetStruggleMove(const String &s);
+ void SetConfuseMove(const unsigned c);
+ void SetConfuseMove(const String &c);
+
+ String GetTitle() const;
+ String GetVersion() const;
+ String GetDescription() const;
+ bool IsGenderAllowed() const;
+ bool IsBreedingAllowed() const;
+ unsigned GetEggSpecies() const;
+ String GetEggSpeciesString() const;
+ bool CanHoldItems() const;
+ bool HasCriticalDomains() const;
bool IsContestAllowed() const;
- unsigned GetMaxLevel() const;
+ bool IsAbilityAllowed() const;
+ bool IsNatureAllowed() const;
+ unsigned GetNumDaycares() const;
+ unsigned GetNumPokemonBoxes() const;
+ unsigned GetNumPokemonPerBox() const;
+ unsigned GetMaxParty() const;
unsigned GetMaxFight() const;
+ unsigned GetMaxMoves() const;
+ unsigned GetMaxLevel() const;
+ unsigned GetMaxMoney() const;
+ bool IsHardCash() const;
+ bool IsSpecialSplit() const;
+ bool IsSpecialDVSplit() const;
+ unsigned char GetMaxDVValue() const;
+ bool IsHappiness() const;
+ unsigned GetHappyFaintLoss() const;
+ unsigned GetHappyLevelGain() const;
+ unsigned GetHappySteps() const;
+ bool IsEffortValuesAllowed() const;
+ unsigned GetMaxTotalEV() const;
+ unsigned GetMaxEVPerStat() const;
+ Frac GetPokerusChance() const;
+ unsigned GetPokerusChanceNum() const;
+ unsigned GetPokerusChanceDenom() const;
+ unsigned GetStartMap() const;
+ String GetStartMapString() const;
+ unsigned GetStartMoney() const;
+ Point GetStartCoordinate() const;
+ unsigned GetStartCoordinateX() const;
+ unsigned GetStartCoordinateY() const;
+ unsigned GetStartDirection() const;
+ String GetStartDirectionString() const;
+ unsigned GetStartDialog() const;
+ String GetStartDialogString() const;
+ Path GetWalkSkin() const;
+ Path GetBikeSkin() const;
+ Path GetSurfSkin() const;
+ Path GetFlySkin() const;
+ Path GetFishSkin() const;
+ Path GetSurfFishSkin() const;
+ String GetSuperPCUname() const;
+ String GetSuperPCPasswd() const;
+ unsigned GetStruggleMove() const;
+ String GetStruggleMoveString() const;
+ unsigned GetConfuseMove() const;
+ String GetConfuseMoveString() const;
+
+ void SetTypeChart(const unsigned att, const unsigned def, const Frac &m) const;
+ void SetTypeChart(const unsigned att, const unsigned def, const unsigned n, const unsigned d) const;
+ void SetTypeChartNum(const unsigned att, const unsigned def, const unsigned n) const;
+ void SetTypeChartDenom(const unsigned att, const unsigned def, const unsigned d) const;
+ void SetTypeChart(const String &att, const unsigned def, const Frac &m) const;
+ void SetTypeChart(const String &att, const unsigned def, const unsigned n, const unsigned d) const;
+ void SetTypeChartNum(const String &att, const unsigned def, const unsigned n) const;
+ void SetTypeChartDenom(const String &att, const unsigned def, const unsigned d) const;
+ void SetTypeChart(const unsigned att, const String &def, const Frac &m) const;
+ void SetTypeChart(const unsigned att, const String &def, const unsigned n, const unsigned d) const;
+ void SetTypeChartNum(const unsigned att, const String &def, const unsigned n) const;
+ void SetTypeChartDenom(const unsigned att, const String &def, const unsigned d) const;
+ void SetTypeChart(const String &att, const String &def, const Frac &m) const;
+ void SetTypeChart(const String &att, const String &def, const unsigned n, const unsigned d) const;
+ void SetTypeChartNum(const String &att, const String &def, const unsigned n) const;
+ void SetTypeChartDenom(const String &att, const String &def, const unsigned d) const;
+ Frac GetTypeChart(const unsigned att, const unsigned def) const;
+ unsigned GetTypeChartNum(const unsigned att, const unsigned def) const;
+ unsigned GetTypeChartDenom(const unsigned att, const unsigned def) const;
+ Frac GetTypeChart(const String &att, const unsigned def) const;
+ unsigned GetTypeChartNum(const String &att, const unsigned def) const;
+ unsigned GetTypeChartDenom(const String &att, const unsigned def) const;
+ Frac GetTypeChart(const unsigned att, const String &def) const;
+ unsigned GetTypeChartNum(const unsigned att, const String &def) const;
+ unsigned GetTypeChartDenom(const unsigned att, const String &def) const;
+ Frac GetTypeChart(const String &att, const String &def) const;
+ unsigned GetTypeChartNum(const String &att, const String &def) const;
+ unsigned GetTypeChartDenom(const String &att, const String &def) const;
const Ability *GetAbility(const unsigned _id) const;
const Ability *GetAbility(const String &n) const;
@@ -188,9 +337,54 @@ namespace PokeGen
void Validate(const wxListBox &output);
# endif
- bool splitSpecial;
- bool splitSpecialDV;
+ String title;
+ String version;
+ String description;
+ bool genderAllowed;
+ bool breedingAllowed;
+ unsigned eggSpecies;
+ bool holdItems;
+ bool criticalDomains;
+ bool contestAllowed;
+ bool abilityAllowed;
+ bool natureAllowed;
+ unsigned numDaycares;
+ unsigned numPokemonBoxes;
+ unsigned numPokemonPerBox;
+ unsigned maxParty;
+ unsigned maxFight;
+ unsigned maxMoves;
unsigned maxLevel;
+ unsigned maxMoney;
+ bool hardCash;
+ bool specialSplit;
+ bool specialDVSplit;
+ unsigned char maxDVValue;
+ bool happiness;
+ unsigned happyFaintLoss;
+ unsigned happyLevelGain;
+ unsigned happySteps;
+ bool effortValuesAllowed;
+ unsigned maxTotalEV;
+ unsigned maxEVPerStat;
+ Frac pokerusChance;
+ unsigned startMap;
+ unsigned startMoney;
+ Point startCoordinate;
+ unsigned startDirection;
+ unsigned startDialog;
+ Path walkSkin;
+ Path bikeSkin;
+ Path surfSkin;
+ Path flySkin;
+ Path fishSkin;
+ Path surfFishSkin;
+ String superPCUname;
+ String superPCPasswd;
+ unsigned struggleMove;
+ unsigned confuseMove;
+
+ MatrixFrac typeChart;
std::vector<Ability> abilities;
std::vector<Author> authors;
@@ -199,7 +393,7 @@ namespace PokeGen
std::vector<Dialog> dialogs;
std::vector<EggGroup> eggGroups;
std::vector<Item> items;
- std::vector<ItemStorage> itemStorage;
+ std::vector<ItemStorage> itemStorages;
std::vector<Map> maps;
std::vector<Move> moves;
std::vector<Nature> natures;
diff --git a/pokemod/Pokemon.cpp b/pokemod/Pokemon.cpp
index cacd72a5..fdbf3072 100644
--- a/pokemod/Pokemon.cpp
+++ b/pokemod/Pokemon.cpp
@@ -25,33 +25,32 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
-PokeGen::PokeMod::Pokemon::Pokemon(const unsigned _id)
+PokeGen::PokeMod::Pokemon::Pokemon(const unsigned _id) :
+ name(""),
+ growth(UINT_MAX),
+ catchValue(0),
+ runChance(1, 1),
+ itemChance(1, 1),
+ pokedexNumber(UINT_MAX),
+ weight(0),
+ heightFeet(0),
+ heightInches(0),
+ pokedexEntry(""),
+ frontSprite(""),
+ backSprite(""),
+ listSprite(""),
+ genderFactor(1, 1, true),
+ eggSpecies(UINT_MAX),
+ eggSteps(0),
+ isDitto(false),
+ nidoranGroup(UINT_MAX)
{
LogCtor("Pokemon", id);
- name = "";
for (unsigned i = 0; i < STH_END_GSC; ++i)
{
baseStats[i] = 0;
effortValues[i] = 0;
}
- growth = UINT_MAX;
- experienceValue = 0;
- catchValue = 0;
- runChance.Set(1, 1);
- itemChance.Set(1, 1);
- pokedexNumber = UINT_MAX;
- weight = 0;
- heightFeet = 0;
- heightInches = 0;
- pokedexEntry = "";
- frontSprite = "";
- backSprite = "";
- listSprite = "";
- genderFactor.Set(1, 1, true);
- eggSpecies = UINT_MAX;
- eggSteps = 0;
- isDitto = false;
- nidoranGroup = UINT_MAX;
id = _id;
}
@@ -132,90 +131,183 @@ void PokeGen::PokeMod::Pokemon::Validate()
LogVarNotValid("Pokemon", id, "eggSteps", name);
isValid = false;
}
- // Check if there are any abilities defined
- if (GetPokemonAbilityCount())
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> nameChecker;
+ if (curPokeMod.IsAbilityAllowed())
{
- // Validate each ability
- for (std::vector<PokemonAbility>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ if (GetPokemonAbilityCount())
{
- LogSubmoduleIterate("Pokemon", id, "ability", i->GetId(), name);
- // If an ability isn't valid, neither is the Pokémon
- if (!i->IsValid())
- isValid = false;
+ for (std::vector<PokemonAbility>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "ability", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetAbilityString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "ability", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "ability", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "ability", name);
+ isValid = false;
}
}
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "ability", name);
- isValid = false;
- }
- // Check if there are any evolutions defined
- if (GetPokemonAbilityCount())
+ if (GetPokemonEvolutionCount())
{
- // Validate each evolution
for (std::vector<PokemonEvolution>::iterator i = evolutions.begin(); i != evolutions.end(); ++i)
{
LogSubmoduleIterate("Pokemon", id, "evolution", i->GetId(), name);
- // If an evolution isn't valid, neither is the Pokémon
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetSpeciesString()];
}
- }
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "evolution", name);
- isValid = false;
- }
- // Check if there are any item defined
- if (GetPokemonItemCount())
- {
- // Validate each item
- for (std::vector<PokemonItem>::iterator i = items.begin(); i != items.end(); ++i)
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
{
- LogSubmoduleIterate("Pokemon", id, "item", i->GetId(), name);
- // If an item isn't valid, neither is the Pokémon
- if (!i->IsValid())
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "evolution", i->first, name);
isValid = false;
+ }
}
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "evolution", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
+ LogSubmoduleEmpty("Pokemon", id, "evolution", name);
+ if (curPokeMod.CanHoldItems())
{
- LogSubmoduleEmpty("Pokemon", id, "item", name);
- isValid = false;
+ if (GetPokemonItemCount())
+ {
+ for (std::vector<PokemonItem>::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "item", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetItemString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "item", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "item", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "item", name);
+ isValid = false;
+ }
}
- // Check if there are any move defined
if (GetPokemonMoveCount())
{
- // Validate each move
for (std::vector<PokemonMove>::iterator i = moves.begin(); i != moves.end(); ++i)
{
LogSubmoduleIterate("Pokemon", id, "move", i->GetId(), name);
- // If an move isn't valid, neither is the Pokémon
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetMoveString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "move", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "move", i->first, name);
+ isValid = false;
+ }
}
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Pokemon", id, "move", name);
isValid = false;
}
- // Check if there are any natures defined
- if (GetPokemonAbilityCount())
+ if (curPokeMod.IsNatureAllowed())
{
- // Validate each nature
- for (std::vector<PokemonNature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ if (GetPokemonNatureCount())
{
- LogSubmoduleIterate("Pokemon", id, "nature", i->GetId(), name);
- // If an nature isn't valid, neither is the Pokémon
- if (!i->IsValid())
- isValid = false;
+ for (std::vector<PokemonNature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "nature", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetNatureString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "nature", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "nature", i->first, name);
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "nature", name);
+ isValid = false;
}
- }
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "nature", name);
- isValid = false;
}
LogValidateOver("Pokemon", id, isValid, name);
}
@@ -233,7 +325,7 @@ void PokeGen::PokeMod::Pokemon::Validate(const wxListBox &output)
if (name == "")
{
LogVarNotSet("Pokemon", id, "name", name);
- output.append(ConsoleLogVarNotSet("Pokemon", id, "name", name));
+ output.Append(ConsoleLogVarNotSet("Pokemon", id, "name", name));
isValid = false;
}
for (unsigned i = 0; i < (curPokeMod.IsSpecialSplit() ? STH_END_GSC : STH_END_RBY); ++i)
@@ -241,31 +333,31 @@ void PokeGen::PokeMod::Pokemon::Validate(const wxListBox &output)
if (!baseStats[i])
{
LogVarNotValid("Pokemon", id, String("baseStats[%u]", i), name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, String("baseStats[%u]", i), name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, String("baseStats[%u]", i), name));
isValid = false;
}
}
if (STY_END <= growth)
{
LogVarNotValid("Pokemon", id, "growth", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "growth", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "growth", name));
isValid = false;
}
if (curPokeMod.GetPokemonCount() <= pokedexNumber)
{
LogVarNotValid("Pokemon", id, "pokedexNumber", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "pokedexNumber", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "pokedexNumber", name));
isValid = false;
}
if (!weight)
{
LogVarNotSet("Pokemon", id, "weight", name);
- output.append(ConsoleLogVarNotSetW("Pokemon", id, "weight", name));
+ output.Append(ConsoleLogVarNotSetW("Pokemon", id, "weight", name));
}
if (12 <= heightInches)
{
LogVarNotValid("Pokemon", id, "heightInches", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "heightInches", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "heightInches", name));
isValid = false;
}
if (!frontSprite.DoesExist())
@@ -273,12 +365,12 @@ void PokeGen::PokeMod::Pokemon::Validate(const wxListBox &output)
if (frontSprite == "")
{
LogVarNotSet("Pokemon", id, "frontSprite", name);
- output.append(ConsoleLogVarNotSet("Pokemon", id, "frontSprite", name));
+ output.Append(ConsoleLogVarNotSet("Pokemon", id, "frontSprite", name));
}
else
{
LogVarNotValid("Pokemon", id, "frontSprite", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "frontSprite", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "frontSprite", name));
}
isValid = false;
}
@@ -287,12 +379,12 @@ void PokeGen::PokeMod::Pokemon::Validate(const wxListBox &output)
if (backSprite == "")
{
LogVarNotSet("Pokemon", id, "backSprite", name);
- output.append(ConsoleLogVarNotSet("Pokemon", id, "backSprite", name));
+ output.Append(ConsoleLogVarNotSet("Pokemon", id, "backSprite", name));
}
else
{
LogVarNotValid("Pokemon", id, "backSprite", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "backSprite", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "backSprite", name));
}
isValid = false;
}
@@ -301,115 +393,220 @@ void PokeGen::PokeMod::Pokemon::Validate(const wxListBox &output)
if (listSprite == "")
{
LogVarNotSet("Pokemon", id, "listSprite", name);
- output.append(ConsoleLogVarNotSet("Pokemon", id, "listSprite", name));
+ output.Append(ConsoleLogVarNotSet("Pokemon", id, "listSprite", name));
}
else
{
LogVarNotValid("Pokemon", id, "listSprite", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "listSprite", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "listSprite", name));
}
isValid = false;
}
if (!curPokeMod.GetPokemon(eggSpecies))
{
LogVarNotValid("Pokemon", id, "eggSpecies", name);
- output.append(ConsoleLogVarNotValidW("Pokemon", id, "eggSpecies", name));
+ output.Append(ConsoleLogVarNotValidW("Pokemon", id, "eggSpecies", name));
}
else if (!eggSteps)
{
LogVarNotValid("Pokemon", id, "eggSteps", name);
- output.append(ConsoleLogVarNotValid("Pokemon", id, "eggSteps", name));
+ output.Append(ConsoleLogVarNotValid("Pokemon", id, "eggSteps", name));
isValid = false;
}
- // Check if there are any abilities defined
- if (GetPokemonAbilityCount())
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> nameChecker;
+ if (curPokeMod.IsAbilityAllowed())
{
- // Validate each ability
- for (std::vector<PokemonAbility>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ if (GetPokemonAbilityCount())
{
- LogSubmoduleIterate("Pokemon", id, "ability", i->GetId(), name);
- // If an ability isn't valid, neither is the Pokémon
- if (!i->IsValid())
- isValid = false;
+ for (std::vector<PokemonAbility>::iterator i = abilities.begin(); i != abilities.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "ability", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetAbilityString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "ability", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Pokemon", id, "ability", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "ability", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Pokemon", id, "ability", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "ability", name);
+ output.Append(ConsoleLogSubmoduleEmpty("Pokemon", id, "ability", name));
+ isValid = false;
}
}
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "ability", name);
- output.append(ConsoleLogSubmoduleEmpty("Pokemon", id, "ability", name));
- isValid = false;
- }
- // Check if there are any evolutions defined
- if (GetPokemonAbilityCount())
+ if (GetPokemonEvolutionCount())
{
- // Validate each evolution
for (std::vector<PokemonEvolution>::iterator i = evolutions.begin(); i != evolutions.end(); ++i)
{
LogSubmoduleIterate("Pokemon", id, "evolution", i->GetId(), name);
- // If an evolution isn't valid, neither is the Pokémon
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetSpeciesString()];
}
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "evolution", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Pokemon", id, "evolution", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "evolution", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Pokemon", id, "evolution", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Pokemon", id, "evolution", name);
- output.append(ConsoleLogSubmoduleEmpty("Pokemon", id, "evolution", name));
- isValid = false;
+ output.Append(ConsoleLogSubmoduleEmptyW("Pokemon", id, "evolution", name));
}
- // Check if there are any item defined
- if (GetPokemonItemCount())
+ if (curPokeMod.CanHoldItems())
{
- // Validate each item
- for (std::vector<PokemonItem>::iterator i = items.begin(); i != items.end(); ++i)
+ if (GetPokemonItemCount())
{
- LogSubmoduleIterate("Pokemon", id, "item", i->GetId(), name);
- // If an item isn't valid, neither is the Pokémon
- if (!i->IsValid())
- isValid = false;
+ for (std::vector<PokemonItem>::iterator i = items.begin(); i != items.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "item", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetItemString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "item", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Pokemon", id, "item", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "item", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Pokemon", id, "item", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "item", name);
+ output.Append(ConsoleLogSubmoduleEmpty("Pokemon", id, "item", name));
+ isValid = false;
}
}
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "item", name);
- output.append(ConsoleLogSubmoduleEmpty("Pokemon", id, "item", name));
- isValid = false;
- }
- // Check if there are any move defined
if (GetPokemonMoveCount())
{
- // Validate each move
for (std::vector<PokemonMove>::iterator i = moves.begin(); i != moves.end(); ++i)
{
LogSubmoduleIterate("Pokemon", id, "move", i->GetId(), name);
- // If an move isn't valid, neither is the Pokémon
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetMoveString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "move", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Pokemon", id, "move", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "move", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Pokemon", id, "move", i->first, name));
+ isValid = false;
+ }
}
+ idChecker.clear();
+ nameChecker.clear();
}
else
{
LogSubmoduleEmpty("Pokemon", id, "move", name);
- output.append(ConsoleLogSubmoduleEmpty("Pokemon", id, "move", name));
+ output.Append(ConsoleLogSubmoduleEmpty("Pokemon", id, "move", name));
isValid = false;
}
- // Check if there are any natures defined
- if (GetPokemonAbilityCount())
+ if (curPokeMod.IsNatureAllowed())
{
- // Validate each nature
- for (std::vector<PokemonNature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ if (GetPokemonNatureCount())
{
- LogSubmoduleIterate("Pokemon", id, "nature", i->GetId(), name);
- // If an nature isn't valid, neither is the Pokémon
- if (!i->IsValid())
- isValid = false;
+ for (std::vector<PokemonNature>::iterator i = natures.begin(); i != natures.end(); ++i)
+ {
+ LogSubmoduleIterate("Pokemon", id, "nature", i->GetId(), name);
+ if (!i->IsValid())
+ isValid = false;
+ ++idChecker[i->GetId()];
+ ++nameChecker[i->GetNatureString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Pokemon", id, "nature", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Pokemon", id, "nature", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = nameChecker.begin(); i != nameChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Pokemon", id, "nature", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Pokemon", id, "nature", i->first, name));
+ isValid = false;
+ }
+ }
+ idChecker.clear();
+ nameChecker.clear();
+ }
+ else
+ {
+ LogSubmoduleEmpty("Pokemon", id, "nature", name);
+ output.Append(ConsoleLogSubmoduleEmpty("Pokemon", id, "nature", name));
+ isValid = false;
}
- }
- else
- {
- LogSubmoduleEmpty("Pokemon", id, "nature", name);
- output.append(ConsoleLogSubmoduleEmpty("Pokemon", id, "nature", name));
- isValid = false;
}
LogValidateOver("Pokemon", id, isValid, name);
}
diff --git a/pokemod/Pokemon.h b/pokemod/Pokemon.h
index 0b61841d..a3946c9a 100644
--- a/pokemod/Pokemon.h
+++ b/pokemod/Pokemon.h
@@ -25,6 +25,7 @@
#define __POKEMOD_POKEMON__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Frac.h"
diff --git a/pokemod/PokemonAbility.cpp b/pokemod/PokemonAbility.cpp
index 8fc9a068..f710be27 100644
--- a/pokemod/PokemonAbility.cpp
+++ b/pokemod/PokemonAbility.cpp
@@ -26,8 +26,8 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::PokemonAbility::PokemonAbility(const unsigned _id) :
- ability(UINT_MAX),
- weight(1)
+ ability(UINT_MAX),
+ weight(1)
{
LogCtor("PokemonAbility", _id);
id = _id;
@@ -76,9 +76,9 @@ void PokeGen::PokeMod::PokemonAbility::Validate(const wxListBox &output)
{
LogVarNotSet("PokemonAbility", id, "weight", GetAbilityString());
output.Append(ConsoleLogVarNotSet("PokemonAbility", id, weight, GetAbilityString());
- isValid = false;
- }
- LogValidateOver("PokemonAbility", id, isValid, GetAbilityString());
+ isValid = false;
+ }
+ LogValidateOver("PokemonAbility", id, isValid, GetAbilityString());
}
#endif
@@ -88,7 +88,6 @@ void PokeGen::PokeMod::PokemonAbility::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("PokemonAbility");
}
@@ -102,8 +101,7 @@ void PokeGen::PokeMod::PokemonAbility::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::PokemonAbility::ExportIni(std::ofstream &fout, const String &pokemon) const
{
LogExportStart("PokemonAbility", id);
- // Make elements
- Ini exPokemonAbility(pokemon + " pokemonAbility");
+ Ini exPokemonAbility("pokemonAbility " + pokemon);
exPokemonAbility.AddField("id", id);
exPokemonAbility.AddField("ability", ability);
exPokemonAbility.AddField("weight", weight);
diff --git a/pokemod/PokemonEvolution.cpp b/pokemod/PokemonEvolution.cpp
index 92ef1a8c..cfc424db 100644
--- a/pokemod/PokemonEvolution.cpp
+++ b/pokemod/PokemonEvolution.cpp
@@ -26,11 +26,11 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::PokemonEvolution::PokemonEvolution(const unsigned _id) :
- species(UINT_MAX),
- style(UINT_MAX),
- level(0),
- item(UINT_MAX),
- happiness(0)
+ species(UINT_MAX),
+ style(UINT_MAX),
+ level(0),
+ item(UINT_MAX),
+ happiness(0)
{
LogCtor("PokemonEvolution", _id);
id = _id;
@@ -113,7 +113,6 @@ void PokeGen::PokeMod::PokemonEvolution::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("PokemonEvolution");
}
@@ -130,8 +129,7 @@ void PokeGen::PokeMod::PokemonEvolution::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::PokemonEvolution::ExportIni(std::ofstream &fout, const String &pokemon) const
{
LogExportStart("PokemonEvolution", id);
- // Make elements
- Ini exPokemonEvolution(pokemon + " pokemonEvolution");
+ Ini exPokemonEvolution("pokemonEvolution " + pokemon);
exPokemonEvolution.AddField("id", id);
exPokemonEvolution.AddField("species", species);
exPokemonEvolution.AddField("style", style);
diff --git a/pokemod/PokemonItem.cpp b/pokemod/PokemonItem.cpp
index af4a9626..f1c1ceca 100644
--- a/pokemod/PokemonItem.cpp
+++ b/pokemod/PokemonItem.cpp
@@ -26,8 +26,8 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::PokemonItem::PokemonItem(const unsigned _id) :
- item(UINT_MAX),
- weight(1)
+ item(UINT_MAX),
+ weight(1)
{
LogCtor("PokemonItem", _id);
id = _id;
@@ -75,7 +75,7 @@ void PokeGen::PokeMod::PokemonItem::Validate(const wxListBox &output)
if (!weight)
{
LogVarNotSet("PokemonItem", id, weight, GetItemString());
- output.Append(ConsoleLogVarNotSet("PokemonItem", id, weight, GetItemString());
+ output.Append(ConsoleLogVarNotSet("PokemonItem", id, weight, GetItemString()));
isValid = false;
}
LogValidateOver("PokemonItem", id, isValid, GetItemString());
@@ -88,7 +88,6 @@ void PokeGen::PokeMod::PokemonItem::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("PokemonItem");
}
@@ -102,8 +101,7 @@ void PokeGen::PokeMod::PokemonItem::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::PokemonItem::ExportIni(std::ofstream &fout, const String &pokemon) const
{
LogExportStart("PokemonItem", id);
- // Make elements
- Ini exPokemonItem(pokemon + " pokemonItem");
+ Ini exPokemonItem("pokemonItem " + pokemon);
exPokemonItem.AddField("id", id);
exPokemonItem.AddField("item", item);
exPokemonItem.AddField("weight", weight);
diff --git a/pokemod/PokemonMove.cpp b/pokemod/PokemonMove.cpp
index 7aa75024..e3d0df75 100644
--- a/pokemod/PokemonMove.cpp
+++ b/pokemod/PokemonMove.cpp
@@ -100,7 +100,6 @@ void PokeGen::PokeMod::PokemonMove::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("PokemonMove");
}
@@ -115,8 +114,7 @@ void PokeGen::PokeMod::PokemonMove::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::PokemonMove::ExportIni(std::ofstream &fout, const String &pokemon) const
{
LogExportStart("PokemonMove", id);
- // Make elements
- Ini exPokemonMove(pokemon + " pokemonMove");
+ Ini exPokemonMove("pokemonMove " + pokemon);
exPokemonMove.AddField("id", id);
exPokemonMove.AddField("move", move);
exPokemonMove.AddField("level", level);
diff --git a/pokemod/PokemonNature.cpp b/pokemod/PokemonNature.cpp
index 27c402a0..c4c1ad39 100644
--- a/pokemod/PokemonNature.cpp
+++ b/pokemod/PokemonNature.cpp
@@ -26,8 +26,8 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::PokemonNature::PokemonNature(const unsigned _id) :
- nature(UINT_MAX),
- weight(1)
+ nature(UINT_MAX),
+ weight(1)
{
LogCtor("PokemonNature", _id);
id = _id;
@@ -76,9 +76,9 @@ void PokeGen::PokeMod::PokemonNature::Validate(const wxListBox &output)
{
LogVarNotSet("PokemonNature", id, "weight", GetNatureString());
output.Append(ConsoleLogVarNotSet("PokemonNature", id, weight, GetNatureString());
- isValid = false;
- }
- LogValidateOver("PokemonNature", id, isValid, GetNatureString());
+ isValid = false;
+ }
+ LogValidateOver("PokemonNature", id, isValid, GetNatureString());
}
#endif
@@ -88,7 +88,6 @@ void PokeGen::PokeMod::PokemonNature::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("PokemonNature");
}
@@ -102,8 +101,7 @@ void PokeGen::PokeMod::PokemonNature::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::PokemonNature::ExportIni(std::ofstream &fout, const String &pokemon) const
{
LogExportStart("PokemonNature", id);
- // Make elements
- Ini exPokemonNature(pokemon + " pokemonNature");
+ Ini exPokemonNature("pokemonNature " + pokemon);
exPokemonNature.AddField("id", id);
exPokemonNature.AddField("nature", nature);
exPokemonNature.AddField("weight", weight);
diff --git a/pokemod/Ref.cpp b/pokemod/Ref.cpp
index 51d6b49a..78862a15 100644
--- a/pokemod/Ref.cpp
+++ b/pokemod/Ref.cpp
@@ -26,7 +26,6 @@
int PokeGen::PokeMod::FindIn(const int end, const String &str, const char *array[])
{
int i = 0;
- // Loop through looking for where the string is in the array
for (; i < end; ++i)
{
if (str == array[i])
diff --git a/pokemod/Ref.h b/pokemod/Ref.h
index 7e79a648..c920eadb 100644
--- a/pokemod/Ref.h
+++ b/pokemod/Ref.h
@@ -27,8 +27,6 @@
#include <vector>
#include "String.h"
-// TODO (Comment#1#): Comment Ref
-
namespace PokeGen
{
namespace PokeMod
diff --git a/pokemod/Status.cpp b/pokemod/Status.cpp
index d867a436..b09de29a 100644
--- a/pokemod/Status.cpp
+++ b/pokemod/Status.cpp
@@ -27,13 +27,13 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Status::Status(const unsigned _id) :
- name(""),
- abbreviation(""),
- verb(""),
- afterSwitch(UINT_MAX),
- afterBattle(UINT_MAX),
- maxTurns(0),
- catchBonus(0)
+ name(""),
+ abbreviation(""),
+ verb(""),
+ afterSwitch(UINT_MAX),
+ afterBattle(UINT_MAX),
+ maxTurns(0),
+ catchBonus(0)
{
LogCtor("Status", id);
id = _id;
@@ -57,13 +57,21 @@ void PokeGen::PokeMod::Status::Validate()
LogValidateStart("Status", id, name);
if (name == "")
{
- LogVarNotSet("Status", id, "name", name);
+ LogVarNotSet("Status", id, "name");
+ isValid = false;
+ }
+ else if ((name == "Clear") || (name == "Any"))
+ {
+ LogVarNotValid("Status", id, "name", name);
isValid = false;
}
if (abbreviation == "")
LogVarNotSet("Status", id, "abbreviation", name);
else if (4 <= abbreviation.length())
+ {
LogVarNotValid("Status", id, "abbreviation", name);
+ isValid = false;
+ }
if (verb == "")
LogVarNotSet("Status", id, "verb", name);
if (afterSwitch == UINT_MAX)
@@ -80,16 +88,33 @@ void PokeGen::PokeMod::Status::Validate()
LogVarNotValid("Status", id, "afterBattle", name);
isValid = false;
}
- // Check if there are any effects defined
if (GetStatusEffectCount())
{
- // Validate each effect
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
for (std::vector<StatusEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Status", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the Status
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Status", id, "effect", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Status", id, "effect", i->first, name);
+ isValid = false;
+ }
}
}
else
@@ -110,6 +135,11 @@ void PokeGen::PokeMod::Status::Validate(const wxListBox &output)
output.Append(ConsoleLogVarNotSet("Status", id, "Name", name));
isValid = false;
}
+ else if (name == "Clear")
+ {
+ LogVarNotValid("Status", id, "name", name);
+ isValid = false;
+ }
if (abbreviation == "")
{
LogVarNotSet("Status", id, "abbreviation", name);
@@ -118,7 +148,8 @@ void PokeGen::PokeMod::Status::Validate(const wxListBox &output)
else if (4 <= abbreviation.length())
{
LogVarNotValid("Status", id, "abbreviation", name);
- output.Append(ConsoleLogVarNotValidW("Status", id, "abbreviation", name));
+ output.Append(ConsoleLogVarNotValid("Status", id, "abbreviation", name));
+ isValid = false;
}
if (verb == "")
{
@@ -147,16 +178,35 @@ void PokeGen::PokeMod::Status::Validate(const wxListBox &output)
output.Append(ConsoleLogVarNotValid("Status", id, "afterBattle", name));
isValid = false;
}
- // Check if there are any effects defined
if (GetStatusEffectCount())
{
- // Validate each effect
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> effectChecker;
for (std::vector<StatusEffect>::iterator i = effects.begin(); i != effects.end(); ++i)
{
LogSubmoduleIterate("Status", id, "effect", i->GetId(), name);
- // If an effect isn't valid, neither is the Status
if (!i->IsValid())
isValid = false;
+ ++idChecker[i->GetId()];
+ ++effectChecker[i->GetEffectString()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Status", id, "effect", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Status", id, "effect", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = effectChecker.begin(); i != effectChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Status", id, "effect", i->first, name);
+ output.Append(LogDuplicateSubmodule("Status", id, "effect", i->first, name));
+ isValid = false;
+ }
}
}
else
@@ -175,7 +225,6 @@ void PokeGen::PokeMod::Status::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Status");
}
@@ -195,7 +244,6 @@ void PokeGen::PokeMod::Status::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Status::ExportIni(std::ofstream &fout) const
{
LogExportStart("Status", id, name);
- // Make elements
Ini exStatus("Status");
exStatus.AddField("id", id);
exStatus.AddField("name", name);
@@ -353,7 +401,6 @@ unsigned PokeGen::PokeMod::Status::GetStatusEffectCount() const
void PokeGen::PokeMod::Status::NewStatusEffect(Ini *const ini)
{
unsigned i = 0;
- // Find the first unused ID in the vector
for (; i < GetStatusEffectCount(); ++i)
{
if (!GetStatusEffect(i))
diff --git a/pokemod/Status.h b/pokemod/Status.h
index 4dbb2607..515e1760 100644
--- a/pokemod/Status.h
+++ b/pokemod/Status.h
@@ -26,6 +26,7 @@
#define __POKEMOD_STATUS__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Pokemod.h"
diff --git a/pokemod/StatusEffect.cpp b/pokemod/StatusEffect.cpp
index 2ecd5f66..c9b1f401 100644
--- a/pokemod/StatusEffect.cpp
+++ b/pokemod/StatusEffect.cpp
@@ -26,9 +26,9 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::StatusEffect::StatusEffect(const unsigned _id) :
- effect(UINT_MAX),
- val1(UINT_MAX),
- val2(UINT_MAX)
+ effect(UINT_MAX),
+ val1(UINT_MAX),
+ val2(UINT_MAX)
{
LogCtor("StatusEffect", _id);
id = _id;
@@ -50,7 +50,8 @@ PokeGen::PokeMod::StatusEffect::~StatusEffect()
void PokeGen::PokeMod::StatusEffect::Validate()
{
LogValidateStart("StatusEffect", id);
- // TODO (Ben#1#): Validation
+ // TODO (Validation#1#): Validation
+# warning "StatusEffect Validation"
LogValidateOver("StatusEffect", id, isValid);
}
@@ -68,7 +69,6 @@ void PokeGen::PokeMod::StatusEffect::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("StatusEffect");
}
@@ -83,8 +83,7 @@ void PokeGen::PokeMod::StatusEffect::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::StatusEffect::ExportIni(std::ofstream &fout, const String &Status) const
{
LogExportStart("StatusEffect", id);
- // Make elements
- Ini exStatusEffect(Status + " StatusEffect");
+ Ini exStatusEffect("statusEffect " + status);
exStatusEffect.AddField("id", id);
exStatusEffect.AddField("effect", effect);
exStatusEffect.AddField("val1", val1);
diff --git a/pokemod/Store.cpp b/pokemod/Store.cpp
index 5d75ac37..a7b6a3d7 100644
--- a/pokemod/Store.cpp
+++ b/pokemod/Store.cpp
@@ -26,7 +26,7 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Store::Store(const unsigned _id) :
- name("")
+ name("")
{
LogCtor("Store", _id);
id = _id;
@@ -53,14 +53,42 @@ void PokeGen::PokeMod::Store::Validate()
LogVarNotSet("Store", id, "name", name);
isValid = false;
}
- for (unsigned i = 0; i < GetItemCount(); ++i)
+ if (GetItemCount())
{
- if (!curPokeMod.GetItem(items[i]))
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> itemChecker;
+ for (std::vector<unsigned>::const_iterator i = items.begin(); i != items.end(); ++i)
+ {
+ if (!curPokeMod.GetItem(*i))
+ {
+ LogVarNotValid("Store", id, "item", name);
+ isValid = false;
+ }
+ ++idChecker[*i];
+ ++itemChecker[curPokeMod.GetItem(*i)->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Store", id, "item", i->first, name);
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = itemChecker.begin(); i != itemChecker.end(); ++i)
{
- LogSubmoduleEmpty("Store", id, "item", name);
- isValid = false;
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Store", id, "item", i->first, name);
+ isValid = false;
+ }
}
}
+ else
+ {
+ LogSubmoduleEmpty("Store", id, "item", name);
+ isValid = false;
+ }
LogValidateOver("Store", id, isValid, name);
}
@@ -74,15 +102,46 @@ void PokeGen::PokeMod::Store::Validate(const wxListBox &output)
output.Append(ConsoleLogVarNotSet("Store", id, "name", name));
isValid = false;
}
- for (unsigned i = 0; i < GetItemCount(); ++i)
+ if (GetItemCount())
{
- if (!curPokeGen::PokeMod.GetItem(items[i]))
+ std::map<unsigned, unsigned> idChecker;
+ std::map<String, unsigned> itemChecker;
+ for (std::vector<unsigned>::const_iterator i = items.begin(); i != items.end(); ++i)
+ {
+ if (!curPokeMod.GetItem(*i))
+ {
+ LogVarNotValid("Store", id, "item", name);
+ output.Append(ConsoleLogVarNotValid("Store", id, "item", name));
+ isValid = false;
+ }
+ ++idChecker[*i];
+ ++itemChecker[curPokeMod.GetItem(*i)->GetName()];
+ }
+ for (std::map<unsigned, unsigned>::const_iterator i = idChecker.begin(); i != idChecker.end(); ++i)
+ {
+ if (1 < i->second)
+ {
+ LogDuplicateId("Store", id, "item", i->first, name);
+ output.Append(ConsoleLogDuplicateId("Store", id, "item", i->first, name));
+ isValid = false;
+ }
+ }
+ for (std::map<String, unsigned>::const_iterator i = itemChecker.begin(); i != itemChecker.end(); ++i)
{
- LogSubmoduleEmpty("Store", id, "item", name);
- output.Append(ConsoleLogVarNotSet("Store", id, "item", name));
- isValid = false;
+ if (1 < i->second)
+ {
+ LogDuplicateSubmodule("Store", id, "item", i->first, name);
+ output.Append(ConsoleLogDuplicateSubmodule("Store", id, "item", i->first, name));
+ isValid = false;
+ }
}
}
+ else
+ {
+ LogSubmoduleEmpty("Store", id, "item", name);
+ output.Append(ConsoleLogSubmoduleEmpty("Store", id, "item", name));
+ isValid = false;
+ }
LogValidateOver("Store", id, isValid, name);
}
#endif
@@ -93,7 +152,6 @@ void PokeGen::PokeMod::Store::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Store");
}
@@ -102,7 +160,7 @@ void PokeGen::PokeMod::Store::ImportIni(Ini &ini, const unsigned _id)
items.clear();
unsigned i;
unsigned j;
- ini.GetValue("name", name, "");
+ ini.GetValue("name", name);
ini.GetValue("numItems", i, 0);
for (unsigned k = 0; k < i; ++k)
{
@@ -116,7 +174,6 @@ void PokeGen::PokeMod::Store::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Store::ExportIni(std::ofstream &fout) const
{
LogExportStart("Store", id, name);
- // Make elements
Ini exStore("store");
exStore.AddField("id", id);
exStore.AddField("name", name);
@@ -133,7 +190,7 @@ void PokeGen::PokeMod::Store::SetName(const String &n)
name = n;
}
-PokeGen::PokeMod::String PokeGen::PokeMod::Store::GetName()
+PokeGen::PokeMod::String PokeGen::PokeMod::Store::GetName() const
{
LogFetchVar("Store", id, "name", name, name);
return name;
diff --git a/pokemod/Store.h b/pokemod/Store.h
index f9b3cd35..166efd25 100644
--- a/pokemod/Store.h
+++ b/pokemod/Store.h
@@ -25,6 +25,7 @@
#define __POKEMOD_STORE__
#include <vector>
+#include <map>
#include "Object.h"
#include "String.h"
#include "Pokemod.h"
@@ -45,7 +46,7 @@ namespace PokeGen
void SetName(const String &n);
- String GetName();
+ String GetName() const;
unsigned GetItem(const unsigned i) const;
bool HasItem(const unsigned _id) const;
diff --git a/pokemod/String.cpp b/pokemod/String.cpp
index 846c0667..0d8b8367 100644
--- a/pokemod/String.cpp
+++ b/pokemod/String.cpp
@@ -98,7 +98,7 @@ void PokeGen::PokeMod::String::printf(const char *fmt, va_list &args)
unit.c = (char)va_arg(args, int);
append(1, unit.c);
break;
- // Characters
+ // Unsigned characters
case 'x':
unit.uc = (unsigned char)va_arg(args, int);
append(1, unit.uc);
diff --git a/pokemod/TODO b/pokemod/TODO
index 6f843e1a..d05b7c15 100644
--- a/pokemod/TODO
+++ b/pokemod/TODO
@@ -2,6 +2,11 @@
Urgent
=================
+-----
+Paths
+-----
+Make bool and check for default places (???)
+
----------
References
----------
@@ -10,6 +15,7 @@ ContestEffects CONE Move
MoveEffects ME MoveEffect
MapEffect MAPE MapEffect
StatusEffect SE StatusEffect
+DialogCommand DC Dialog
---------------
Effect Switches
@@ -18,6 +24,11 @@ ItemEffect
MoveEffect
MapEffect
+---------------
+Enum <-> String
+---------------
+Class Template-ize (???)
+
=================
Showstopper
=================
@@ -28,7 +39,6 @@ Validation
StatusEffect
Dialog
ItemEffect
-MapWildList (Value/Scope)
MoveEffect
Pokemod
MapEffect
@@ -36,22 +46,6 @@ MapEffect
---------------
Duplicate Check
---------------
-Ability -> AbilityEffect
-CoinList -> CoinItem
-Item -> ItemEffect
-Map -> MapEffect
- -> MapTrainer
- -> MapWarp
- -> MapWildList
-MapWildList -> MapWildPokemon
- -> Times
-Move -> MoveEffect
-Pokemon -> PokemonAbility
- -> PokemonItem
- -> PokemonMove
- -> PokemonNature
-Status -> StatusEffect
-Store -> Item
Pokemod -> Ability
-> Author
-> Badge
diff --git a/pokemod/Tile.cpp b/pokemod/Tile.cpp
index 6465811f..7e3e7153 100644
--- a/pokemod/Tile.cpp
+++ b/pokemod/Tile.cpp
@@ -26,23 +26,23 @@
extern PokeGen::PokeMod::Pokemod curPokeMod;
PokeGen::PokeMod::Tile::Tile(const unsigned _id) :
- name(""),
- pic(""),
- fromUp(false),
- fromDown(false),
- fromLeft(false),
- fromRight(false),
- isWild(false),
- wildChance(1, 1),
- isWater(false),
- waterType(UINT_MAX),
- underWater(UINT_MAX),
- canDive(false),
- isCuttable(false),
- underCut(UINT_MAX),
- canHeadbutt(false),
- forceType(UINT_MAX),
- forceDirection(UINT_MAX)
+ name(""),
+ pic(""),
+ fromUp(false),
+ fromDown(false),
+ fromLeft(false),
+ fromRight(false),
+ isWild(false),
+ wildChance(1, 1),
+ isWater(false),
+ waterType(UINT_MAX),
+ underWater(UINT_MAX),
+ canDive(false),
+ isCuttable(false),
+ underCut(UINT_MAX),
+ canHeadbutt(false),
+ forceType(UINT_MAX),
+ forceDirection(UINT_MAX)
{
LogCtor("Tile", id);
id = _id;
@@ -127,7 +127,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (name == "")
{
LogVarNotSet("Tile", id, "Name", name);
- output.append(ConsoleLogVarNotSet("Tile", id, "Name", name));
+ output.Append(ConsoleLogVarNotSet("Tile", id, "Name", name));
isValid = false;
}
if (!pic.DoesExist())
@@ -135,12 +135,12 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (pic == "")
{
LogVarNotSet("Tile", id, "pic", name);
- output.append(ConsoleLogVarNotSet("Tile", id, "pic", name));
+ output.Append(ConsoleLogVarNotSet("Tile", id, "pic", name));
}
else
{
LogVarNotValid("Tile", id, "pic", name);
- output.append(ConsoleLogVarNotValid("Tile", id, "pic", name));
+ output.Append(ConsoleLogVarNotValid("Tile", id, "pic", name));
}
isValid = false;
}
@@ -149,7 +149,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (WT_END <= waterType)
{
LogVarNotValid("Tile", id, "waterType", name);
- output.append(Console);
+ output.Append(Console);
isValid = false;
}
else if (waterType == WT_WHIRLPOOL)
@@ -157,7 +157,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (!curPokeMod.GetTile(underWater))
{
LogVarNotValid("Tile", id, "underWater", name);
- output.append(Console);
+ output.Append(Console);
isValid = false;
}
}
@@ -167,7 +167,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (!curPokeMod.GetTile(underCut))
{
LogVarNotValid("Tile", id, "underCut", name);
- output.append(Console);
+ output.Append(Console);
isValid = false;
}
}
@@ -178,7 +178,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
if (DIR_END <= forceDirection)
{
LogVarNotValid("Tile", id, "forceDirection", name);
- output.append(Console);
+ output.Append(Console);
isValid = false;
}
}
@@ -186,7 +186,7 @@ void PokeGen::PokeMod::Tile::Validate(const wxListBox &output)
else
{
LogVarNotValid("Tile", id, "forceType", name);
- output.append(Console);
+ output.Append(Console);
isValid = false;
}
LogValidateOver("Tile", id, isValid, name);
@@ -199,7 +199,6 @@ void PokeGen::PokeMod::Tile::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Tile");
}
@@ -232,7 +231,6 @@ void PokeGen::PokeMod::Tile::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Tile::ExportIni(std::ofstream &fout) const
{
LogExportStart("Tile", id, name);
- // Make elements
Ini exTile("Tile");
exTile.AddField("id", id);
exTile.AddField("name", name);
diff --git a/pokemod/Time.cpp b/pokemod/Time.cpp
index ea49bac0..2e6fc6ab 100644
--- a/pokemod/Time.cpp
+++ b/pokemod/Time.cpp
@@ -24,9 +24,9 @@
#include "Time.h"
PokeGen::PokeMod::Time::Time(const unsigned _id) :
- name(""),
- startHour(0),
- startMinute(0)
+ name(""),
+ startHour(0),
+ startMinute(0)
{
LogCtor("Time", id);
id = _id;
@@ -98,7 +98,6 @@ void PokeGen::PokeMod::Time::ImportIni(Ini &ini, const unsigned _id)
if (_id == UINT_MAX)
{
ini.GetValue("id", id);
- // Was there an id associated with the element?
if (id == UINT_MAX)
LogIdNotFound("Time");
}
@@ -113,7 +112,6 @@ void PokeGen::PokeMod::Time::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Time::ExportIni(std::ofstream &fout) const
{
LogExportStart("Time", id, name);
- // Make elements
Ini exTime("time");
exTime.AddField("id", id);
exTime.AddField("name", name);
diff --git a/pokemod/Type.cpp b/pokemod/Type.cpp
index 5af815bf..c0b568c2 100644
--- a/pokemod/Type.cpp
+++ b/pokemod/Type.cpp
@@ -24,8 +24,8 @@
#include "Type.h"
PokeGen::PokeMod::Type::Type(const unsigned _id) :
- name(""),
- stab(false)
+ name(""),
+ stab(false)
{
LogCtor("Type", _id);
id = _id;
@@ -89,7 +89,6 @@ void PokeGen::PokeMod::Type::ImportIni(Ini &ini, const unsigned _id)
void PokeGen::PokeMod::Type::ExportIni(std::ofstream &fout) const
{
LogExportStart("Type", id, name);
- // Declare the elements
Ini exType("type");
exType.AddField("id", id);
exType.AddField("name", name);
diff --git a/pokemodr/gui/PokeModr.pjd b/pokemodr/gui/PokeModr.pjd
index c60aa61b..37120f79 100644
--- a/pokemodr/gui/PokeModr.pjd
+++ b/pokemodr/gui/PokeModr.pjd
@@ -87848,6 +87848,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Data"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -87894,8 +87896,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Data"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer H"</string>
<string name="type">"dialog-control-document"</string>
@@ -88010,6 +88010,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Meta"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -88056,8 +88058,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Meta"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -88805,6 +88805,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Rules"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -88851,8 +88853,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Rules"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -88967,6 +88967,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"General"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -89013,8 +89015,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"General"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -90165,6 +90165,374 @@ It hands control over to another Dialog depending on the answer."</string>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbStaticBoxSizerProxy"</string>
+ <string name="proxy-Id name">"wxID_ANY"</string>
+ <long name="proxy-Id value">-1</long>
+ <string name="proxy-Label">""</string>
+ <string name="proxy-Member variable name">""</string>
+ <string name="proxy-Sizer member variable name">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Static box class">"wxStaticBox"</string>
+ <string name="proxy-Orientation">"Horizontal"</string>
+ <string name="proxy-AlignH">"Expand"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">2</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <document>
+ <string name="title">"wxStaticText: wxID_STATIC"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"statictext"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbStaticTextProxy"</string>
+ <string name="proxy-Id name">"wxID_STATIC"</string>
+ <long name="proxy-Id value">5105</long>
+ <string name="proxy-Class">"wxStaticText"</string>
+ <string name="proxy-Base class">"wxStaticText"</string>
+ <bool name="proxy-External implementation">1</bool>
+ <bool name="proxy-Separate files">0</bool>
+ <string name="proxy-Implementation filename">""</string>
+ <string name="proxy-Header filename">""</string>
+ <string name="proxy-Member variable name">""</string>
+ <string name="proxy-Label">"Allow Abilities:"</string>
+ <long name="proxy-Wrapping width">-1</long>
+ <string name="proxy-Help text">""</string>
+ <string name="proxy-Tooltip text">""</string>
+ <string name="proxy-Background colour">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <string name="proxy-Data variable">""</string>
+ <string name="proxy-Data validator">""</string>
+ <bool name="proxy-wxALIGN_LEFT">0</bool>
+ <bool name="proxy-wxALIGN_RIGHT">0</bool>
+ <bool name="proxy-wxALIGN_CENTRE">0</bool>
+ <bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
+ <bool name="proxy-wxNO_BORDER">0</bool>
+ <bool name="proxy-wxSIMPLE_BORDER">0</bool>
+ <bool name="proxy-wxDOUBLE_BORDER">0</bool>
+ <bool name="proxy-wxSUNKEN_BORDER">0</bool>
+ <bool name="proxy-wxRAISED_BORDER">0</bool>
+ <bool name="proxy-wxSTATIC_BORDER">0</bool>
+ <bool name="proxy-wxWANTS_CHARS">0</bool>
+ <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+ <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+ <string name="proxy-Custom styles">""</string>
+ <long name="proxy-X">-1</long>
+ <long name="proxy-Y">-1</long>
+ <long name="proxy-Width">-1</long>
+ <long name="proxy-Height">-1</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">1</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Custom arguments">""</string>
+ <string name="proxy-Custom ctor arguments">""</string>
+ </document>
+ <document>
+ <string name="title">"Spacer"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"spacer"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbSpacerProxy"</string>
+ <long name="proxy-Width">5</long>
+ <long name="proxy-Height">5</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">1</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ </document>
+ <document>
+ <string name="title">"wxCheckBox: ID_ALLOW_ABILITIES"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"checkbox"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbCheckBoxProxy"</string>
+ <string name="event-handler-0">"wxEVT_COMMAND_CHECKBOX_CLICKED|OnAllowAbilitiesClick|||"</string>
+ <string name="proxy-Id name">"ID_ALLOW_ABILITIES"</string>
+ <long name="proxy-Id value">10039</long>
+ <string name="proxy-Class">"wxCheckBox"</string>
+ <string name="proxy-Base class">"wxCheckBox"</string>
+ <bool name="proxy-External implementation">1</bool>
+ <bool name="proxy-Separate files">0</bool>
+ <string name="proxy-Implementation filename">""</string>
+ <string name="proxy-Header filename">""</string>
+ <string name="proxy-Member variable name">"m_RulesAbilities"</string>
+ <string name="proxy-Label">""</string>
+ <bool name="proxy-Initial value">0</bool>
+ <string name="proxy-Help text">""</string>
+ <string name="proxy-Tooltip text">""</string>
+ <string name="proxy-Data variable">""</string>
+ <string name="proxy-Data validator">""</string>
+ <string name="proxy-Background colour">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <bool name="proxy-wxALIGN_RIGHT">0</bool>
+ <bool name="proxy-wxCHK_2STATE">0</bool>
+ <bool name="proxy-wxCHK_3STATE">0</bool>
+ <bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
+ <bool name="proxy-wxWANTS_CHARS">0</bool>
+ <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+ <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+ <string name="proxy-Custom styles">""</string>
+ <long name="proxy-X">-1</long>
+ <long name="proxy-Y">-1</long>
+ <long name="proxy-Width">-1</long>
+ <long name="proxy-Height">-1</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Custom arguments">""</string>
+ <string name="proxy-Custom ctor arguments">""</string>
+ </document>
+ </document>
+ <document>
+ <string name="title">"wxStaticBoxSizer H"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"sizer"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbStaticBoxSizerProxy"</string>
+ <string name="proxy-Id name">"wxID_ANY"</string>
+ <long name="proxy-Id value">-1</long>
+ <string name="proxy-Label">""</string>
+ <string name="proxy-Member variable name">""</string>
+ <string name="proxy-Sizer member variable name">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Static box class">"wxStaticBox"</string>
+ <string name="proxy-Orientation">"Horizontal"</string>
+ <string name="proxy-AlignH">"Expand"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">2</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <document>
+ <string name="title">"wxStaticText: wxID_STATIC"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"statictext"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbStaticTextProxy"</string>
+ <string name="proxy-Id name">"wxID_STATIC"</string>
+ <long name="proxy-Id value">5105</long>
+ <string name="proxy-Class">"wxStaticText"</string>
+ <string name="proxy-Base class">"wxStaticText"</string>
+ <bool name="proxy-External implementation">1</bool>
+ <bool name="proxy-Separate files">0</bool>
+ <string name="proxy-Implementation filename">""</string>
+ <string name="proxy-Header filename">""</string>
+ <string name="proxy-Member variable name">""</string>
+ <string name="proxy-Label">"Allow Natures:"</string>
+ <long name="proxy-Wrapping width">-1</long>
+ <string name="proxy-Help text">""</string>
+ <string name="proxy-Tooltip text">""</string>
+ <string name="proxy-Background colour">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <string name="proxy-Data variable">""</string>
+ <string name="proxy-Data validator">""</string>
+ <bool name="proxy-wxALIGN_LEFT">0</bool>
+ <bool name="proxy-wxALIGN_RIGHT">0</bool>
+ <bool name="proxy-wxALIGN_CENTRE">0</bool>
+ <bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
+ <bool name="proxy-wxNO_BORDER">0</bool>
+ <bool name="proxy-wxSIMPLE_BORDER">0</bool>
+ <bool name="proxy-wxDOUBLE_BORDER">0</bool>
+ <bool name="proxy-wxSUNKEN_BORDER">0</bool>
+ <bool name="proxy-wxRAISED_BORDER">0</bool>
+ <bool name="proxy-wxSTATIC_BORDER">0</bool>
+ <bool name="proxy-wxWANTS_CHARS">0</bool>
+ <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+ <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+ <string name="proxy-Custom styles">""</string>
+ <long name="proxy-X">-1</long>
+ <long name="proxy-Y">-1</long>
+ <long name="proxy-Width">-1</long>
+ <long name="proxy-Height">-1</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">1</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Custom arguments">""</string>
+ <string name="proxy-Custom ctor arguments">""</string>
+ </document>
+ <document>
+ <string name="title">"Spacer"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"spacer"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbSpacerProxy"</string>
+ <long name="proxy-Width">5</long>
+ <long name="proxy-Height">5</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">1</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ </document>
+ <document>
+ <string name="title">"wxCheckBox: ID_ALLOW_NATURES"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"checkbox"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
+ <string name="created">"3/6/2007"</string>
+ <string name="proxy-type">"wbCheckBoxProxy"</string>
+ <string name="event-handler-0">"wxEVT_COMMAND_CHECKBOX_CLICKED|OnAllowNaturesClick|||"</string>
+ <string name="proxy-Id name">"ID_ALLOW_NATURES"</string>
+ <long name="proxy-Id value">10040</long>
+ <string name="proxy-Class">"wxCheckBox"</string>
+ <string name="proxy-Base class">"wxCheckBox"</string>
+ <bool name="proxy-External implementation">1</bool>
+ <bool name="proxy-Separate files">0</bool>
+ <string name="proxy-Implementation filename">""</string>
+ <string name="proxy-Header filename">""</string>
+ <string name="proxy-Member variable name">"m_RulesNatures"</string>
+ <string name="proxy-Label">""</string>
+ <bool name="proxy-Initial value">0</bool>
+ <string name="proxy-Help text">""</string>
+ <string name="proxy-Tooltip text">""</string>
+ <string name="proxy-Data variable">""</string>
+ <string name="proxy-Data validator">""</string>
+ <string name="proxy-Background colour">""</string>
+ <string name="proxy-Foreground colour">""</string>
+ <string name="proxy-Font">""</string>
+ <bool name="proxy-Hidden">0</bool>
+ <bool name="proxy-Enabled">1</bool>
+ <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+ <bool name="proxy-wxALIGN_RIGHT">0</bool>
+ <bool name="proxy-wxCHK_2STATE">0</bool>
+ <bool name="proxy-wxCHK_3STATE">0</bool>
+ <bool name="proxy-wxCHK_ALLOW_3RD_STATE_FOR_USER">0</bool>
+ <bool name="proxy-wxWANTS_CHARS">0</bool>
+ <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+ <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+ <string name="proxy-Custom styles">""</string>
+ <long name="proxy-X">-1</long>
+ <long name="proxy-Y">-1</long>
+ <long name="proxy-Width">-1</long>
+ <long name="proxy-Height">-1</long>
+ <string name="proxy-AlignH">"Centre"</string>
+ <string name="proxy-AlignV">"Centre"</string>
+ <long name="proxy-Stretch factor">0</long>
+ <long name="proxy-Border">5</long>
+ <bool name="proxy-wxLEFT">1</bool>
+ <bool name="proxy-wxRIGHT">1</bool>
+ <bool name="proxy-wxTOP">0</bool>
+ <bool name="proxy-wxBOTTOM">0</bool>
+ <bool name="proxy-wxSHAPED">0</bool>
+ <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+ <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+ <string name="proxy-Custom arguments">""</string>
+ <string name="proxy-Custom ctor arguments">""</string>
+ </document>
+ </document>
+ <document>
+ <string name="title">"wxStaticBoxSizer H"</string>
+ <string name="type">"dialog-control-document"</string>
+ <string name="filename">""</string>
+ <string name="icon-name">"sizer"</string>
+ <long name="is-transient">0</long>
+ <long name="owns-file">1</long>
+ <long name="title-mode">0</long>
+ <long name="locked">0</long>
<string name="created">"16/3/2007"</string>
<string name="proxy-type">"wbStaticBoxSizerProxy"</string>
<string name="proxy-Id name">"wxID_ANY"</string>
@@ -90461,6 +90829,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Storage"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -90507,8 +90877,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Storage"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -92174,6 +92542,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Status"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -92220,8 +92590,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Status"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -92363,6 +92731,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Orig Status"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -92409,8 +92779,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Orig Status"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -95165,6 +95533,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Stats"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -95211,8 +95581,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Stats"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -97540,6 +97908,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Types"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -97586,8 +97956,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Types"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -97897,6 +98265,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Initial"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -97943,8 +98313,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Initial"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99003,6 +99371,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Dialogs"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -99049,8 +99419,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Dialogs"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99192,6 +99560,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Coin Lists"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -99238,8 +99608,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Coin Lists"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99381,6 +99749,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Badges"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -99427,8 +99797,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Badges"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99570,6 +99938,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Abilities"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -99616,8 +99986,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Abilities"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99763,6 +100131,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Natures"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -99809,8 +100179,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Natures"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -99956,6 +100324,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Skins"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -100002,8 +100372,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Skins"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -100957,6 +101325,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Egg Groups"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -101003,8 +101373,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Egg Groups"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -101146,6 +101514,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Miscellaneous"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -101192,8 +101562,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Miscellaneous"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -101857,10 +102225,10 @@ It hands control over to another Dialog depending on the answer."</string>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
- <string name="created">"17/2/2007"</string>
+ <string name="created">"2/6/2007"</string>
<string name="proxy-type">"wbStaticBoxSizerProxy"</string>
<string name="proxy-Id name">"wxID_ANY"</string>
- <string name="proxy-Id value">"-1"</string>
+ <long name="proxy-Id value">-1</long>
<string name="proxy-Label">""</string>
<string name="proxy-Member variable name">""</string>
<string name="proxy-Sizer member variable name">""</string>
@@ -101891,7 +102259,7 @@ It hands control over to another Dialog depending on the answer."</string>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
- <string name="created">"17/2/2007"</string>
+ <string name="created">"2/6/2007"</string>
<string name="proxy-type">"wbStaticTextProxy"</string>
<string name="proxy-Id name">"wxID_STATIC"</string>
<long name="proxy-Id value">5105</long>
@@ -101902,7 +102270,7 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
- <string name="proxy-Label">"Encounter Chance:"</string>
+ <string name="proxy-Label">"Confusion:"</string>
<long name="proxy-Wrapping width">-1</long>
<string name="proxy-Help text">""</string>
<string name="proxy-Tooltip text">""</string>
@@ -101945,6 +102313,10 @@ It hands control over to another Dialog depending on the answer."</string>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
+ <long name="proxy-Grid x">0</long>
+ <long name="proxy-Grid y">0</long>
+ <long name="proxy-Span x">1</long>
+ <long name="proxy-Span y">1</long>
</document>
<document>
<string name="title">"Spacer"</string>
@@ -101955,7 +102327,7 @@ It hands control over to another Dialog depending on the answer."</string>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
- <string name="created">"17/2/2007"</string>
+ <string name="created">"2/6/2007"</string>
<string name="proxy-type">"wbSpacerProxy"</string>
<long name="proxy-Width">5</long>
<long name="proxy-Height">5</long>
@@ -101973,31 +102345,30 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
</document>
<document>
- <string name="title">"wxSpinCtrl: ID_ENCOUNTER_CHANCE"</string>
+ <string name="title">"wxComboBox: ID_CONFUSE"</string>
<string name="type">"dialog-control-document"</string>
<string name="filename">""</string>
- <string name="icon-name">"spinctrl"</string>
+ <string name="icon-name">"combobox"</string>
<long name="is-transient">0</long>
<long name="owns-file">1</long>
<long name="title-mode">0</long>
<long name="locked">0</long>
- <string name="created">"17/2/2007"</string>
- <string name="proxy-type">"wbSpinCtrlProxy"</string>
- <string name="event-handler-0">"wxEVT_COMMAND_SPINCTRL_UPDATED|OnEncounterChanceUpdated"</string>
- <string name="proxy-Id name">"ID_ENCOUNTER_CHANCE"</string>
- <long name="proxy-Id value">10613</long>
- <string name="proxy-Class">"wxSpinCtrl"</string>
- <string name="proxy-Base class">"wxSpinCtrl"</string>
+ <string name="created">"2/6/2007"</string>
+ <string name="proxy-type">"wbComboBoxProxy"</string>
+ <string name="event-handler-0">"wxEVT_COMMAND_COMBOBOX_SELECTED|OnConfuseSelected|||"</string>
+ <string name="proxy-Id name">"ID_CONFUSE"</string>
+ <long name="proxy-Id value">10026</long>
+ <string name="proxy-Class">"wxComboBox"</string>
+ <string name="proxy-Base class">"wxComboBox"</string>
<bool name="proxy-External implementation">1</bool>
<bool name="proxy-Separate files">0</bool>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
- <string name="proxy-Member variable name">"m_EncounterChance"</string>
- <long name="proxy-Minimum value">0</long>
- <long name="proxy-Maximum value">100</long>
- <long name="proxy-Initial value">0</long>
+ <string name="proxy-Member variable name">"m_MoveConfuse"</string>
+ <string name="proxy-Strings">""</string>
+ <string name="proxy-Initial value">""</string>
<string name="proxy-Help text">""</string>
- <string name="proxy-Tooltip text">"The chance of an encounter happening when a Wild Tile is stepped on."</string>
+ <string name="proxy-Tooltip text">"Which move to use when a Pokémon is confused"</string>
<string name="proxy-Background colour">""</string>
<string name="proxy-Foreground colour">""</string>
<string name="proxy-Font">""</string>
@@ -102006,21 +102377,17 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Platform">"&lt;Any platform&gt;"</string>
<string name="proxy-Data variable">""</string>
<string name="proxy-Data validator">""</string>
- <bool name="proxy-wxSP_ARROW_KEYS">1</bool>
- <bool name="proxy-wxSP_WRAP">1</bool>
- <bool name="proxy-wxNO_BORDER">0</bool>
- <bool name="proxy-wxSIMPLE_BORDER">0</bool>
- <bool name="proxy-wxDOUBLE_BORDER">0</bool>
- <bool name="proxy-wxSUNKEN_BORDER">0</bool>
- <bool name="proxy-wxRAISED_BORDER">0</bool>
- <bool name="proxy-wxSTATIC_BORDER">0</bool>
+ <bool name="proxy-wxCB_SIMPLE">0</bool>
+ <bool name="proxy-wxCB_DROPDOWN">0</bool>
+ <bool name="proxy-wxCB_READONLY">1</bool>
+ <bool name="proxy-wxCB_SORT">1</bool>
<bool name="proxy-wxWANTS_CHARS">0</bool>
<bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
<bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
<string name="proxy-Custom styles">""</string>
<long name="proxy-X">-1</long>
<long name="proxy-Y">-1</long>
- <long name="proxy-Width">50</long>
+ <long name="proxy-Width">-1</long>
<long name="proxy-Height">-1</long>
<string name="proxy-AlignH">"Left"</string>
<string name="proxy-AlignV">"Top"</string>
@@ -102035,6 +102402,10 @@ It hands control over to another Dialog depending on the answer."</string>
<bool name="proxy-wxFIXED_MINSIZE">0</bool>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
+ <long name="proxy-Grid x">1</long>
+ <long name="proxy-Grid y">0</long>
+ <long name="proxy-Span x">1</long>
+ <long name="proxy-Span y">1</long>
</document>
</document>
</document>
@@ -102062,6 +102433,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Items"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -102108,8 +102481,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Items"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -102251,6 +102622,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Map"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -102297,8 +102670,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Map"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -102440,6 +102811,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Moves"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -102486,8 +102859,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Moves"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -102629,6 +103000,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Pokémon"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -102675,8 +103048,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Pokémon"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -102818,6 +103189,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Stores"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -102864,8 +103237,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Stores"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
@@ -103007,6 +103378,8 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Implementation filename">""</string>
<string name="proxy-Header filename">""</string>
<string name="proxy-Member variable name">""</string>
+ <string name="proxy-Tab label">"Tiles"</string>
+ <string name="proxy-Tab icon">""</string>
<long name="proxy-PPU X">1</long>
<long name="proxy-PPU Y">1</long>
<long name="proxy-Units X">0</long>
@@ -103053,8 +103426,6 @@ It hands control over to another Dialog depending on the answer."</string>
<string name="proxy-Custom arguments">""</string>
<string name="proxy-Custom ctor arguments">""</string>
<bool name="proxy-AUI manager">0</bool>
- <string name="proxy-Tab label">"Tiles"</string>
- <string name="proxy-Tab icon">""</string>
<document>
<string name="title">"wxBoxSizer V"</string>
<string name="type">"dialog-control-document"</string>
diff --git a/pokemodr/gui/mainWindow.cpp b/pokemodr/gui/mainWindow.cpp
index cc38dd29..04712228 100644
--- a/pokemodr/gui/mainWindow.cpp
+++ b/pokemodr/gui/mainWindow.cpp
@@ -92,6 +92,10 @@ BEGIN_EVENT_TABLE( MainFrame, wxFrame )
EVT_CHECKBOX( ID_ALLOW_CONTESTS, MainFrame::OnAllowContestsClick )
+ EVT_CHECKBOX( ID_ALLOW_ABILITIES, MainFrame::OnAllowAbilitiesClick )
+
+ EVT_CHECKBOX( ID_ALLOW_NATURES, MainFrame::OnAllowNaturesClick )
+
EVT_SPINCTRL( ID_DAYCARE, MainFrame::OnDaycareUpdated )
EVT_BUTTON( ID_ADD_TIME, MainFrame::OnAddTimeClick )
@@ -208,13 +212,15 @@ BEGIN_EVENT_TABLE( MainFrame, wxFrame )
EVT_BUTTON( ID_FISHSURFING_SKIN_BROWSE, MainFrame::OnFishsurfingSkinBrowseClick )
+ EVT_BUTTON( ID_ADD_EGG_GROUP, MainFrame::OnAddEggGroupClick )
+
EVT_TEXT( ID_SUPER_PC_USERNAME, MainFrame::OnSuperPcUsernameUpdated )
EVT_TEXT( ID_SUPER_PC_PASSWORD, MainFrame::OnSuperPcPasswordUpdated )
EVT_COMBOBOX( ID_STRUGGLE, MainFrame::OnStruggleSelected )
- EVT_SPINCTRL( ID_ENCOUNTER_CHANCE, MainFrame::OnEncounterChanceUpdated )
+ EVT_COMBOBOX( ID_CONFUSE, MainFrame::OnConfuseSelected )
EVT_BUTTON( ID_ADD_ITEM, MainFrame::OnAddItemClick )
@@ -288,6 +294,8 @@ void MainFrame::Init()
m_RulesHeldItems = NULL;
m_RulesCriticalDomains = NULL;
m_RulesContests = NULL;
+ m_RulesAbilities = NULL;
+ m_RulesNatures = NULL;
m_RulesDaycare = NULL;
m_RulesTimeSizer = NULL;
m_RulesPokemonBox = NULL;
@@ -343,7 +351,7 @@ void MainFrame::Init()
m_SuperPCUname = NULL;
m_SuperPCPwd = NULL;
m_MoveStruggle = NULL;
- m_EncounterChance = NULL;
+ m_MoveConfuse = NULL;
m_ItemSizer = NULL;
m_MapSizer = NULL;
m_MoveSizer = NULL;
@@ -569,616 +577,612 @@ void MainFrame::CreateControls()
wxStaticBox* itemStaticBoxSizer66Static = new wxStaticBox(itemScrolledWindow39, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer66 = new wxStaticBoxSizer(itemStaticBoxSizer66Static, wxHORIZONTAL);
itemBoxSizer40->Add(itemStaticBoxSizer66, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText67 = new wxStaticText( itemScrolledWindow39, wxID_STATIC, _("Daycares:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer66->Add(itemStaticText67, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticText* itemStaticText67 = new wxStaticText( itemScrolledWindow39, wxID_STATIC, _("Allow Abilities:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer66->Add(itemStaticText67, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5);
itemStaticBoxSizer66->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesDaycare = new wxSpinCtrl( itemScrolledWindow39, ID_DAYCARE, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemStaticBoxSizer66->Add(m_RulesDaycare, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesAbilities = new wxCheckBox( itemScrolledWindow39, ID_ALLOW_ABILITIES, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesAbilities->SetValue(false);
+ itemStaticBoxSizer66->Add(m_RulesAbilities, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer70Static = new wxStaticBox(itemScrolledWindow39, wxID_ANY, _("Time"));
- m_RulesTimeSizer = new wxStaticBoxSizer(itemStaticBoxSizer70Static, wxVERTICAL);
- itemBoxSizer40->Add(m_RulesTimeSizer, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxButton* itemButton71 = new wxButton( itemScrolledWindow39, ID_ADD_TIME, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_RulesTimeSizer->Add(itemButton71, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer70Static = new wxStaticBox(itemScrolledWindow39, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer70 = new wxStaticBoxSizer(itemStaticBoxSizer70Static, wxHORIZONTAL);
+ itemBoxSizer40->Add(itemStaticBoxSizer70, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText71 = new wxStaticText( itemScrolledWindow39, wxID_STATIC, _("Allow Natures:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer70->Add(itemStaticText71, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT|wxADJUST_MINSIZE, 5);
- itemScrolledWindow39->FitInside();
- itemNotebook38->AddPage(itemScrolledWindow39, _("General"));
+ itemStaticBoxSizer70->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxScrolledWindow* itemScrolledWindow72 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STORAGE_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow72->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer73 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow72->SetSizer(itemBoxSizer73);
+ m_RulesNatures = new wxCheckBox( itemScrolledWindow39, ID_ALLOW_NATURES, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesNatures->SetValue(false);
+ itemStaticBoxSizer70->Add(m_RulesNatures, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer74Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer74 = new wxStaticBoxSizer(itemStaticBoxSizer74Static, wxVERTICAL);
- itemBoxSizer73->Add(itemStaticBoxSizer74, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer75 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer74->Add(itemBoxSizer75, 0, wxGROW, 2);
- wxStaticText* itemStaticText76 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Pokémon Boxes:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer75->Add(itemStaticText76, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer74Static = new wxStaticBox(itemScrolledWindow39, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer74 = new wxStaticBoxSizer(itemStaticBoxSizer74Static, wxHORIZONTAL);
+ itemBoxSizer40->Add(itemStaticBoxSizer74, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText75 = new wxStaticText( itemScrolledWindow39, wxID_STATIC, _("Daycares:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer74->Add(itemStaticText75, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer75->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer74->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPokemonBox = new wxSpinCtrl( itemScrolledWindow72, ID_POKEMON_BOX, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemBoxSizer75->Add(m_RulesPokemonBox, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesDaycare = new wxSpinCtrl( itemScrolledWindow39, ID_DAYCARE, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemStaticBoxSizer74->Add(m_RulesDaycare, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer79 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer74->Add(itemBoxSizer79, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText80 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Pokémon Per Box:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer79->Add(itemStaticText80, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer78Static = new wxStaticBox(itemScrolledWindow39, wxID_ANY, _("Time"));
+ m_RulesTimeSizer = new wxStaticBoxSizer(itemStaticBoxSizer78Static, wxVERTICAL);
+ itemBoxSizer40->Add(m_RulesTimeSizer, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxButton* itemButton79 = new wxButton( itemScrolledWindow39, ID_ADD_TIME, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesTimeSizer->Add(itemButton79, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer79->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemScrolledWindow39->FitInside();
+ itemNotebook38->AddPage(itemScrolledWindow39, _("General"));
- m_RulesPokemonPerBox = new wxSpinCtrl( itemScrolledWindow72, ID_POKEMON_PER_BOX, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemBoxSizer79->Add(m_RulesPokemonPerBox, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxScrolledWindow* itemScrolledWindow80 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STORAGE_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow80->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer81 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow80->SetSizer(itemBoxSizer81);
- wxStaticBox* itemStaticBoxSizer83Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer83 = new wxStaticBoxSizer(itemStaticBoxSizer83Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer83, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText84 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Max Party:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer83->Add(itemStaticText84, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer82Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer82 = new wxStaticBoxSizer(itemStaticBoxSizer82Static, wxVERTICAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer82, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer83 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer82->Add(itemBoxSizer83, 0, wxGROW, 2);
+ wxStaticText* itemStaticText84 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Pokémon Boxes:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer83->Add(itemStaticText84, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer83->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer83->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxParty = new wxSpinCtrl( itemScrolledWindow72, ID_MAX_PARTY, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemStaticBoxSizer83->Add(m_RulesMaxParty, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesPokemonBox = new wxSpinCtrl( itemScrolledWindow80, ID_POKEMON_BOX, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemBoxSizer83->Add(m_RulesPokemonBox, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer87Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer87 = new wxStaticBoxSizer(itemStaticBoxSizer87Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer87, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText88 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Max Fight:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer87->Add(itemStaticText88, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer87 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer82->Add(itemBoxSizer87, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText88 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Pokémon Per Box:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer87->Add(itemStaticText88, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer87->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer87->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxFight = new wxSpinCtrl( itemScrolledWindow72, ID_MAX_FIGHT, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemStaticBoxSizer87->Add(m_RulesMaxFight, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesPokemonPerBox = new wxSpinCtrl( itemScrolledWindow80, ID_POKEMON_PER_BOX, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemBoxSizer87->Add(m_RulesPokemonPerBox, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer91Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
+ wxStaticBox* itemStaticBoxSizer91Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer91 = new wxStaticBoxSizer(itemStaticBoxSizer91Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer91, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText92 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Max Moves:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer81->Add(itemStaticBoxSizer91, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText92 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Max Party:"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer91->Add(itemStaticText92, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
itemStaticBoxSizer91->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxMoves = new wxSpinCtrl( itemScrolledWindow72, ID_MAX_MOVES, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemStaticBoxSizer91->Add(m_RulesMaxMoves, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesMaxParty = new wxSpinCtrl( itemScrolledWindow80, ID_MAX_PARTY, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemStaticBoxSizer91->Add(m_RulesMaxParty, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer95Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _("Item Storage"));
- wxStaticBoxSizer* itemStaticBoxSizer95 = new wxStaticBoxSizer(itemStaticBoxSizer95Static, wxVERTICAL);
- itemBoxSizer73->Add(itemStaticBoxSizer95, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxButton* itemButton96 = new wxButton( itemScrolledWindow72, ID_ADD_ITEM_STORAGE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer95->Add(itemButton96, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer95Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer95 = new wxStaticBoxSizer(itemStaticBoxSizer95Static, wxHORIZONTAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer95, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText96 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Max Fight:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer95->Add(itemStaticText96, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer97Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer97 = new wxStaticBoxSizer(itemStaticBoxSizer97Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer97, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText98 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Max Level:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer97->Add(itemStaticText98, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer95->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer97->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesMaxFight = new wxSpinCtrl( itemScrolledWindow80, ID_MAX_FIGHT, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemStaticBoxSizer95->Add(m_RulesMaxFight, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxLevel = new wxSpinCtrl( itemScrolledWindow72, ID_MAX_LEVEL, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemStaticBoxSizer97->Add(m_RulesMaxLevel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer99Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer99 = new wxStaticBoxSizer(itemStaticBoxSizer99Static, wxHORIZONTAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer99, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText100 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Max Moves:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer99->Add(itemStaticText100, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer101Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer101 = new wxStaticBoxSizer(itemStaticBoxSizer101Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer101, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText102 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Max Money:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer101->Add(itemStaticText102, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer99->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer101->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesMaxMoves = new wxSpinCtrl( itemScrolledWindow80, ID_MAX_MOVES, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemStaticBoxSizer99->Add(m_RulesMaxMoves, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxMoney = new wxSpinCtrl( itemScrolledWindow72, ID_MAX_MONEY, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemStaticBoxSizer101->Add(m_RulesMaxMoney, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer103Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _("Item Storage"));
+ wxStaticBoxSizer* itemStaticBoxSizer103 = new wxStaticBoxSizer(itemStaticBoxSizer103Static, wxVERTICAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer103, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxButton* itemButton104 = new wxButton( itemScrolledWindow80, ID_ADD_ITEM_STORAGE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer103->Add(itemButton104, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer105Static = new wxStaticBox(itemScrolledWindow72, wxID_ANY, _T(""));
+ wxStaticBox* itemStaticBoxSizer105Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer105 = new wxStaticBoxSizer(itemStaticBoxSizer105Static, wxHORIZONTAL);
- itemBoxSizer73->Add(itemStaticBoxSizer105, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText106 = new wxStaticText( itemScrolledWindow72, wxID_STATIC, _("Hard Cash:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer81->Add(itemStaticBoxSizer105, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText106 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Max Level:"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer105->Add(itemStaticText106, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
itemStaticBoxSizer105->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesHardCash = new wxCheckBox( itemScrolledWindow72, ID_HARD_CASH, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesMaxLevel = new wxSpinCtrl( itemScrolledWindow80, ID_MAX_LEVEL, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemStaticBoxSizer105->Add(m_RulesMaxLevel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer109Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer109 = new wxStaticBoxSizer(itemStaticBoxSizer109Static, wxHORIZONTAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer109, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText110 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Max Money:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer109->Add(itemStaticText110, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ itemStaticBoxSizer109->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ m_RulesMaxMoney = new wxSpinCtrl( itemScrolledWindow80, ID_MAX_MONEY, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemStaticBoxSizer109->Add(m_RulesMaxMoney, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer113Static = new wxStaticBox(itemScrolledWindow80, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer113 = new wxStaticBoxSizer(itemStaticBoxSizer113Static, wxHORIZONTAL);
+ itemBoxSizer81->Add(itemStaticBoxSizer113, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText114 = new wxStaticText( itemScrolledWindow80, wxID_STATIC, _("Hard Cash:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer113->Add(itemStaticText114, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ itemStaticBoxSizer113->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ m_RulesHardCash = new wxCheckBox( itemScrolledWindow80, ID_HARD_CASH, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
m_RulesHardCash->SetValue(false);
- itemStaticBoxSizer105->Add(m_RulesHardCash, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer113->Add(m_RulesHardCash, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemScrolledWindow72->FitInside();
- itemNotebook38->AddPage(itemScrolledWindow72, _("Storage"));
+ itemScrolledWindow80->FitInside();
+ itemNotebook38->AddPage(itemScrolledWindow80, _("Storage"));
- wxScrolledWindow* itemScrolledWindow109 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STATUS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow109->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer110 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow109->SetSizer(itemBoxSizer110);
+ wxScrolledWindow* itemScrolledWindow117 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STATUS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow117->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer118 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow117->SetSizer(itemBoxSizer118);
- wxStaticBox* itemStaticBoxSizer111Static = new wxStaticBox(itemScrolledWindow109, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer111 = new wxStaticBoxSizer(itemStaticBoxSizer111Static, wxVERTICAL);
- itemBoxSizer110->Add(itemStaticBoxSizer111, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton112 = new wxButton( itemScrolledWindow109, ID_ADD_STATUS_EFFECT, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer111->Add(itemButton112, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer119Static = new wxStaticBox(itemScrolledWindow117, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer119 = new wxStaticBoxSizer(itemStaticBoxSizer119Static, wxVERTICAL);
+ itemBoxSizer118->Add(itemStaticBoxSizer119, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton120 = new wxButton( itemScrolledWindow117, ID_ADD_STATUS_EFFECT, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer119->Add(itemButton120, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
- itemScrolledWindow109->FitInside();
- itemNotebook38->AddPage(itemScrolledWindow109, _("Status"));
+ itemScrolledWindow117->FitInside();
+ itemNotebook38->AddPage(itemScrolledWindow117, _("Status"));
- wxScrolledWindow* itemScrolledWindow113 = new wxScrolledWindow( itemNotebook38, ID_SCROLLEDWINDOW, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow113->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer114 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow113->SetSizer(itemBoxSizer114);
+ wxScrolledWindow* itemScrolledWindow121 = new wxScrolledWindow( itemNotebook38, ID_SCROLLEDWINDOW, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow121->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer122 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow121->SetSizer(itemBoxSizer122);
- wxStaticBox* itemStaticBoxSizer115Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer115 = new wxStaticBoxSizer(itemStaticBoxSizer115Static, wxHORIZONTAL);
- itemBoxSizer114->Add(itemStaticBoxSizer115, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText116 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Thaw Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer115->Add(itemStaticText116, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer123Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer123 = new wxStaticBoxSizer(itemStaticBoxSizer123Static, wxHORIZONTAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer123, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText124 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Thaw Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer123->Add(itemStaticText124, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer115->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer123->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesThawChance = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesThawChance = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesThawChance->SetToolTip(_("The chance of thawing each turn if frozen"));
- itemStaticBoxSizer115->Add(m_RulesThawChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer123->Add(m_RulesThawChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer119Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer119 = new wxStaticBoxSizer(itemStaticBoxSizer119Static, wxVERTICAL);
- itemBoxSizer114->Add(itemStaticBoxSizer119, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer120 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer119->Add(itemBoxSizer120, 0, wxGROW, 2);
- wxStaticText* itemStaticText121 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Sleep Turns:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer120->Add(itemStaticText121, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer127Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer127 = new wxStaticBoxSizer(itemStaticBoxSizer127Static, wxVERTICAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer127, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer128 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer127->Add(itemBoxSizer128, 0, wxGROW, 2);
+ wxStaticText* itemStaticText129 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Sleep Turns:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer128->Add(itemStaticText129, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer120->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer128->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesSlpTurns = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL1, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ m_RulesSlpTurns = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL1, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
if (ShowToolTips())
m_RulesSlpTurns->SetToolTip(_("The maximum number of turns a Pokémon may stay asleep"));
- itemBoxSizer120->Add(m_RulesSlpTurns, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer128->Add(m_RulesSlpTurns, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer124 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer119->Add(itemBoxSizer124, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText125 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Sleep Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer124->Add(itemStaticText125, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer132 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer127->Add(itemBoxSizer132, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText133 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Sleep Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer132->Add(itemStaticText133, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer124->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer132->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesSlpChance = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL2, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesSlpChance = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL2, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesSlpChance->SetToolTip(_("The chance of waking op each turn"));
- itemBoxSizer124->Add(m_RulesSlpChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer132->Add(m_RulesSlpChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer128Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer128 = new wxStaticBoxSizer(itemStaticBoxSizer128Static, wxVERTICAL);
- itemBoxSizer114->Add(itemStaticBoxSizer128, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer129 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer128->Add(itemBoxSizer129, 0, wxGROW, 2);
- wxStaticText* itemStaticText130 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Paralyze Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer129->Add(itemStaticText130, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer136Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer136 = new wxStaticBoxSizer(itemStaticBoxSizer136Static, wxVERTICAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer136, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer137 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer136->Add(itemBoxSizer137, 0, wxGROW, 2);
+ wxStaticText* itemStaticText138 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Paralyze Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer137->Add(itemStaticText138, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer129->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer137->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPrzChance = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL3, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesPrzChance = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL3, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesPrzChance->SetToolTip(_("The chance of being \"fully paralyzed\""));
- itemBoxSizer129->Add(m_RulesPrzChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer137->Add(m_RulesPrzChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer133 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer128->Add(itemBoxSizer133, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText134 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Paralyze Speed:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer133->Add(itemStaticText134, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer141 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer136->Add(itemBoxSizer141, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText142 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Paralyze Speed:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer141->Add(itemStaticText142, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer133->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer141->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPrzSpeed = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL4, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS, 0, 2147483647, 0 );
+ m_RulesPrzSpeed = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL4, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS, 0, 2147483647, 0 );
if (ShowToolTips())
m_RulesPrzSpeed->SetToolTip(_("The amount paralyzation affects speed"));
- itemBoxSizer133->Add(m_RulesPrzSpeed, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer141->Add(m_RulesPrzSpeed, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer137Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer137 = new wxStaticBoxSizer(itemStaticBoxSizer137Static, wxVERTICAL);
- itemBoxSizer114->Add(itemStaticBoxSizer137, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer138 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer137->Add(itemBoxSizer138, 0, wxGROW, 2);
- wxStaticText* itemStaticText139 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Poison HP:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer138->Add(itemStaticText139, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer145Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer145 = new wxStaticBoxSizer(itemStaticBoxSizer145Static, wxVERTICAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer145, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer146 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer145->Add(itemBoxSizer146, 0, wxGROW, 2);
+ wxStaticText* itemStaticText147 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Poison HP:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer146->Add(itemStaticText147, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer138->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer146->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPsnHP = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL5, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesPsnHP = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL5, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesPsnHP->SetToolTip(_("The amount of HP taken each turn"));
- itemBoxSizer138->Add(m_RulesPsnHP, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer146->Add(m_RulesPsnHP, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer142 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer137->Add(itemBoxSizer142, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText143 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Poison Steps:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer142->Add(itemStaticText143, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer150 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer145->Add(itemBoxSizer150, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText151 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Poison Steps:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer150->Add(itemStaticText151, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer142->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer150->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPsnSteps = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL6, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ m_RulesPsnSteps = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL6, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
if (ShowToolTips())
m_RulesPsnSteps->SetToolTip(_("Poisoned Pokémon lose HP for steps taken when in the overworld"));
- itemBoxSizer142->Add(m_RulesPsnSteps, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer150->Add(m_RulesPsnSteps, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer146 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer137->Add(itemBoxSizer146, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText147 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Toxic Increment:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer146->Add(itemStaticText147, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer154 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer145->Add(itemBoxSizer154, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText155 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Toxic Increment:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer154->Add(itemStaticText155, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer146->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer154->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesTxcInc = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL7, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesTxcInc = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL7, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesTxcInc->SetToolTip(_("The amount toxic poisoning increments HP loss each turn"));
- itemBoxSizer146->Add(m_RulesTxcInc, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer154->Add(m_RulesTxcInc, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer150 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer137->Add(itemBoxSizer150, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText151 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Toxic Faint:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer150->Add(itemStaticText151, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer158 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer145->Add(itemBoxSizer158, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText159 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Toxic Faint:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer158->Add(itemStaticText159, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer150->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer158->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesTxcFaint = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL8, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ m_RulesTxcFaint = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL8, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
if (ShowToolTips())
m_RulesTxcFaint->SetToolTip(_("The maximum number of turns a Pokémon can be active while toxic poisoned"));
- itemBoxSizer150->Add(m_RulesTxcFaint, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer158->Add(m_RulesTxcFaint, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer154Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer154 = new wxStaticBoxSizer(itemStaticBoxSizer154Static, wxVERTICAL);
- itemBoxSizer114->Add(itemStaticBoxSizer154, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer155 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer154->Add(itemBoxSizer155, 0, wxGROW, 2);
- wxStaticText* itemStaticText156 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Burn HP:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer155->Add(itemStaticText156, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer162Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer162 = new wxStaticBoxSizer(itemStaticBoxSizer162Static, wxVERTICAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer162, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer163 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer162->Add(itemBoxSizer163, 0, wxGROW, 2);
+ wxStaticText* itemStaticText164 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Burn HP:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer163->Add(itemStaticText164, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer155->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer163->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesBrnHP = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL9, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesBrnHP = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL9, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesBrnHP->SetToolTip(_("The amount of HP taken each turn while burned"));
- itemBoxSizer155->Add(m_RulesBrnHP, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer163->Add(m_RulesBrnHP, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer159 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer154->Add(itemBoxSizer159, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText160 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Burn Attack:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer159->Add(itemStaticText160, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer167 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer162->Add(itemBoxSizer167, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText168 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Burn Attack:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer167->Add(itemStaticText168, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer159->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer167->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesBrnAtt = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL10, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ m_RulesBrnAtt = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL10, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
if (ShowToolTips())
m_RulesBrnAtt->SetToolTip(_("The amount burns affect attack"));
- itemBoxSizer159->Add(m_RulesBrnAtt, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer167->Add(m_RulesBrnAtt, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer163Static = new wxStaticBox(itemScrolledWindow113, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer163 = new wxStaticBoxSizer(itemStaticBoxSizer163Static, wxVERTICAL);
- itemBoxSizer114->Add(itemStaticBoxSizer163, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer164 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer163->Add(itemBoxSizer164, 0, wxGROW, 2);
- wxStaticText* itemStaticText165 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Confusion Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer164->Add(itemStaticText165, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer171Static = new wxStaticBox(itemScrolledWindow121, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer171 = new wxStaticBoxSizer(itemStaticBoxSizer171Static, wxVERTICAL);
+ itemBoxSizer122->Add(itemStaticBoxSizer171, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer172 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer171->Add(itemBoxSizer172, 0, wxGROW, 2);
+ wxStaticText* itemStaticText173 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Confusion Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer172->Add(itemStaticText173, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer164->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer172->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesCnfChance = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL11, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
- itemBoxSizer164->Add(m_RulesCnfChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesCnfChance = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL11, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ itemBoxSizer172->Add(m_RulesCnfChance, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer168 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer163->Add(itemBoxSizer168, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText169 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Confusion Turns:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer168->Add(itemStaticText169, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer176 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer171->Add(itemBoxSizer176, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText177 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Confusion Turns:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer176->Add(itemStaticText177, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer168->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer176->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesCnfTurns = new wxSpinCtrl( itemScrolledWindow113, ID_SPINCTRL12, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ m_RulesCnfTurns = new wxSpinCtrl( itemScrolledWindow121, ID_SPINCTRL12, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
if (ShowToolTips())
m_RulesCnfTurns->SetToolTip(_("The maximum number of turns a Pokémon can be confused"));
- itemBoxSizer168->Add(m_RulesCnfTurns, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer176->Add(m_RulesCnfTurns, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer172 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer163->Add(itemBoxSizer172, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText173 = new wxStaticText( itemScrolledWindow113, wxID_STATIC, _("Move:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer172->Add(itemStaticText173, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer180 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer171->Add(itemBoxSizer180, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText181 = new wxStaticText( itemScrolledWindow121, wxID_STATIC, _("Move:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer180->Add(itemStaticText181, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer172->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer180->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxArrayString m_ConfusionMoveStrings;
- m_ConfusionMove = new wxComboBox( itemScrolledWindow113, ID_COMBOBOX, _T(""), wxDefaultPosition, wxDefaultSize, m_ConfusionMoveStrings, wxCB_READONLY|wxCB_SORT );
+ m_ConfusionMove = new wxComboBox( itemScrolledWindow121, ID_COMBOBOX, _T(""), wxDefaultPosition, wxDefaultSize, m_ConfusionMoveStrings, wxCB_READONLY|wxCB_SORT );
if (ShowToolTips())
m_ConfusionMove->SetToolTip(_("Which move to use when Confusion occurs"));
- itemBoxSizer172->Add(m_ConfusionMove, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer180->Add(m_ConfusionMove, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- itemScrolledWindow113->FitInside();
- itemNotebook38->AddPage(itemScrolledWindow113, _("Orig Status"));
+ itemScrolledWindow121->FitInside();
+ itemNotebook38->AddPage(itemScrolledWindow121, _("Orig Status"));
- wxScrolledWindow* itemScrolledWindow176 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STATS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow176->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer177 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow176->SetSizer(itemBoxSizer177);
+ wxScrolledWindow* itemScrolledWindow184 = new wxScrolledWindow( itemNotebook38, ID_DATA_RULES_STATS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow184->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer185 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow184->SetSizer(itemBoxSizer185);
- wxStaticBox* itemStaticBoxSizer178Static = new wxStaticBox(itemScrolledWindow176, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer178 = new wxStaticBoxSizer(itemStaticBoxSizer178Static, wxVERTICAL);
- itemBoxSizer177->Add(itemStaticBoxSizer178, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer179 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer178->Add(itemBoxSizer179, 0, wxGROW, 2);
- wxStaticText* itemStaticText180 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Split Special:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer179->Add(itemStaticText180, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer186Static = new wxStaticBox(itemScrolledWindow184, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer186 = new wxStaticBoxSizer(itemStaticBoxSizer186Static, wxVERTICAL);
+ itemBoxSizer185->Add(itemStaticBoxSizer186, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer187 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer186->Add(itemBoxSizer187, 0, wxGROW, 2);
+ wxStaticText* itemStaticText188 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Split Special:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer187->Add(itemStaticText188, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer179->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer187->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesSplitSpecial = new wxCheckBox( itemScrolledWindow176, ID_SPLIT_SPECIAL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesSplitSpecial = new wxCheckBox( itemScrolledWindow184, ID_SPLIT_SPECIAL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
m_RulesSplitSpecial->SetValue(false);
- itemBoxSizer179->Add(m_RulesSplitSpecial, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer187->Add(m_RulesSplitSpecial, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer183 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer178->Add(itemBoxSizer183, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText184 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Split Special DV:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer183->Add(itemStaticText184, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer191 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer186->Add(itemBoxSizer191, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText192 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Split Special DV:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer191->Add(itemStaticText192, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer183->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer191->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesSplitSpecialDV = new wxCheckBox( itemScrolledWindow176, ID_SPLIT_SPECIAL_DV, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesSplitSpecialDV = new wxCheckBox( itemScrolledWindow184, ID_SPLIT_SPECIAL_DV, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
m_RulesSplitSpecialDV->SetValue(false);
- itemBoxSizer183->Add(m_RulesSplitSpecialDV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer191->Add(m_RulesSplitSpecialDV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer187Static = new wxStaticBox(itemScrolledWindow176, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer187 = new wxStaticBoxSizer(itemStaticBoxSizer187Static, wxHORIZONTAL);
- itemBoxSizer177->Add(itemStaticBoxSizer187, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText188 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Max DV:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer187->Add(itemStaticText188, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer195Static = new wxStaticBox(itemScrolledWindow184, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer195 = new wxStaticBoxSizer(itemStaticBoxSizer195Static, wxHORIZONTAL);
+ itemBoxSizer185->Add(itemStaticBoxSizer195, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText196 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Max DV:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer195->Add(itemStaticText196, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer187->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer195->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxDV16 = new wxRadioButton( itemScrolledWindow176, ID_MAX_DV_16, _("16"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
+ m_RulesMaxDV16 = new wxRadioButton( itemScrolledWindow184, ID_MAX_DV_16, _("16"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
m_RulesMaxDV16->SetValue(true);
- itemStaticBoxSizer187->Add(m_RulesMaxDV16, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ itemStaticBoxSizer195->Add(m_RulesMaxDV16, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
- m_RulesMaxDV32 = new wxRadioButton( itemScrolledWindow176, ID_MAX_DV_32, _("32"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesMaxDV32 = new wxRadioButton( itemScrolledWindow184, ID_MAX_DV_32, _("32"), wxDefaultPosition, wxDefaultSize, 0 );
m_RulesMaxDV32->SetValue(false);
- itemStaticBoxSizer187->Add(m_RulesMaxDV32, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
-
- wxStaticBox* itemStaticBoxSizer192Static = new wxStaticBox(itemScrolledWindow176, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer192 = new wxStaticBoxSizer(itemStaticBoxSizer192Static, wxVERTICAL);
- itemBoxSizer177->Add(itemStaticBoxSizer192, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer193 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer192->Add(itemBoxSizer193, 0, wxGROW, 2);
- wxStaticText* itemStaticText194 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Happiness:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer193->Add(itemStaticText194, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- itemBoxSizer193->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- m_RulesHappy = new wxCheckBox( itemScrolledWindow176, ID_HAPPINESS, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
- m_RulesHappy->SetValue(false);
- itemBoxSizer193->Add(m_RulesHappy, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxBoxSizer* itemBoxSizer197 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer192->Add(itemBoxSizer197, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText198 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Faint Loss:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer197->Add(itemStaticText198, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- itemBoxSizer197->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- m_RulesHappyFaint = new wxSpinCtrl( itemScrolledWindow176, ID_HAPPY_FAINT, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemBoxSizer197->Add(m_RulesHappyFaint, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer195->Add(m_RulesMaxDV32, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+ wxStaticBox* itemStaticBoxSizer200Static = new wxStaticBox(itemScrolledWindow184, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer200 = new wxStaticBoxSizer(itemStaticBoxSizer200Static, wxVERTICAL);
+ itemBoxSizer185->Add(itemStaticBoxSizer200, 0, wxGROW|wxLEFT|wxRIGHT, 2);
wxBoxSizer* itemBoxSizer201 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer192->Add(itemBoxSizer201, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText202 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Level Gain:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer200->Add(itemBoxSizer201, 0, wxGROW, 2);
+ wxStaticText* itemStaticText202 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Happiness:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer201->Add(itemStaticText202, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
itemBoxSizer201->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesHappyLevel = new wxSpinCtrl( itemScrolledWindow176, ID_HAPPY_LEVEL_GAIN, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemBoxSizer201->Add(m_RulesHappyLevel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesHappy = new wxCheckBox( itemScrolledWindow184, ID_HAPPINESS, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesHappy->SetValue(false);
+ itemBoxSizer201->Add(m_RulesHappy, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxBoxSizer* itemBoxSizer205 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer192->Add(itemBoxSizer205, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText206 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Steps:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer200->Add(itemBoxSizer205, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText206 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Faint Loss:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer205->Add(itemStaticText206, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
itemBoxSizer205->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesHappySteps = new wxSpinCtrl( itemScrolledWindow176, ID_HAPPY_STEPS, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
- itemBoxSizer205->Add(m_RulesHappySteps, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesHappyFaint = new wxSpinCtrl( itemScrolledWindow184, ID_HAPPY_FAINT, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemBoxSizer205->Add(m_RulesHappyFaint, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer209Static = new wxStaticBox(itemScrolledWindow176, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer209 = new wxStaticBoxSizer(itemStaticBoxSizer209Static, wxVERTICAL);
- itemBoxSizer177->Add(itemStaticBoxSizer209, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer210 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer209->Add(itemBoxSizer210, 0, wxGROW, 2);
- wxStaticText* itemStaticText211 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Allow Effort Values:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer210->Add(itemStaticText211, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer209 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer200->Add(itemBoxSizer209, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText210 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Level Gain:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer209->Add(itemStaticText210, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer210->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer209->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesAllowEV = new wxCheckBox( itemScrolledWindow176, ID_ALLOW_EV, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
- m_RulesAllowEV->SetValue(false);
- itemBoxSizer210->Add(m_RulesAllowEV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesHappyLevel = new wxSpinCtrl( itemScrolledWindow184, ID_HAPPY_LEVEL_GAIN, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemBoxSizer209->Add(m_RulesHappyLevel, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer214 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer209->Add(itemBoxSizer214, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText215 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Max EV:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer214->Add(itemStaticText215, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer213 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer200->Add(itemBoxSizer213, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText214 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Steps:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer213->Add(itemStaticText214, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer214->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer213->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxEV = new wxSpinCtrl( itemScrolledWindow176, ID_MAX_EV, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemBoxSizer214->Add(m_RulesMaxEV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesHappySteps = new wxSpinCtrl( itemScrolledWindow184, ID_HAPPY_STEPS, _T("0"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 2147483647, 0 );
+ itemBoxSizer213->Add(m_RulesHappySteps, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer217Static = new wxStaticBox(itemScrolledWindow184, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer217 = new wxStaticBoxSizer(itemStaticBoxSizer217Static, wxVERTICAL);
+ itemBoxSizer185->Add(itemStaticBoxSizer217, 0, wxGROW|wxLEFT|wxRIGHT, 2);
wxBoxSizer* itemBoxSizer218 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer209->Add(itemBoxSizer218, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText219 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Max EV Per Stat:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer217->Add(itemBoxSizer218, 0, wxGROW, 2);
+ wxStaticText* itemStaticText219 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Allow Effort Values:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer218->Add(itemStaticText219, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
itemBoxSizer218->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMaxEVPerStat = new wxSpinCtrl( itemScrolledWindow176, ID_MAX_EV_PER_STAT, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
- itemBoxSizer218->Add(m_RulesMaxEVPerStat, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesAllowEV = new wxCheckBox( itemScrolledWindow184, ID_ALLOW_EV, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_RulesAllowEV->SetValue(false);
+ itemBoxSizer218->Add(m_RulesAllowEV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxBoxSizer* itemBoxSizer222 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer217->Add(itemBoxSizer222, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText223 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Max EV:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer222->Add(itemStaticText223, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ itemBoxSizer222->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ m_RulesMaxEV = new wxSpinCtrl( itemScrolledWindow184, ID_MAX_EV, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemBoxSizer222->Add(m_RulesMaxEV, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxBoxSizer* itemBoxSizer226 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer217->Add(itemBoxSizer226, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText227 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Max EV Per Stat:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer226->Add(itemStaticText227, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer222Static = new wxStaticBox(itemScrolledWindow176, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer222 = new wxStaticBoxSizer(itemStaticBoxSizer222Static, wxHORIZONTAL);
- itemBoxSizer177->Add(itemStaticBoxSizer222, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText223 = new wxStaticText( itemScrolledWindow176, wxID_STATIC, _("Pokérus:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer222->Add(itemStaticText223, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer226->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer222->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ m_RulesMaxEVPerStat = new wxSpinCtrl( itemScrolledWindow184, ID_MAX_EV_PER_STAT, _T("1"), wxDefaultPosition, wxSize(90, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 1, 2147483647, 1 );
+ itemBoxSizer226->Add(m_RulesMaxEVPerStat, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesPokerusNum = new wxSpinButton( itemScrolledWindow176, ID_POKERUS_NUM, wxDefaultPosition, wxSize(-1, 20), wxSP_VERTICAL|wxSP_ARROW_KEYS|wxSP_WRAP );
- itemStaticBoxSizer222->Add(m_RulesPokerusNum, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5);
+ wxStaticBox* itemStaticBoxSizer230Static = new wxStaticBox(itemScrolledWindow184, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer230 = new wxStaticBoxSizer(itemStaticBoxSizer230Static, wxHORIZONTAL);
+ itemBoxSizer185->Add(itemStaticBoxSizer230, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText231 = new wxStaticText( itemScrolledWindow184, wxID_STATIC, _("Pokérus:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer230->Add(itemStaticText231, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_Pokerus = new wxTextCtrl( itemScrolledWindow176, ID_POKERUS, _("1/1"), wxDefaultPosition, wxSize(135, -1), wxTE_READONLY|wxTE_CENTRE );
- itemStaticBoxSizer222->Add(m_Pokerus, 0, wxALIGN_CENTER_VERTICAL, 5);
+ itemStaticBoxSizer230->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_PokerusDenom = new wxSpinButton( itemScrolledWindow176, ID_POKERUS_DENOM, wxDefaultPosition, wxSize(-1, 20), wxSP_VERTICAL|wxSP_ARROW_KEYS|wxSP_WRAP );
- itemStaticBoxSizer222->Add(m_PokerusDenom, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
+ m_RulesPokerusNum = new wxSpinButton( itemScrolledWindow184, ID_POKERUS_NUM, wxDefaultPosition, wxSize(-1, 20), wxSP_VERTICAL|wxSP_ARROW_KEYS|wxSP_WRAP );
+ itemStaticBoxSizer230->Add(m_RulesPokerusNum, 0, wxALIGN_CENTER_VERTICAL|wxLEFT, 5);
- itemScrolledWindow176->FitInside();
- itemNotebook38->AddPage(itemScrolledWindow176, _("Stats"));
+ m_Pokerus = new wxTextCtrl( itemScrolledWindow184, ID_POKERUS, _("1/1"), wxDefaultPosition, wxSize(135, -1), wxTE_READONLY|wxTE_CENTRE );
+ itemStaticBoxSizer230->Add(m_Pokerus, 0, wxALIGN_CENTER_VERTICAL, 5);
+
+ m_PokerusDenom = new wxSpinButton( itemScrolledWindow184, ID_POKERUS_DENOM, wxDefaultPosition, wxSize(-1, 20), wxSP_VERTICAL|wxSP_ARROW_KEYS|wxSP_WRAP );
+ itemStaticBoxSizer230->Add(m_PokerusDenom, 0, wxALIGN_CENTER_VERTICAL|wxRIGHT, 5);
+
+ itemScrolledWindow184->FitInside();
+ itemNotebook38->AddPage(itemScrolledWindow184, _("Stats"));
itemBoxSizer37->Add(itemNotebook38, 0, wxALIGN_CENTER_HORIZONTAL, 0);
itemScrolledWindow36->FitInside();
itemNotebook19->AddPage(itemScrolledWindow36, _("Rules"));
- wxScrolledWindow* itemScrolledWindow228 = new wxScrolledWindow( itemNotebook19, ID_DATA_TYPES, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow228->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer229 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow228->SetSizer(itemBoxSizer229);
+ wxScrolledWindow* itemScrolledWindow236 = new wxScrolledWindow( itemNotebook19, ID_DATA_TYPES, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow236->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer237 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow236->SetSizer(itemBoxSizer237);
- m_TypeChart = new wxStaticBox(itemScrolledWindow228, wxID_ANY, _("Type Chart"));
- wxStaticBoxSizer* itemStaticBoxSizer230 = new wxStaticBoxSizer(m_TypeChart, wxVERTICAL);
- itemBoxSizer229->Add(itemStaticBoxSizer230, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- m_Typechart = new wxGrid( itemScrolledWindow228, ID_TYPECHART, wxDefaultPosition, wxSize(200, 200), wxSIMPLE_BORDER|wxHSCROLL|wxVSCROLL );
+ m_TypeChart = new wxStaticBox(itemScrolledWindow236, wxID_ANY, _("Type Chart"));
+ wxStaticBoxSizer* itemStaticBoxSizer238 = new wxStaticBoxSizer(m_TypeChart, wxVERTICAL);
+ itemBoxSizer237->Add(itemStaticBoxSizer238, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ m_Typechart = new wxGrid( itemScrolledWindow236, ID_TYPECHART, wxDefaultPosition, wxSize(200, 200), wxSIMPLE_BORDER|wxHSCROLL|wxVSCROLL );
m_Typechart->SetDefaultColSize(130);
m_Typechart->SetDefaultRowSize(20);
m_Typechart->SetColLabelSize(20);
m_Typechart->SetRowLabelSize(90);
- itemStaticBoxSizer230->Add(m_Typechart, 0, wxGROW|wxALL, 5);
- wxButton* itemButton232 = new wxButton( m_Typechart, ID_BUTTON, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer238->Add(m_Typechart, 0, wxGROW|wxALL, 5);
+ wxButton* itemButton240 = new wxButton( m_Typechart, ID_BUTTON, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- wxStaticBox* itemStaticBoxSizer233Static = new wxStaticBox(itemScrolledWindow228, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer233 = new wxStaticBoxSizer(itemStaticBoxSizer233Static, wxVERTICAL);
- itemBoxSizer229->Add(itemStaticBoxSizer233, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton234 = new wxButton( itemScrolledWindow228, ID_ADD_TYPE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer233->Add(itemButton234, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer241Static = new wxStaticBox(itemScrolledWindow236, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer241 = new wxStaticBoxSizer(itemStaticBoxSizer241Static, wxVERTICAL);
+ itemBoxSizer237->Add(itemStaticBoxSizer241, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton242 = new wxButton( itemScrolledWindow236, ID_ADD_TYPE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer241->Add(itemButton242, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
- itemScrolledWindow228->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow228, _("Types"));
+ itemScrolledWindow236->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow236, _("Types"));
- wxScrolledWindow* itemScrolledWindow235 = new wxScrolledWindow( itemNotebook19, ID_DATA_INITIAL_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow235->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer236 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow235->SetSizer(itemBoxSizer236);
+ wxScrolledWindow* itemScrolledWindow243 = new wxScrolledWindow( itemNotebook19, ID_DATA_INITIAL_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow243->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer244 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow243->SetSizer(itemBoxSizer244);
- wxStaticBox* itemStaticBoxSizer237Static = new wxStaticBox(itemScrolledWindow235, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer237 = new wxStaticBoxSizer(itemStaticBoxSizer237Static, wxVERTICAL);
- itemBoxSizer236->Add(itemStaticBoxSizer237, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxBoxSizer* itemBoxSizer238 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer237->Add(itemBoxSizer238, 0, wxGROW, 2);
- wxStaticText* itemStaticText239 = new wxStaticText( itemScrolledWindow235, wxID_STATIC, _("Start Map:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer238->Add(itemStaticText239, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer245Static = new wxStaticBox(itemScrolledWindow243, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer245 = new wxStaticBoxSizer(itemStaticBoxSizer245Static, wxVERTICAL);
+ itemBoxSizer244->Add(itemStaticBoxSizer245, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxBoxSizer* itemBoxSizer246 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer245->Add(itemBoxSizer246, 0, wxGROW, 2);
+ wxStaticText* itemStaticText247 = new wxStaticText( itemScrolledWindow243, wxID_STATIC, _("Start Map:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer246->Add(itemStaticText247, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer238->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer246->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxArrayString m_RulesMapStartStrings;
- m_RulesMapStart = new wxComboBox( itemScrolledWindow235, ID_MAP_START, _T(""), wxDefaultPosition, wxDefaultSize, m_RulesMapStartStrings, wxCB_READONLY|wxCB_SORT );
+ m_RulesMapStart = new wxComboBox( itemScrolledWindow243, ID_MAP_START, _T(""), wxDefaultPosition, wxDefaultSize, m_RulesMapStartStrings, wxCB_READONLY|wxCB_SORT );
if (ShowToolTips())
m_RulesMapStart->SetToolTip(_("Map that the game starts on"));
- itemBoxSizer238->Add(m_RulesMapStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer246->Add(m_RulesMapStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer242 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer237->Add(itemBoxSizer242, 0, wxGROW|wxTOP, 5);
- wxStaticText* itemStaticText243 = new wxStaticText( itemScrolledWindow235, wxID_STATIC, _("Coordinates:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer242->Add(itemStaticText243, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer250 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer245->Add(itemBoxSizer250, 0, wxGROW|wxTOP, 5);
+ wxStaticText* itemStaticText251 = new wxStaticText( itemScrolledWindow243, wxID_STATIC, _("Coordinates:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer250->Add(itemStaticText251, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer242->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer250->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMapStartX = new wxSpinCtrl( itemScrolledWindow235, ID_START_X, _T("0"), wxDefaultPosition, wxSize(79, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
- itemBoxSizer242->Add(m_RulesMapStartX, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ m_RulesMapStartX = new wxSpinCtrl( itemScrolledWindow243, ID_START_X, _T("0"), wxDefaultPosition, wxSize(79, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
+ itemBoxSizer250->Add(m_RulesMapStartX, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- m_RulesMapStartY = new wxSpinCtrl( itemScrolledWindow235, ID_START_Y, _T("0"), wxDefaultPosition, wxSize(79, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
- itemBoxSizer242->Add(m_RulesMapStartY, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ m_RulesMapStartY = new wxSpinCtrl( itemScrolledWindow243, ID_START_Y, _T("0"), wxDefaultPosition, wxSize(79, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
+ itemBoxSizer250->Add(m_RulesMapStartY, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer247Static = new wxStaticBox(itemScrolledWindow235, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer247 = new wxStaticBoxSizer(itemStaticBoxSizer247Static, wxHORIZONTAL);
- itemBoxSizer236->Add(itemStaticBoxSizer247, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText248 = new wxStaticText( itemScrolledWindow235, wxID_STATIC, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer247->Add(itemStaticText248, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer255Static = new wxStaticBox(itemScrolledWindow243, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer255 = new wxStaticBoxSizer(itemStaticBoxSizer255Static, wxHORIZONTAL);
+ itemBoxSizer244->Add(itemStaticBoxSizer255, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText256 = new wxStaticText( itemScrolledWindow243, wxID_STATIC, _("Direction:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer255->Add(itemStaticText256, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer247->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer255->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxArrayString m_RulesDirStartStrings;
m_RulesDirStartStrings.Add(_("Up"));
m_RulesDirStartStrings.Add(_("Down"));
m_RulesDirStartStrings.Add(_("Left"));
m_RulesDirStartStrings.Add(_("Right"));
- m_RulesDirStart = new wxComboBox( itemScrolledWindow235, ID_DIRECTION_START, _("Down"), wxDefaultPosition, wxDefaultSize, m_RulesDirStartStrings, wxCB_READONLY );
+ m_RulesDirStart = new wxComboBox( itemScrolledWindow243, ID_DIRECTION_START, _("Down"), wxDefaultPosition, wxDefaultSize, m_RulesDirStartStrings, wxCB_READONLY );
m_RulesDirStart->SetStringSelection(_("Down"));
- itemStaticBoxSizer247->Add(m_RulesDirStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer255->Add(m_RulesDirStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer251Static = new wxStaticBox(itemScrolledWindow235, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer251 = new wxStaticBoxSizer(itemStaticBoxSizer251Static, wxHORIZONTAL);
- itemBoxSizer236->Add(itemStaticBoxSizer251, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText252 = new wxStaticText( itemScrolledWindow235, wxID_STATIC, _("Money:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer251->Add(itemStaticText252, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer259Static = new wxStaticBox(itemScrolledWindow243, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer259 = new wxStaticBoxSizer(itemStaticBoxSizer259Static, wxHORIZONTAL);
+ itemBoxSizer244->Add(itemStaticBoxSizer259, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText260 = new wxStaticText( itemScrolledWindow243, wxID_STATIC, _("Money:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer259->Add(itemStaticText260, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer251->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer259->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_RulesMoneyStart = new wxSpinCtrl( itemScrolledWindow235, ID_START_MONEY, _T("0"), wxDefaultPosition, wxSize(90, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
+ m_RulesMoneyStart = new wxSpinCtrl( itemScrolledWindow243, ID_START_MONEY, _T("0"), wxDefaultPosition, wxSize(90, 19), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 0, 0 );
if (ShowToolTips())
m_RulesMoneyStart->SetToolTip(_("Amount of money the player starts with"));
- itemStaticBoxSizer251->Add(m_RulesMoneyStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer259->Add(m_RulesMoneyStart, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer255Static = new wxStaticBox(itemScrolledWindow235, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer255 = new wxStaticBoxSizer(itemStaticBoxSizer255Static, wxHORIZONTAL);
- itemBoxSizer236->Add(itemStaticBoxSizer255, 0, wxGROW|wxLEFT|wxRIGHT, 2);
- wxStaticText* itemStaticText256 = new wxStaticText( itemScrolledWindow235, wxID_STATIC, _("Initial Dialog:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer255->Add(itemStaticText256, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxStaticBox* itemStaticBoxSizer263Static = new wxStaticBox(itemScrolledWindow243, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer263 = new wxStaticBoxSizer(itemStaticBoxSizer263Static, wxHORIZONTAL);
+ itemBoxSizer244->Add(itemStaticBoxSizer263, 0, wxGROW|wxLEFT|wxRIGHT, 2);
+ wxStaticText* itemStaticText264 = new wxStaticText( itemScrolledWindow243, wxID_STATIC, _("Initial Dialog:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer263->Add(itemStaticText264, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemStaticBoxSizer255->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer263->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxArrayString m_RulesInitDlgStrings;
- m_RulesInitDlg = new wxComboBox( itemScrolledWindow235, ID_INITIAL_DIALOG, _T(""), wxDefaultPosition, wxDefaultSize, m_RulesInitDlgStrings, wxCB_READONLY|wxCB_SORT );
+ m_RulesInitDlg = new wxComboBox( itemScrolledWindow243, ID_INITIAL_DIALOG, _T(""), wxDefaultPosition, wxDefaultSize, m_RulesInitDlgStrings, wxCB_READONLY|wxCB_SORT );
if (ShowToolTips())
m_RulesInitDlg->SetToolTip(_("Dialog that starts the game"));
- itemStaticBoxSizer255->Add(m_RulesInitDlg, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- itemScrolledWindow235->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow235, _("Initial"));
-
- wxScrolledWindow* itemScrolledWindow259 = new wxScrolledWindow( itemNotebook19, ID_DATA_DIALOGS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow259->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer260 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow259->SetSizer(itemBoxSizer260);
-
- wxStaticBox* itemStaticBoxSizer261Static = new wxStaticBox(itemScrolledWindow259, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer261 = new wxStaticBoxSizer(itemStaticBoxSizer261Static, wxVERTICAL);
- itemBoxSizer260->Add(itemStaticBoxSizer261, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton262 = new wxButton( itemScrolledWindow259, ID_ADD_DIALOG, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer261->Add(itemButton262, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer263->Add(m_RulesInitDlg, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- itemScrolledWindow259->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow259, _("Dialogs"));
+ itemScrolledWindow243->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow243, _("Initial"));
- wxScrolledWindow* itemScrolledWindow263 = new wxScrolledWindow( itemNotebook19, ID_DATA_COIN_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow263->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer264 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow263->SetSizer(itemBoxSizer264);
-
- wxStaticBox* itemStaticBoxSizer265Static = new wxStaticBox(itemScrolledWindow263, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer265 = new wxStaticBoxSizer(itemStaticBoxSizer265Static, wxVERTICAL);
- itemBoxSizer264->Add(itemStaticBoxSizer265, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton266 = new wxButton( itemScrolledWindow263, ID_ADD_COIN_LIST, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer265->Add(itemButton266, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
-
- itemScrolledWindow263->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow263, _("Coin Lists"));
-
- wxScrolledWindow* itemScrolledWindow267 = new wxScrolledWindow( itemNotebook19, ID_DATA_BADGES_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow267 = new wxScrolledWindow( itemNotebook19, ID_DATA_DIALOGS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow267->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer268 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow267->SetSizer(itemBoxSizer268);
@@ -1186,13 +1190,13 @@ void MainFrame::CreateControls()
wxStaticBox* itemStaticBoxSizer269Static = new wxStaticBox(itemScrolledWindow267, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer269 = new wxStaticBoxSizer(itemStaticBoxSizer269Static, wxVERTICAL);
itemBoxSizer268->Add(itemStaticBoxSizer269, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton270 = new wxButton( itemScrolledWindow267, ID_ADD_BADGE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ wxButton* itemButton270 = new wxButton( itemScrolledWindow267, ID_ADD_DIALOG, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer269->Add(itemButton270, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow267->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow267, _("Badges"));
+ itemNotebook19->AddPage(itemScrolledWindow267, _("Dialogs"));
- wxScrolledWindow* itemScrolledWindow271 = new wxScrolledWindow( itemNotebook19, ID_DATA_ABILITIES_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow271 = new wxScrolledWindow( itemNotebook19, ID_DATA_COIN_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow271->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer272 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow271->SetSizer(itemBoxSizer272);
@@ -1200,13 +1204,13 @@ void MainFrame::CreateControls()
wxStaticBox* itemStaticBoxSizer273Static = new wxStaticBox(itemScrolledWindow271, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer273 = new wxStaticBoxSizer(itemStaticBoxSizer273Static, wxVERTICAL);
itemBoxSizer272->Add(itemStaticBoxSizer273, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton274 = new wxButton( itemScrolledWindow271, ID_ADD_ABILITY, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ wxButton* itemButton274 = new wxButton( itemScrolledWindow271, ID_ADD_COIN_LIST, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer273->Add(itemButton274, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow271->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow271, _("Abilities"));
+ itemNotebook19->AddPage(itemScrolledWindow271, _("Coin Lists"));
- wxScrolledWindow* itemScrolledWindow275 = new wxScrolledWindow( itemNotebook19, ID_DATA_NATURES, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow275 = new wxScrolledWindow( itemNotebook19, ID_DATA_BADGES_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow275->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer276 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow275->SetSizer(itemBoxSizer276);
@@ -1214,230 +1218,267 @@ void MainFrame::CreateControls()
wxStaticBox* itemStaticBoxSizer277Static = new wxStaticBox(itemScrolledWindow275, wxID_ANY, _T(""));
wxStaticBoxSizer* itemStaticBoxSizer277 = new wxStaticBoxSizer(itemStaticBoxSizer277Static, wxVERTICAL);
itemBoxSizer276->Add(itemStaticBoxSizer277, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton278 = new wxButton( itemScrolledWindow275, ID_ADD_NATURE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ wxButton* itemButton278 = new wxButton( itemScrolledWindow275, ID_ADD_BADGE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
itemStaticBoxSizer277->Add(itemButton278, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow275->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow275, _("Natures"));
+ itemNotebook19->AddPage(itemScrolledWindow275, _("Badges"));
- wxScrolledWindow* itemScrolledWindow279 = new wxScrolledWindow( itemNotebook19, ID_DATA_SKINS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow279 = new wxScrolledWindow( itemNotebook19, ID_DATA_ABILITIES_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow279->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer280 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow279->SetSizer(itemBoxSizer280);
- wxStaticBox* itemStaticBoxSizer281Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Walking"));
- wxStaticBoxSizer* itemStaticBoxSizer281 = new wxStaticBoxSizer(itemStaticBoxSizer281Static, wxHORIZONTAL);
+ wxStaticBox* itemStaticBoxSizer281Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer281 = new wxStaticBoxSizer(itemStaticBoxSizer281Static, wxVERTICAL);
itemBoxSizer280->Add(itemStaticBoxSizer281, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinWalkBitmap(wxNullBitmap);
- m_SkinWalk = new wxStaticBitmap( itemScrolledWindow279, ID_WALKING_SKIN, m_SkinWalkBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer281->Add(m_SkinWalk, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton283 = new wxButton( itemScrolledWindow279, ID_WALKING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer281->Add(itemButton283, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxStaticBox* itemStaticBoxSizer284Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Biking"));
- wxStaticBoxSizer* itemStaticBoxSizer284 = new wxStaticBoxSizer(itemStaticBoxSizer284Static, wxHORIZONTAL);
- itemBoxSizer280->Add(itemStaticBoxSizer284, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinBikeBitmap(wxNullBitmap);
- m_SkinBike = new wxStaticBitmap( itemScrolledWindow279, ID_BIKING_SKIN, m_SkinBikeBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer284->Add(m_SkinBike, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton286 = new wxButton( itemScrolledWindow279, ID_BIKING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer284->Add(itemButton286, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxStaticBox* itemStaticBoxSizer287Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Surfing"));
- wxStaticBoxSizer* itemStaticBoxSizer287 = new wxStaticBoxSizer(itemStaticBoxSizer287Static, wxHORIZONTAL);
- itemBoxSizer280->Add(itemStaticBoxSizer287, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinSurfBitmap(wxNullBitmap);
- m_SkinSurf = new wxStaticBitmap( itemScrolledWindow279, ID_SURFING_SKIN, m_SkinSurfBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer287->Add(m_SkinSurf, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton289 = new wxButton( itemScrolledWindow279, ID_SURFING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer287->Add(itemButton289, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxStaticBox* itemStaticBoxSizer290Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Flying"));
- wxStaticBoxSizer* itemStaticBoxSizer290 = new wxStaticBoxSizer(itemStaticBoxSizer290Static, wxHORIZONTAL);
- itemBoxSizer280->Add(itemStaticBoxSizer290, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinFlyBitmap(wxNullBitmap);
- m_SkinFly = new wxStaticBitmap( itemScrolledWindow279, ID_FLYING_SKIN, m_SkinFlyBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer290->Add(m_SkinFly, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton292 = new wxButton( itemScrolledWindow279, ID_FLYING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer290->Add(itemButton292, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxStaticBox* itemStaticBoxSizer293Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Fishing"));
- wxStaticBoxSizer* itemStaticBoxSizer293 = new wxStaticBoxSizer(itemStaticBoxSizer293Static, wxHORIZONTAL);
- itemBoxSizer280->Add(itemStaticBoxSizer293, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinFishBitmap(wxNullBitmap);
- m_SkinFish = new wxStaticBitmap( itemScrolledWindow279, ID_FISHING_SKIN, m_SkinFishBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer293->Add(m_SkinFish, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton295 = new wxButton( itemScrolledWindow279, ID_FISING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer293->Add(itemButton295, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- wxStaticBox* itemStaticBoxSizer296Static = new wxStaticBox(itemScrolledWindow279, wxID_ANY, _("Fish while Surfing"));
- wxStaticBoxSizer* itemStaticBoxSizer296 = new wxStaticBoxSizer(itemStaticBoxSizer296Static, wxHORIZONTAL);
- itemBoxSizer280->Add(itemStaticBoxSizer296, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxBitmap m_SkinFishSurfBitmap(wxNullBitmap);
- m_SkinFishSurf = new wxStaticBitmap( itemScrolledWindow279, ID_FISHSURFING_SKIN, m_SkinFishSurfBitmap, wxDefaultPosition, wxSize(192, 30), wxSIMPLE_BORDER );
- itemStaticBoxSizer296->Add(m_SkinFishSurf, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
-
- wxButton* itemButton298 = new wxButton( itemScrolledWindow279, ID_FISHSURFING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer296->Add(itemButton298, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton282 = new wxButton( itemScrolledWindow279, ID_ADD_ABILITY, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer281->Add(itemButton282, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow279->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow279, _("Skins"));
-
- wxScrolledWindow* itemScrolledWindow299 = new wxScrolledWindow( itemNotebook19, ID_DATA_MISC_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow299->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer300 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow299->SetSizer(itemBoxSizer300);
-
- wxStaticBox* itemStaticBoxSizer301Static = new wxStaticBox(itemScrolledWindow299, wxID_ANY, _("Super PC"));
- wxStaticBoxSizer* itemStaticBoxSizer301 = new wxStaticBoxSizer(itemStaticBoxSizer301Static, wxVERTICAL);
- itemBoxSizer300->Add(itemStaticBoxSizer301, 0, wxGROW, 0);
- wxBoxSizer* itemBoxSizer302 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer301->Add(itemBoxSizer302, 0, wxGROW, 2);
- wxStaticText* itemStaticText303 = new wxStaticText( itemScrolledWindow299, wxID_STATIC, _("Username:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer302->Add(itemStaticText303, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- itemBoxSizer302->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
-
- m_SuperPCUname = new wxTextCtrl( itemScrolledWindow299, ID_SUPER_PC_USERNAME, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ itemNotebook19->AddPage(itemScrolledWindow279, _("Abilities"));
+
+ wxScrolledWindow* itemScrolledWindow283 = new wxScrolledWindow( itemNotebook19, ID_DATA_NATURES, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow283->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer284 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow283->SetSizer(itemBoxSizer284);
+
+ wxStaticBox* itemStaticBoxSizer285Static = new wxStaticBox(itemScrolledWindow283, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer285 = new wxStaticBoxSizer(itemStaticBoxSizer285Static, wxVERTICAL);
+ itemBoxSizer284->Add(itemStaticBoxSizer285, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton286 = new wxButton( itemScrolledWindow283, ID_ADD_NATURE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer285->Add(itemButton286, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow283->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow283, _("Natures"));
+
+ wxScrolledWindow* itemScrolledWindow287 = new wxScrolledWindow( itemNotebook19, ID_DATA_SKINS_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow287->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer288 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow287->SetSizer(itemBoxSizer288);
+
+ wxStaticBox* itemStaticBoxSizer289Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Walking"));
+ wxStaticBoxSizer* itemStaticBoxSizer289 = new wxStaticBoxSizer(itemStaticBoxSizer289Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer289, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinWalk = new wxStaticBitmap( itemScrolledWindow287, ID_WALKING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer289->Add(m_SkinWalk, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton291 = new wxButton( itemScrolledWindow287, ID_WALKING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer289->Add(itemButton291, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer292Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Biking"));
+ wxStaticBoxSizer* itemStaticBoxSizer292 = new wxStaticBoxSizer(itemStaticBoxSizer292Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer292, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinBike = new wxStaticBitmap( itemScrolledWindow287, ID_BIKING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer292->Add(m_SkinBike, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton294 = new wxButton( itemScrolledWindow287, ID_BIKING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer292->Add(itemButton294, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer295Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Surfing"));
+ wxStaticBoxSizer* itemStaticBoxSizer295 = new wxStaticBoxSizer(itemStaticBoxSizer295Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer295, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinSurf = new wxStaticBitmap( itemScrolledWindow287, ID_SURFING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer295->Add(m_SkinSurf, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton297 = new wxButton( itemScrolledWindow287, ID_SURFING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer295->Add(itemButton297, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer298Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Flying"));
+ wxStaticBoxSizer* itemStaticBoxSizer298 = new wxStaticBoxSizer(itemStaticBoxSizer298Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer298, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinFly = new wxStaticBitmap( itemScrolledWindow287, ID_FLYING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer298->Add(m_SkinFly, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton300 = new wxButton( itemScrolledWindow287, ID_FLYING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer298->Add(itemButton300, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer301Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Fishing"));
+ wxStaticBoxSizer* itemStaticBoxSizer301 = new wxStaticBoxSizer(itemStaticBoxSizer301Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer301, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinFish = new wxStaticBitmap( itemScrolledWindow287, ID_FISHING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer301->Add(m_SkinFish, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton303 = new wxButton( itemScrolledWindow287, ID_FISING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer301->Add(itemButton303, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ wxStaticBox* itemStaticBoxSizer304Static = new wxStaticBox(itemScrolledWindow287, wxID_ANY, _("Fish while Surfing"));
+ wxStaticBoxSizer* itemStaticBoxSizer304 = new wxStaticBoxSizer(itemStaticBoxSizer304Static, wxHORIZONTAL);
+ itemBoxSizer288->Add(itemStaticBoxSizer304, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ m_SkinFishSurf = new wxStaticBitmap( itemScrolledWindow287, ID_FISHSURFING_SKIN, wxNullBitmap, wxDefaultPosition, wxSize(192, 128), wxSIMPLE_BORDER );
+ itemStaticBoxSizer304->Add(m_SkinFishSurf, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+
+ wxButton* itemButton306 = new wxButton( itemScrolledWindow287, ID_FISHSURFING_SKIN_BROWSE, _("Browse..."), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer304->Add(itemButton306, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow287->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow287, _("Skins"));
+
+ wxScrolledWindow* itemScrolledWindow307 = new wxScrolledWindow( itemNotebook19, ID_DATA_EGG_GROUP, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow307->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer308 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow307->SetSizer(itemBoxSizer308);
+
+ wxStaticBox* itemStaticBoxSizer309Static = new wxStaticBox(itemScrolledWindow307, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer309 = new wxStaticBoxSizer(itemStaticBoxSizer309Static, wxVERTICAL);
+ itemBoxSizer308->Add(itemStaticBoxSizer309, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton310 = new wxButton( itemScrolledWindow307, ID_ADD_EGG_GROUP, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer309->Add(itemButton310, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow307->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow307, _("Egg Groups"));
+
+ wxScrolledWindow* itemScrolledWindow311 = new wxScrolledWindow( itemNotebook19, ID_DATA_MISC_PAGE, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow311->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer312 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow311->SetSizer(itemBoxSizer312);
+
+ wxStaticBox* itemStaticBoxSizer313Static = new wxStaticBox(itemScrolledWindow311, wxID_ANY, _("Super PC"));
+ wxStaticBoxSizer* itemStaticBoxSizer313 = new wxStaticBoxSizer(itemStaticBoxSizer313Static, wxVERTICAL);
+ itemBoxSizer312->Add(itemStaticBoxSizer313, 0, wxGROW, 0);
+ wxBoxSizer* itemBoxSizer314 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer313->Add(itemBoxSizer314, 0, wxGROW, 2);
+ wxStaticText* itemStaticText315 = new wxStaticText( itemScrolledWindow311, wxID_STATIC, _("Username:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer314->Add(itemStaticText315, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ itemBoxSizer314->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+
+ m_SuperPCUname = new wxTextCtrl( itemScrolledWindow311, ID_SUPER_PC_USERNAME, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
if (ShowToolTips())
m_SuperPCUname->SetToolTip(_("Username for the Super PC"));
- itemBoxSizer302->Add(m_SuperPCUname, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer314->Add(m_SuperPCUname, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxBoxSizer* itemBoxSizer306 = new wxBoxSizer(wxHORIZONTAL);
- itemStaticBoxSizer301->Add(itemBoxSizer306, 0, wxGROW|wxTOP, 2);
- wxStaticText* itemStaticText307 = new wxStaticText( itemScrolledWindow299, wxID_STATIC, _("Password:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemBoxSizer306->Add(itemStaticText307, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ wxBoxSizer* itemBoxSizer318 = new wxBoxSizer(wxHORIZONTAL);
+ itemStaticBoxSizer313->Add(itemBoxSizer318, 0, wxGROW|wxTOP, 2);
+ wxStaticText* itemStaticText319 = new wxStaticText( itemScrolledWindow311, wxID_STATIC, _("Password:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemBoxSizer318->Add(itemStaticText319, 0, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- itemBoxSizer306->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer318->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_SuperPCPwd = new wxTextCtrl( itemScrolledWindow299, ID_SUPER_PC_PASSWORD, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
+ m_SuperPCPwd = new wxTextCtrl( itemScrolledWindow311, ID_SUPER_PC_PASSWORD, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
if (ShowToolTips())
m_SuperPCPwd->SetToolTip(_("Password for the Super PC"));
- itemBoxSizer306->Add(m_SuperPCPwd, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
+ itemBoxSizer318->Add(m_SuperPCPwd, 0, wxALIGN_TOP|wxLEFT|wxRIGHT, 5);
- wxStaticBox* itemStaticBoxSizer310Static = new wxStaticBox(itemScrolledWindow299, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer310 = new wxStaticBoxSizer(itemStaticBoxSizer310Static, wxHORIZONTAL);
- itemBoxSizer300->Add(itemStaticBoxSizer310, 0, wxGROW, 2);
- wxStaticText* itemStaticText311 = new wxStaticText( itemScrolledWindow299, wxID_STATIC, _("Struggle:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer310->Add(itemStaticText311, 0, wxALIGN_CENTER_VERTICAL, 0);
+ wxStaticBox* itemStaticBoxSizer322Static = new wxStaticBox(itemScrolledWindow311, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer322 = new wxStaticBoxSizer(itemStaticBoxSizer322Static, wxHORIZONTAL);
+ itemBoxSizer312->Add(itemStaticBoxSizer322, 0, wxGROW, 2);
+ wxStaticText* itemStaticText323 = new wxStaticText( itemScrolledWindow311, wxID_STATIC, _("Struggle:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer322->Add(itemStaticText323, 0, wxALIGN_CENTER_VERTICAL, 0);
- itemStaticBoxSizer310->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer322->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
wxArrayString m_MoveStruggleStrings;
- m_MoveStruggle = new wxComboBox( itemScrolledWindow299, ID_STRUGGLE, _T(""), wxDefaultPosition, wxDefaultSize, m_MoveStruggleStrings, wxCB_READONLY|wxCB_SORT );
+ m_MoveStruggle = new wxComboBox( itemScrolledWindow311, ID_STRUGGLE, _T(""), wxDefaultPosition, wxDefaultSize, m_MoveStruggleStrings, wxCB_READONLY|wxCB_SORT );
if (ShowToolTips())
m_MoveStruggle->SetToolTip(_("Which move to use when all PP are exhausted"));
- itemStaticBoxSizer310->Add(m_MoveStruggle, 0, wxALIGN_TOP, 0);
+ itemStaticBoxSizer322->Add(m_MoveStruggle, 0, wxALIGN_TOP, 0);
- wxStaticBox* itemStaticBoxSizer314Static = new wxStaticBox(itemScrolledWindow299, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer314 = new wxStaticBoxSizer(itemStaticBoxSizer314Static, wxHORIZONTAL);
- itemBoxSizer300->Add(itemStaticBoxSizer314, 0, wxGROW, 2);
- wxStaticText* itemStaticText315 = new wxStaticText( itemScrolledWindow299, wxID_STATIC, _("Encounter Chance:"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer314->Add(itemStaticText315, 0, wxALIGN_CENTER_VERTICAL, 0);
+ wxStaticBox* itemStaticBoxSizer326Static = new wxStaticBox(itemScrolledWindow311, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer326 = new wxStaticBoxSizer(itemStaticBoxSizer326Static, wxHORIZONTAL);
+ itemBoxSizer312->Add(itemStaticBoxSizer326, 0, wxGROW, 2);
+ wxStaticText* itemStaticText327 = new wxStaticText( itemScrolledWindow311, wxID_STATIC, _("Confusion:"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer326->Add(itemStaticText327, 0, wxALIGN_CENTER_VERTICAL, 0);
- itemStaticBoxSizer314->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
+ itemStaticBoxSizer326->Add(5, 5, 1, wxALIGN_CENTER_VERTICAL|wxLEFT|wxRIGHT, 5);
- m_EncounterChance = new wxSpinCtrl( itemScrolledWindow299, ID_ENCOUNTER_CHANCE, _T("0"), wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS|wxSP_WRAP, 0, 100, 0 );
+ wxArrayString m_MoveConfuseStrings;
+ m_MoveConfuse = new wxComboBox( itemScrolledWindow311, ID_CONFUSE, _T(""), wxDefaultPosition, wxDefaultSize, m_MoveConfuseStrings, wxCB_READONLY|wxCB_SORT );
if (ShowToolTips())
- m_EncounterChance->SetToolTip(_("The chance of an encounter happening when a Wild Tile is stepped on."));
- itemStaticBoxSizer314->Add(m_EncounterChance, 0, wxALIGN_TOP, 0);
+ m_MoveConfuse->SetToolTip(_("Which move to use when a Pokémon is confused"));
+ itemStaticBoxSizer326->Add(m_MoveConfuse, 0, wxALIGN_TOP, 0);
- itemScrolledWindow299->FitInside();
- itemNotebook19->AddPage(itemScrolledWindow299, _("Miscellaneous"));
+ itemScrolledWindow311->FitInside();
+ itemNotebook19->AddPage(itemScrolledWindow311, _("Miscellaneous"));
itemBoxSizer18->Add(itemNotebook19, 0, wxGROW, 0);
itemScrolledWindow17->FitInside();
itemNotebook16->AddPage(itemScrolledWindow17, _("Data"));
- wxScrolledWindow* itemScrolledWindow318 = new wxScrolledWindow( itemNotebook16, ID_ITEM_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow318->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer319 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow318->SetSizer(itemBoxSizer319);
-
- wxStaticBox* itemStaticBoxSizer320Static = new wxStaticBox(itemScrolledWindow318, wxID_ANY, _T(""));
- m_ItemSizer = new wxStaticBoxSizer(itemStaticBoxSizer320Static, wxVERTICAL);
- itemBoxSizer319->Add(m_ItemSizer, 0, wxGROW|wxLEFT|wxRIGHT, 5);
- wxButton* itemButton321 = new wxButton( itemScrolledWindow318, ID_ADD_ITEM, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_ItemSizer->Add(itemButton321, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
-
- itemScrolledWindow318->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow318, _("Items"));
-
- wxScrolledWindow* itemScrolledWindow322 = new wxScrolledWindow( itemNotebook16, ID_MAP_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow322->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer323 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow322->SetSizer(itemBoxSizer323);
-
- wxStaticBox* itemStaticBoxSizer324Static = new wxStaticBox(itemScrolledWindow322, wxID_ANY, _T(""));
- m_MapSizer = new wxStaticBoxSizer(itemStaticBoxSizer324Static, wxVERTICAL);
- itemBoxSizer323->Add(m_MapSizer, 0, wxGROW, 0);
- wxButton* itemButton325 = new wxButton( itemScrolledWindow322, ID_ADD_MAP, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_MapSizer->Add(itemButton325, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
-
- itemScrolledWindow322->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow322, _("Map"));
-
- wxScrolledWindow* itemScrolledWindow326 = new wxScrolledWindow( itemNotebook16, ID_MOVE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
- itemScrolledWindow326->SetScrollbars(1, 1, 0, 0);
- wxBoxSizer* itemBoxSizer327 = new wxBoxSizer(wxVERTICAL);
- itemScrolledWindow326->SetSizer(itemBoxSizer327);
-
- wxStaticBox* itemStaticBoxSizer328Static = new wxStaticBox(itemScrolledWindow326, wxID_ANY, _T(""));
- m_MoveSizer = new wxStaticBoxSizer(itemStaticBoxSizer328Static, wxVERTICAL);
- itemBoxSizer327->Add(m_MoveSizer, 0, wxGROW, 0);
- wxButton* itemButton329 = new wxButton( itemScrolledWindow326, ID_ADD_MOVE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_MoveSizer->Add(itemButton329, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
-
- itemScrolledWindow326->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow326, _("Moves"));
-
- wxScrolledWindow* itemScrolledWindow330 = new wxScrolledWindow( itemNotebook16, ID_POKEMON_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow330 = new wxScrolledWindow( itemNotebook16, ID_ITEM_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow330->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer331 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow330->SetSizer(itemBoxSizer331);
wxStaticBox* itemStaticBoxSizer332Static = new wxStaticBox(itemScrolledWindow330, wxID_ANY, _T(""));
- wxStaticBoxSizer* itemStaticBoxSizer332 = new wxStaticBoxSizer(itemStaticBoxSizer332Static, wxVERTICAL);
- itemBoxSizer331->Add(itemStaticBoxSizer332, 0, wxGROW, 0);
- wxButton* itemButton333 = new wxButton( itemScrolledWindow330, ID_ADD_POKEMON, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- itemStaticBoxSizer332->Add(itemButton333, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ m_ItemSizer = new wxStaticBoxSizer(itemStaticBoxSizer332Static, wxVERTICAL);
+ itemBoxSizer331->Add(m_ItemSizer, 0, wxGROW|wxLEFT|wxRIGHT, 5);
+ wxButton* itemButton333 = new wxButton( itemScrolledWindow330, ID_ADD_ITEM, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_ItemSizer->Add(itemButton333, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow330->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow330, _("Pokémon"));
+ itemNotebook16->AddPage(itemScrolledWindow330, _("Items"));
- wxScrolledWindow* itemScrolledWindow334 = new wxScrolledWindow( itemNotebook16, ID_STORE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow334 = new wxScrolledWindow( itemNotebook16, ID_MAP_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow334->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer335 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow334->SetSizer(itemBoxSizer335);
wxStaticBox* itemStaticBoxSizer336Static = new wxStaticBox(itemScrolledWindow334, wxID_ANY, _T(""));
- m_StoreSizer = new wxStaticBoxSizer(itemStaticBoxSizer336Static, wxVERTICAL);
- itemBoxSizer335->Add(m_StoreSizer, 0, wxGROW, 0);
- wxButton* itemButton337 = new wxButton( itemScrolledWindow334, ID_ADD_STORE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_StoreSizer->Add(itemButton337, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ m_MapSizer = new wxStaticBoxSizer(itemStaticBoxSizer336Static, wxVERTICAL);
+ itemBoxSizer335->Add(m_MapSizer, 0, wxGROW, 0);
+ wxButton* itemButton337 = new wxButton( itemScrolledWindow334, ID_ADD_MAP, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_MapSizer->Add(itemButton337, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow334->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow334, _("Stores"));
+ itemNotebook16->AddPage(itemScrolledWindow334, _("Map"));
- wxScrolledWindow* itemScrolledWindow338 = new wxScrolledWindow( itemNotebook16, ID_TILE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ wxScrolledWindow* itemScrolledWindow338 = new wxScrolledWindow( itemNotebook16, ID_MOVE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
itemScrolledWindow338->SetScrollbars(1, 1, 0, 0);
wxBoxSizer* itemBoxSizer339 = new wxBoxSizer(wxVERTICAL);
itemScrolledWindow338->SetSizer(itemBoxSizer339);
wxStaticBox* itemStaticBoxSizer340Static = new wxStaticBox(itemScrolledWindow338, wxID_ANY, _T(""));
- m_TileSizer = new wxStaticBoxSizer(itemStaticBoxSizer340Static, wxVERTICAL);
- itemBoxSizer339->Add(m_TileSizer, 0, wxGROW, 0);
- wxButton* itemButton341 = new wxButton( itemScrolledWindow338, ID_ADD_TILE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
- m_TileSizer->Add(itemButton341, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+ m_MoveSizer = new wxStaticBoxSizer(itemStaticBoxSizer340Static, wxVERTICAL);
+ itemBoxSizer339->Add(m_MoveSizer, 0, wxGROW, 0);
+ wxButton* itemButton341 = new wxButton( itemScrolledWindow338, ID_ADD_MOVE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_MoveSizer->Add(itemButton341, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
itemScrolledWindow338->FitInside();
- itemNotebook16->AddPage(itemScrolledWindow338, _("Tiles"));
+ itemNotebook16->AddPage(itemScrolledWindow338, _("Moves"));
+
+ wxScrolledWindow* itemScrolledWindow342 = new wxScrolledWindow( itemNotebook16, ID_POKEMON_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow342->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer343 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow342->SetSizer(itemBoxSizer343);
+
+ wxStaticBox* itemStaticBoxSizer344Static = new wxStaticBox(itemScrolledWindow342, wxID_ANY, _T(""));
+ wxStaticBoxSizer* itemStaticBoxSizer344 = new wxStaticBoxSizer(itemStaticBoxSizer344Static, wxVERTICAL);
+ itemBoxSizer343->Add(itemStaticBoxSizer344, 0, wxGROW, 0);
+ wxButton* itemButton345 = new wxButton( itemScrolledWindow342, ID_ADD_POKEMON, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ itemStaticBoxSizer344->Add(itemButton345, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow342->FitInside();
+ itemNotebook16->AddPage(itemScrolledWindow342, _("Pokémon"));
+
+ wxScrolledWindow* itemScrolledWindow346 = new wxScrolledWindow( itemNotebook16, ID_STORE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow346->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer347 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow346->SetSizer(itemBoxSizer347);
+
+ wxStaticBox* itemStaticBoxSizer348Static = new wxStaticBox(itemScrolledWindow346, wxID_ANY, _T(""));
+ m_StoreSizer = new wxStaticBoxSizer(itemStaticBoxSizer348Static, wxVERTICAL);
+ itemBoxSizer347->Add(m_StoreSizer, 0, wxGROW, 0);
+ wxButton* itemButton349 = new wxButton( itemScrolledWindow346, ID_ADD_STORE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_StoreSizer->Add(itemButton349, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow346->FitInside();
+ itemNotebook16->AddPage(itemScrolledWindow346, _("Stores"));
+
+ wxScrolledWindow* itemScrolledWindow350 = new wxScrolledWindow( itemNotebook16, ID_TILE_PANEL, wxDefaultPosition, wxDefaultSize, wxFULL_REPAINT_ON_RESIZE );
+ itemScrolledWindow350->SetScrollbars(1, 1, 0, 0);
+ wxBoxSizer* itemBoxSizer351 = new wxBoxSizer(wxVERTICAL);
+ itemScrolledWindow350->SetSizer(itemBoxSizer351);
+
+ wxStaticBox* itemStaticBoxSizer352Static = new wxStaticBox(itemScrolledWindow350, wxID_ANY, _T(""));
+ m_TileSizer = new wxStaticBoxSizer(itemStaticBoxSizer352Static, wxVERTICAL);
+ itemBoxSizer351->Add(m_TileSizer, 0, wxGROW, 0);
+ wxButton* itemButton353 = new wxButton( itemScrolledWindow350, ID_ADD_TILE, _("Add"), wxDefaultPosition, wxDefaultSize, 0 );
+ m_TileSizer->Add(itemButton353, 0, wxALIGN_CENTER_HORIZONTAL|wxLEFT|wxRIGHT, 5);
+
+ itemScrolledWindow350->FitInside();
+ itemNotebook16->AddPage(itemScrolledWindow350, _("Tiles"));
// Connect events and objects
m_Typechart->Connect(ID_TYPECHART, wxEVT_CHAR, wxKeyEventHandler(MainFrame::OnChar), NULL, this);
@@ -1667,8 +1708,8 @@ void MainFrame::OnCriticalDomainsClick( wxCommandEvent& event )
void MainFrame::OnAllowNaturesClick( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_NATURES in MainFrame.
- // Before editing this code, remove the block markers.
- event.Skip();
+ // Before editing this code, remove the block markers.
+ event.Skip();
////@end wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_NATURES in MainFrame.
}
@@ -1679,8 +1720,8 @@ void MainFrame::OnAllowNaturesClick( wxCommandEvent& event )
void MainFrame::OnAllowAbilitiesClick( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_ABILITIES in MainFrame.
- // Before editing this code, remove the block markers.
- event.Skip();
+ // Before editing this code, remove the block markers.
+ event.Skip();
////@end wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_ABILITIES in MainFrame.
}
@@ -1688,7 +1729,7 @@ void MainFrame::OnAllowAbilitiesClick( wxCommandEvent& event )
* wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS
*/
-void MainFrame::OnAllowContestsClick( wxCommandEvent& event )
+void MainFrame::OnAllowNaturesClick( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS in MainFrame.
// Before editing this code, remove the block markers.
@@ -2444,7 +2485,7 @@ void MainFrame::OnSuperPcPasswordUpdated( wxCommandEvent& event )
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE
*/
-void MainFrame::OnStruggleSelected( wxCommandEvent& event )
+void MainFrame::OnConfuseSelected( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE in MainFrame.
// Before editing this code, remove the block markers.
@@ -2723,7 +2764,7 @@ void MainFrame::OnSpinctrl1Updated( wxSpinEvent& event )
* wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_COMBOBOX1
*/
-void MainFrame::OnCombobox1Selected( wxCommandEvent& event )
+void MainFrame::OnConfuseSelected( wxCommandEvent& event )
{
////@begin wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_COMBOBOX1 in MainFrame.
// Before editing this code, remove the block markers.
@@ -2911,3 +2952,42 @@ void MainFrame::OnChar( wxKeyEvent& event )
////@end wxEVT_CHAR event handler for ID_TYPECHART in MainFrame.
}
+
+/*!
+ * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ADD_EGG_GROUP
+ */
+
+void MainFrame::OnAddEggGroupClick( wxCommandEvent& event )
+{
+////@begin wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ADD_EGG_GROUP in MainFrame.
+ // Before editing this code, remove the block markers.
+ event.Skip();
+////@end wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ADD_EGG_GROUP in MainFrame.
+}
+
+
+/*!
+ * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE
+ */
+
+void MainFrame::OnStruggleSelected( wxCommandEvent& event )
+{
+////@begin wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE in MainFrame.
+ // Before editing this code, remove the block markers.
+ event.Skip();
+////@end wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE in MainFrame.
+}
+
+
+/*!
+ * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS
+ */
+
+void MainFrame::OnAllowContestsClick( wxCommandEvent& event )
+{
+////@begin wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS in MainFrame.
+ // Before editing this code, remove the block markers.
+ event.Skip();
+////@end wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS in MainFrame.
+}
+
diff --git a/pokemodr/gui/mainWindow.h b/pokemodr/gui/mainWindow.h
index ec215d26..cfa2b17d 100644
--- a/pokemodr/gui/mainWindow.h
+++ b/pokemodr/gui/mainWindow.h
@@ -149,6 +149,12 @@ public:
/// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_CONTESTS
void OnAllowContestsClick( wxCommandEvent& event );
+ /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_ABILITIES
+ void OnAllowAbilitiesClick( wxCommandEvent& event );
+
+ /// wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_ALLOW_NATURES
+ void OnAllowNaturesClick( wxCommandEvent& event );
+
/// wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_DAYCARE
void OnDaycareUpdated( wxSpinEvent& event );
@@ -326,6 +332,9 @@ public:
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_FISHSURFING_SKIN_BROWSE
void OnFishsurfingSkinBrowseClick( wxCommandEvent& event );
+ /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ADD_EGG_GROUP
+ void OnAddEggGroupClick( wxCommandEvent& event );
+
/// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_SUPER_PC_USERNAME
void OnSuperPcUsernameUpdated( wxCommandEvent& event );
@@ -335,8 +344,8 @@ public:
/// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_STRUGGLE
void OnStruggleSelected( wxCommandEvent& event );
- /// wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_ENCOUNTER_CHANCE
- void OnEncounterChanceUpdated( wxSpinEvent& event );
+ /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_CONFUSE
+ void OnConfuseSelected( wxCommandEvent& event );
/// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_ADD_ITEM
void OnAddItemClick( wxCommandEvent& event );
@@ -381,6 +390,8 @@ public:
wxCheckBox* m_RulesHeldItems;
wxCheckBox* m_RulesCriticalDomains;
wxCheckBox* m_RulesContests;
+ wxCheckBox* m_RulesAbilities;
+ wxCheckBox* m_RulesNatures;
wxSpinCtrl* m_RulesDaycare;
wxStaticBoxSizer* m_RulesTimeSizer;
wxSpinCtrl* m_RulesPokemonBox;
@@ -436,7 +447,7 @@ public:
wxTextCtrl* m_SuperPCUname;
wxTextCtrl* m_SuperPCPwd;
wxComboBox* m_MoveStruggle;
- wxSpinCtrl* m_EncounterChance;
+ wxComboBox* m_MoveConfuse;
wxStaticBoxSizer* m_ItemSizer;
wxStaticBoxSizer* m_MapSizer;
wxStaticBoxSizer* m_MoveSizer;
@@ -470,6 +481,8 @@ public:
ID_HELD_ITEMS = 10379,
ID_CRITICAL_DOMAINS = 10006,
ID_ALLOW_CONTESTS = 10397,
+ ID_ALLOW_ABILITIES = 10039,
+ ID_ALLOW_NATURES = 10040,
ID_DAYCARE = 10005,
ID_ADD_TIME = 10363,
ID_DATA_RULES_STORAGE_PAGE = 10402,
@@ -548,11 +561,13 @@ public:
ID_FISING_SKIN_BROWSE = 10585,
ID_FISHSURFING_SKIN = 10587,
ID_FISHSURFING_SKIN_BROWSE = 10588,
+ ID_DATA_EGG_GROUP = 10014,
+ ID_ADD_EGG_GROUP = 10024,
ID_DATA_MISC_PAGE = 10589,
ID_SUPER_PC_USERNAME = 10591,
ID_SUPER_PC_PASSWORD = 10593,
ID_STRUGGLE = 10000,
- ID_ENCOUNTER_CHANCE = 10613,
+ ID_CONFUSE = 10026,
ID_ITEM_PANEL = 10616,
ID_ADD_ITEM = 10413,
ID_MAP_PANEL = 10644,