diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2007-07-21 01:39:22 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2007-07-21 01:39:22 +0000 |
| commit | e94d9893b8753e72adb92b2c5eb203830ddf641c (patch) | |
| tree | fe283d6ede1cfe1a1613742811fb5b34fb8db68c /pokemod/Dialog.cpp | |
| parent | 65cc463f1d91fe99acf1c4dd9bce7e0038593022 (diff) | |
Moved to GPLv3 and Qt4, Changed String -> QString, other minor fixes
git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@23 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokemod/Dialog.cpp')
| -rw-r--r-- | pokemod/Dialog.cpp | 1360 |
1 files changed, 580 insertions, 780 deletions
diff --git a/pokemod/Dialog.cpp b/pokemod/Dialog.cpp index 6f7210d9..41ed2dea 100644 --- a/pokemod/Dialog.cpp +++ b/pokemod/Dialog.cpp @@ -6,19 +6,18 @@ // Created: Wed Feb 28 21:05:56 2007
// Copyright: ©2007 Ben Boeckel and Nerdy Productions
// Licence:
-// This program is free software; you can redistribute it and/or modify
+// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; either version 2 of the License, or
+// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
-//
+//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
-//
+//
// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+// with this program. If not, see <http://www.gnu.org/licenses/>.
/////////////////////////////////////////////////////////////////////////////
#include "Dialog.h"
@@ -47,774 +46,575 @@ PokeGen::PokeMod::Dialog::~Dialog() void PokeGen::PokeMod::Dialog::Validate()
{
- LogValidateStart("Dialog", id); - if (dialog == "") - { - LogVarNotSet("Dialog", id, "dialog"); - isValid = false; - } - if (dialog.Count('%') % 2) - { - Log::Write(String("Dialog Validation: Command delimiter mismatch in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - else - { - unsigned curCmd = DC_END; - unsigned numArgs = 0; - for (unsigned i = 0; i < dialog.length(); ++i) - { - switch (dialog[i]) - { - case '%': - switch (curCmd) - { - case DC_FLIP_FLAG ... DC_EXIT: - if (numArgs != DialogCommandNumArgs[curCmd]) - { - Log::Write(String("Dialog Validation: Invalid number of arguments (%u) for %s (%u wanted) in %u", numArgs, DialogCommandStr[curCmd], DialogCommandNumArgs[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case DC_MENU: - if (!(numArgs % 2)) - { - Log::Write(String("Dialog Validation: Argument mismatch for Menu in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case DC_END: - String curCmdStr; - for (; (dialog[i] != '%') && (dialog[i] != '#'); ++i) - curCmdStr.append(1, dialog[i]); - if (((curCmd = FindIn(DC_END, curCmdStr, DialogCommandAbbrStr)) == DC_END)) - { - if (curCmdStr != "") - { - Log::Write(String("Dialog Validation: Invalid command \"%s\" in %u", curCmdStr.c_str(), id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - curCmd = DC_END; - } - numArgs = 0; - } - break; - case '#': - if (curCmd != DC_END) - { - String arg; - unsigned tempU; - unsigned long tempUL; - Map *map = NULL; - for (; (dialog[i] != '%') && (dialog[i] != '#'); ++i) - arg.append(1, dialog[i]); - ++numArgs; - switch (curCmd) - { - case DC_FLIP_FLAG: - case DC_SET_FLAG: - case DC_UNSET_FLAG: - case DC_RANDOMIZE_FLAG: - if (numArgs == 1) - { - if (!arg.Convert(tempUL)) - { - Log::Write(String("Dialog Validation: Bad flag in \"%s\" on %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TEST_FLAG: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Test Flag\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!arg.Convert(tempUL)) - { - Log::Write(String("Dialog Validation: Bad flag in \"Test Flag\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - case 4: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Test Flag\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_DIALOG: - if (numArgs == 1) - { - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Dialog\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if (numArgs == 2) - { - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Dialog\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_YES_NO: - case DC_DELETE_MOVE: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - case 3: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"%s\" in %u", numArgs, DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_ITEM_SHOP: - if (numArgs == 1) - { - if (!(arg.Convert(tempU) ? pokemod->GetStore(tempU) : pokemod->GetStore(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Test Flag\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_GIVE_ITEM: - case DC_TAKE_ITEM: - case DC_CHECK_ITEM: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!(arg.Convert(tempU) ? pokemod->GetItem(tempU) : pokemod->GetItem(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - case 4: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"%s\" in %u", numArgs, DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_COIN_LIST: - if (numArgs == 1) - { - if (!(arg.Convert(tempU) ? pokemod->GetCoinList(tempU) : pokemod->GetCoinList(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Coin List\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TEACH_MOVE: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Teach Move\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!(arg.Convert(tempU) ? pokemod->GetMove(tempU) : pokemod->GetMove(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Teach Move\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - case 4: - case 5: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Teach Move\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_CHECK_MOVE: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Check Move\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if ((arg != "Lead") && (arg != "All") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Check Move\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if (!(arg.Convert(tempU) ? pokemod->GetMove(tempU) : pokemod->GetMove(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Check Move\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 4: - case 5: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Check Move\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_GIVE_POKEMON: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!(arg.Convert(tempU) ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if ((arg != "false") && (arg != "true") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 4: - if (arg.Convert(tempUL)) - { - if (pokemod->GetMaxLevel() < tempUL) - { - Log::Write(String("Dialog Validation: Higher level than allowed in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #4 in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 5: - if (!arg.Convert(tempUL)) - { - Log::Write(String("Dialog Validation: Invalid argument #5 in \"Give Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 6: - case 7: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Give Pokémon\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TAKE_POKEMON: - case DC_VIEW_POKEMON: - case DC_CHECK_SPECIES: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!(arg.Convert(tempU) ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - case 4: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"%s\" in %u", numArgs, DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_SHOW_POKEMON: - if (numArgs == 1) - { - if (!(arg.Convert(tempU) ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Show Pokémon\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_GIVE_MONEY: - if (numArgs == 1) - { - if (arg.Convert(tempUL)) - { - if (pokemod->GetMaxMoney() < tempUL) - { - Log::Write(String("Dialog Validation: More money given than can be held in \"Give Money\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Give Money\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TAKE_MONEY: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Take Money\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (arg.Convert(tempUL)) - { - if (pokemod->GetMaxMoney() < tempUL) - { - Log::Write(String("Dialog Validation: More money taken than can be held in \"Take Money\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Take Money\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - case 4: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Take Money\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_MOVE_EFFECT: - case DC_CHECK_DIRECTION: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!(map = (arg.Convert(tempU) ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg)))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if (map) - { - if (!(arg.Convert(tempU) ? map->GetMapEffect(tempU) : map->GetMapEffect(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if ((arg != "Player") && (arg != "-1")) - Log::Write(String("Dialog Validation: Unable to validate argument #3 in \"%s\" in %u", id), PM_DEBUG_ERROR); - break; - case 4: - if ((arg != "Up") && (arg != "Down") && (arg != "Left") && (arg != "Right") && ((arg != "Random") || (curCmd == DC_CHECK_DIRECTION)) && (arg != "0") && (arg != "1") && (arg != "2") && (arg != "3") && ((arg != "4") || (curCmd == DC_CHECK_DIRECTION))) - { - Log::Write(String("Dialog Validation: Invalid argument #4 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 5: - case 6: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"%s\" in %u", numArgs, DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TURN_EFFECT: - switch (numArgs) - { - case 1: - if (!(map = (arg.Convert(tempU) ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg)))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Turn Effect\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (map) - { - if (!(arg.Convert(tempU) ? map->GetMapEffect(tempU) : map->GetMapEffect(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Turn Effect\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if ((arg != "Player") && (arg != "-1")) - Log::Write(String("Dialog Validation: Unable to validate argument #2 in \"Turn Effect\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - break; - case 4: - if ((arg != "Up") && (arg != "Down") && (arg != "Left") && (arg != "Right") && (arg != "Random") && (arg != "0") && (arg != "1") && (arg != "2") && (arg != "3") && (arg != "4")) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Turn Effect\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_CHECK_ROSTER: - case DC_CHECK_LEVELS: - case DC_CHECK_MONEY: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if ((arg != "<") && (arg != ">") && (arg != "=")) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if (arg.Convert(tempUL)) - { - if (((curCmd == DC_CHECK_ROSTER) ? pokemod->GetMaxParty() : ((curCmd == DC_CHECK_LEVELS) ? pokemod->GetMaxLevel() : pokemod->GetMaxMoney())) < tempUL) - { - Log::Write(String("Dialog Validation: More %s than can be carried in \"%s\" in %u", (curCmd == DC_CHECK_ROSTER) ? "party members" : ((curCmd == DC_CHECK_LEVELS) ? "level" : "money"), DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 4: - case 5: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"%s\" in %u", numArgs, DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_CHECK_HELD_ITEMS: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Check Held Items\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - case 3: - case 4: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Check Held Items\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TRADE: - switch (numArgs) - { - case 1: - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Trade\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - case 3: - if (!(arg.Convert(tempU) ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Trade\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - case 4: - if (!arg.Convert(tempUL)) - { - Log::Write(String("Dialog Validation: Invalid argument #4 in \"Trade\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 5: - case 6: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Trade\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_DAYCARE: - if (numArgs == 1) - { - if (!arg.Convert(tempUL)) - { - Log::Write(String("Dialog Validation: Invalid argument #4 in \"Daycare\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_BATTLE: - if (numArgs == 1) - { - if (!(map = (arg.Convert(tempU) ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg)))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Battle\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if (numArgs == 2) - { - if (map) - { - if (!(arg.Convert(tempU) ? map->GetMapTrainer(tempU) : map->GetMapTrainer(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Battle\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - Log::Write(String("Dialog Validation: Unable to validate argument #2 in \"Battle\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - } - break; - case DC_BADGE: - if (numArgs == 1) - { - if (!(arg.Convert(tempU) ? pokemod->GetBadge(tempU) : pokemod->GetBadge(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Badge\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_WARP: - if (numArgs == 1) - { - if (!(map = (arg.Convert(tempU) ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg)))) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Warp\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if (numArgs == 2) - { - if (map) - { - if (!(arg.Convert(tempU) ? map->GetMapWarp(tempU) : map->GetMapWarp(arg))) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Warp\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - Log::Write(String("Dialog Validation: Unable to validate argument #2 in \"Warp\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - } - break; - case DC_NAME: - case DC_MAP_SIGN: - if (numArgs == 1) - { - if (arg == "") - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_MUSIC: - case DC_SOUND_EFFECT: - if (numArgs == 1) - { - if (!Path(pokemod->GetPath() + "sound/" + arg).DoesExist()) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"%s\" in %u", DialogCommandStr[curCmd], id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_TIMER: - switch (numArgs) - { - case 1: - if ((arg != "Time") && (arg != "Step") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Timer\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!arg.Convert(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Timer\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if (!arg.Convert(tempU) || !pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Timer\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_WILD_SCOPE: - if (numArgs == 1) - { - if (!arg.Convert(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Wild Scope\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_SAFARI: - switch (numArgs) - { - case 1: - if (const Item *item = (arg.Convert(tempU) ? pokemod->GetItem(tempU) : pokemod->GetItem(arg))) - { - unsigned i = 0; - unsigned j = 0; - bool temp = false; - while ((i < item->GetItemEffectCount()) || !temp) - { - if (const ItemEffect *e = item->GetItemEffect(j++)) - { - ++i; - if (e->GetEffect() == IE_BALL) - temp = true; - } - } - if (!temp) - { - Log::Write(String("Dialog Validation: Item in argument #1 in \"Safari\" in %u isn\'t a PokéBall", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Safari\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 2: - if (!arg.Convert(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #2 in \"Safari\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - break; - case 3: - if (!arg.Convert(tempU) || (pokemod->GetMaxParty() < tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #3 in \"Safari\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - break; - case DC_MENU: - if (numArgs == 1) - { - if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1")) - { - Log::Write(String("Dialog Validation: Invalid argument #1 in \"Menu\" in %u", id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if (numArgs % 2) - { - if (arg.Convert(tempU)) - { - if (!pokemod->GetDialog(tempU)) - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Menu\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Menu\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - else if (arg == "") - { - Log::Write(String("Dialog Validation: Invalid argument #%u in \"Menu\" in %u", numArgs, id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION); - isValid = false; - } - } - } - } - } + LogValidateStart("Dialog", id);
+ if (dialog == "")
+ {
+ LogVarNotSet("Dialog", id, "dialog");
+ isValid = false;
+ }
+ if (dialog.count('%') % 2)
+ {
+ Log::Write(QString("Dialog Validation: Command delimiter mismatch in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ else
+ {
+ unsigned curCmd = DC_END;
+ unsigned numArgs = 0;
+ for (long i = 0; i < dialog.length(); ++i)
+ {
+ switch (dialog.at(i).toAscii())
+ {
+ case '%':
+ switch (curCmd)
+ {
+ case DC_FLIP_FLAG ... DC_EXIT:
+ if (numArgs != DialogCommandNumArgs[curCmd])
+ {
+ Log::Write(QString("Dialog Validation: Invalid number of arguments (%1) for %2 (%3 wanted) in %4").arg(numArgs).arg(DialogCommandStr[curCmd]).arg(DialogCommandNumArgs[curCmd]).arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ break;
+ case DC_MENU:
+ if (!(numArgs % 2))
+ {
+ Log::Write(QString("Dialog Validation: Argument mismatch for Menu in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ break;
+ case DC_END:
+ QString curCmdStr;
+ for (; (dialog.at(i) != '%') && (dialog.at(i) != '#'); ++i)
+ curCmdStr += dialog.at(i);
+ if (((curCmd = FindIn(DC_END, curCmdStr, DialogCommandAbbrStr)) == DC_END))
+ {
+ if (curCmdStr != "")
+ {
+ Log::Write(QString("Dialog Validation: Invalid command \"%1\" in %2").arg(curCmdStr).arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ curCmd = DC_END;
+ }
+ numArgs = 0;
+ }
+ break;
+ case '#':
+ if (curCmd != DC_END)
+ {
+ QString arg;
+ for (; (dialog.at(i) != '%') && (dialog.at(i) != '#'); ++i)
+ arg += dialog.at(i);
+ bool okU;
+ bool okUL;
+ unsigned tempU = arg.toUInt(&okU);
+ unsigned long tempUL = arg.toULong(&okUL);
+ unsigned invError = 0;
+ Map *map = NULL;
+ ++numArgs;
+ switch (curCmd)
+ {
+ case DC_FLIP_FLAG:
+ case DC_SET_FLAG:
+ case DC_UNSET_FLAG:
+ case DC_RANDOMIZE_FLAG:
+ if (numArgs == 1)
+ {
+ if (!okUL)
+ {
+ Log::Write(QString("Dialog Validation: Bad flag in \"%1\" on %2").arg(DialogCommandStr[curCmd]).arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ break;
+ case DC_TEST_FLAG:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!okUL)
+ {
+ Log::Write(QString("Dialog Validation: Bad flag in \"Test Flag\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ break;
+ case 3:
+ case 4:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_DIALOG:
+ if (numArgs == 1)
+ {
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ }
+ else if (numArgs == 2)
+ {
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = 2;
+ }
+ break;
+ case DC_YES_NO:
+ case DC_DELETE_MOVE:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ case 3:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_ITEM_SHOP:
+ if (numArgs == 1)
+ {
+ if (!(okU ? pokemod->GetStore(tempU) : pokemod->GetStore(arg)))
+ invError = 1;
+ }
+ break;
+ case DC_GIVE_ITEM:
+ case DC_TAKE_ITEM:
+ case DC_CHECK_ITEM:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!(okU ? pokemod->GetItem(tempU) : pokemod->GetItem(arg)))
+ invError = 2;
+ break;
+ case 3:
+ case 4:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_COIN_LIST:
+ if (numArgs == 1)
+ {
+ if (!(okU ? pokemod->GetCoinList(tempU) : pokemod->GetCoinList(arg)))
+ invError = 1;
+ }
+ break;
+ case DC_TEACH_MOVE:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!(okU ? pokemod->GetMove(tempU) : pokemod->GetMove(arg)))
+ invError = 2;
+ break;
+ case 3:
+ case 4:
+ case 5:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_CHECK_MOVE:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if ((arg != "Lead") && (arg != "All") && (arg != "0") && (arg != "1"))
+ invError = 2;
+ break;
+ case 3:
+ if (!(okU ? pokemod->GetMove(tempU) : pokemod->GetMove(arg)))
+ invError = 3;
+ break;
+ case 4:
+ case 5:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_GIVE_POKEMON:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!(okU ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg)))
+ invError = 2;
+ break;
+ case 3:
+ if ((arg != "false") && (arg != "true") && (arg != "0") && (arg != "1"))
+ invError = 3;
+ break;
+ case 4:
+ if (okUL)
+ {
+ if (pokemod->GetMaxLevel() < tempUL)
+ {
+ Log::Write(QString("Dialog Validation: Higher level than allowed in \"Give Pok�mon\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ else
+ invError = 4;
+ break;
+ case 5:
+ if (!okUL)
+ invError = 5;
+ break;
+ case 6:
+ case 7:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_TAKE_POKEMON:
+ case DC_VIEW_POKEMON:
+ case DC_CHECK_SPECIES:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!(okU ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg)))
+ invError = 2;
+ break;
+ case 3:
+ case 4:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_SHOW_POKEMON:
+ if (numArgs == 1)
+ {
+ if (!(okU ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg)))
+ invError = 1;
+ }
+ break;
+ case DC_GIVE_MONEY:
+ if (numArgs == 1)
+ {
+ if (okUL)
+ {
+ if (pokemod->GetMaxMoney() < tempUL)
+ {
+ Log::Write(QString("Dialog Validation: More money given than can be held in \"Give Money\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ else
+ invError = 1;
+ }
+ break;
+ case DC_TAKE_MONEY:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (okUL)
+ {
+ if (pokemod->GetMaxMoney() < tempUL)
+ {
+ Log::Write(QString("Dialog Validation: More money taken than can be held in \"Take Money\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ else
+ invError = 2;
+ break;
+ case 3:
+ case 4:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_MOVE_EFFECT:
+ case DC_CHECK_DIRECTION:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!(map = (okU ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg))))
+ invError = 2;
+ break;
+ case 3:
+ if (map)
+ {
+ if (!(okU ? map->GetMapEffect(tempU) : map->GetMapEffect(arg)))
+ invError = 3;
+ }
+ else if ((arg != "Player") && (arg != "-1"))
+ Log::Write(QString("Dialog Validation: Unable to validate argument #3 in \"%1\" in %2").arg(DialogCommandStr[curCmd]).arg(id), PM_DEBUG_ERROR);
+ break;
+ case 4:
+ if ((arg != "Up") && (arg != "Down") && (arg != "Left") && (arg != "Right") && ((arg != "Random") || (curCmd == DC_CHECK_DIRECTION)) && (arg != "0") && (arg != "1") && (arg != "2") && (arg != "3") && ((arg != "4") || (curCmd == DC_CHECK_DIRECTION)))
+ invError = 4;
+ break;
+ case 5:
+ case 6:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_TURN_EFFECT:
+ switch (numArgs)
+ {
+ case 1:
+ if (!(map = (okU ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg))))
+ invError = 1;
+ break;
+ case 2:
+ if (map)
+ {
+ if (!(okU ? map->GetMapEffect(tempU) : map->GetMapEffect(arg)))
+ invError = 2;
+ }
+ else if ((arg != "Player") && (arg != "-1"))
+ Log::Write(QString("Dialog Validation: Unable to validate argument #2 in \"Turn Effect\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ break;
+ case 3:
+ if ((arg != "Up") && (arg != "Down") && (arg != "Left") && (arg != "Right") && (arg != "Random") && (arg != "0") && (arg != "1") && (arg != "2") && (arg != "3") && (arg != "4"))
+ invError = 3;
+ }
+ break;
+ case DC_CHECK_ROSTER:
+ case DC_CHECK_LEVELS:
+ case DC_CHECK_MONEY:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if ((arg != "<") && (arg != ">") && (arg != "="))
+ invError = 2;
+ break;
+ case 3:
+ if (okUL)
+ {
+ if (((curCmd == DC_CHECK_ROSTER) ? pokemod->GetMaxParty() : ((curCmd == DC_CHECK_LEVELS) ? pokemod->GetMaxLevel() : pokemod->GetMaxMoney())) < tempUL)
+ {
+ Log::Write(QString("Dialog Validation: More %1 than can be carried in \"%2\" in %3").arg((curCmd == DC_CHECK_ROSTER) ? "party members" : ((curCmd == DC_CHECK_LEVELS) ? "level" : "money")).arg(DialogCommandStr[curCmd]).arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ else
+ invError = 3;
+ break;
+ case 4:
+ case 5:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_CHECK_HELD_ITEMS:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ case 3:
+ case 4:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_TRADE:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ case 3:
+ if (!(okU ? pokemod->GetPokemon(tempU) : pokemod->GetPokemon(arg)))
+ invError = numArgs;
+ case 4:
+ if (!okUL)
+ invError = 4;
+ break;
+ case 5:
+ case 6:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ break;
+ case DC_DAYCARE:
+ if (numArgs == 1)
+ {
+ if (!okUL)
+ invError = 1;
+ }
+ break;
+ case DC_BATTLE:
+ if (numArgs == 1)
+ {
+ if (!(map = (okU ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg))))
+ invError = 1;
+ }
+ else if (numArgs == 2)
+ {
+ if (map)
+ {
+ if (!(okU ? map->GetMapTrainer(tempU) : map->GetMapTrainer(arg)))
+ invError = 2;
+ }
+ else
+ Log::Write(QString("Dialog Validation: Unable to validate argument #2 in \"Battle\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ }
+ break;
+ case DC_BADGE:
+ if (numArgs == 1)
+ {
+ if (!(okU ? pokemod->GetBadge(tempU) : pokemod->GetBadge(arg)))
+ invError = 1;
+ }
+ break;
+ case DC_WARP:
+ if (numArgs == 1)
+ {
+ if (!(map = (okU ? (Map *)pokemod->GetMap(tempU) : (Map *)pokemod->GetMap(arg))))
+ invError = 1;
+ }
+ else if (numArgs == 2)
+ {
+ if (map)
+ {
+ if (!(okU ? map->GetMapWarp(tempU) : map->GetMapWarp(arg)))
+ invError = 2;
+ }
+ else
+ Log::Write(QString("Dialog Validation: Unable to validate argument #2 in \"Warp\" in %1").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ }
+ break;
+ case DC_NAME:
+ case DC_MAP_SIGN:
+ if (numArgs == 1)
+ {
+ if (arg == "")
+ invError = 1;
+ }
+ break;
+ case DC_MUSIC:
+ case DC_SOUND_EFFECT:
+ if (numArgs == 1)
+ {
+ if (!Path(pokemod->GetPath() + "sound/" + arg).DoesExist())
+ invError = 1;
+ }
+ break;
+ case DC_TIMER:
+ switch (numArgs)
+ {
+ case 1:
+ if ((arg != "Time") && (arg != "Step") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ break;
+ case 2:
+ if (!okU)
+ invError = 2;
+ break;
+ case 3:
+ if (!okU || !pokemod->GetDialog(tempU))
+ invError = 3;
+ }
+ break;
+ case DC_WILD_SCOPE:
+ if (numArgs == 1)
+ {
+ if (!okU)
+ invError = 1;
+ }
+ break;
+ case DC_SAFARI:
+ switch (numArgs)
+ {
+ case 1:
+ if (const Item *item = (okU ? pokemod->GetItem(tempU) : pokemod->GetItem(arg)))
+ {
+ unsigned i = 0;
+ unsigned j = 0;
+ bool temp = false;
+ while ((i < item->GetItemEffectCount()) || !temp)
+ {
+ if (const ItemEffect *e = item->GetItemEffect(j++))
+ {
+ ++i;
+ if (e->GetEffect() == IE_BALL)
+ temp = true;
+ }
+ }
+ if (!temp)
+ {
+ Log::Write(QString("Dialog Validation: Item in argument #1 in \"Safari\" in %1 isn\'t a Pok�Ball").arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ else
+ invError = 1;
+ break;
+ case 2:
+ if (!okU)
+ invError = 2;
+ break;
+ case 3:
+ if (!okU || (pokemod->GetMaxParty() < tempU))
+ invError = 3;
+ }
+ break;
+ case DC_MENU:
+ if (numArgs == 1)
+ {
+ if ((arg != "Call") && (arg != "Goto") && (arg != "0") && (arg != "1"))
+ invError = 1;
+ }
+ else if (numArgs % 2)
+ {
+ if (okU)
+ {
+ if (!pokemod->GetDialog(tempU))
+ invError = numArgs;
+ }
+ else
+ invError = numArgs;
+ }
+ else if (arg == "")
+ invError = numArgs;
+ }
+ if (invError)
+ {
+ Log::Write(QString("Dialog Validation: Invalid argument %1 in \"%2\" in %3").arg(invError).arg(DialogCommandStr[curCmd]).arg(id), PM_DEBUG_ERROR | PM_DEBUG_VALIDATION);
+ isValid = false;
+ }
+ }
+ }
+ }
}
LogValidateOver("Dialog", id, isValid);
}
@@ -834,7 +634,7 @@ void PokeGen::PokeMod::Dialog::ImportIni(Ini &ini, const unsigned _id) LogImportOver("Dialog", id);
}
-void PokeGen::PokeMod::Dialog::ExportIni(std::ofstream &fout) const
+void PokeGen::PokeMod::Dialog::ExportIni(QFile &fout) const
{
LogExportStart("Dialog", id);
Ini exDialog("dialog");
@@ -844,24 +644,24 @@ void PokeGen::PokeMod::Dialog::ExportIni(std::ofstream &fout) const LogExportOver("Dialog", id);
}
-void PokeGen::PokeMod::Dialog::SetDialog(const String &d)
+void PokeGen::PokeMod::Dialog::SetDialog(const QString &d)
{
LogSetVar("Dialog", id, "dialog", d);
dialog = d;
}
-PokeGen::PokeMod::String PokeGen::PokeMod::Dialog::GetDialog() const
+QString PokeGen::PokeMod::Dialog::GetDialog() const
{
LogFetchVar("Dialog", id, "dialog", dialog);
return dialog;
}
-void PokeGen::PokeMod::Dialog::InsertDialogCommand(const String &cmd, const unsigned pos)
+void PokeGen::PokeMod::Dialog::InsertDialogCommand(const QString &cmd, const long pos)
{
- Log::Write(String("Dialog: Inserting dialog command %s into %u at %u", cmd.c_str(), id, pos), PM_DEBUG_INFO);
+ Log::Write(QString("Dialog: Inserting dialog command %1 into %2 at %3").arg(cmd).arg(id).arg(pos), PM_DEBUG_INFO);
if (dialog.length() < pos)
{
- Log::Write(String("Dialog: Position out-of-range in %u", id), PM_DEBUG_ERROR);
+ Log::Write(QString("Dialog: Position out-of-range in %1").arg(id), PM_DEBUG_ERROR);
return;
}
dialog.insert(pos, cmd);
|
