From 822b5fcaa34b78b9668a58680f9e0d89aa3fd7bd Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Fri, 2 May 2008 08:42:08 +0000 Subject: [FIX] Exceptions no longer used in pokemod [DEL] Exception and BugCatcher are no longer needed [ADD] Object.cpp added git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@119 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemod/MapTrainer.cpp | 138 +++++++++++++++++++++++-------------------------- 1 file changed, 64 insertions(+), 74 deletions(-) (limited to 'pokemod/MapTrainer.cpp') diff --git a/pokemod/MapTrainer.cpp b/pokemod/MapTrainer.cpp index 93ae61cc..e486475a 100644 --- a/pokemod/MapTrainer.cpp +++ b/pokemod/MapTrainer.cpp @@ -24,6 +24,9 @@ #include "MapTrainerTeamMember.h" #include "Pokemod.h" +// Qt includes +#include + MapTrainer::MapTrainer(const MapTrainer& trainer) : Object("MapTrainer", trainer.parent(), trainer.id()) { @@ -61,59 +64,28 @@ MapTrainer::~MapTrainer() clear(); } -bool MapTrainer::validate() const -{ - // TODO: validate -// bool valid = true; -// static_cast(pokemod())->validationMsg(QString("------Trainer \"%1\" with id %2---").arg(m_name).arg(id()), Pokemod::V_Msg); -// if (m_name == "") -// { -// static_cast(pokemod())->validationMsg("Name is not defined"); -// valid = false; -// } -// if (static_cast(pokemod())->trainerIndex(m_trainerClass) == INT_MAX) -// { -// static_cast(pokemod())->validationMsg("Invalid trainer class"); -// valid = false; -// } -// if (Pokemod::D_End_None <= m_direction) -// { -// static_cast(pokemod())->validationMsg("Invalid direction"); -// valid = false; -// } -// if (!m_numFight || (static_cast(pokemod())->rules()->maxFight() < m_numFight)) -// { -// static_cast(pokemod())->validationMsg("Invalid number of Pokémon for a fight"); -// valid = false; -// } -// if (static_cast(pokemod())->dialogIndex(m_dialog) == INT_MAX) -// { -// static_cast(pokemod())->validationMsg("Invalid dialog"); -// valid = false; -// } -// if (teamMemberCount() <= m_leadTeamMember) -// { -// static_cast(pokemod())->validationMsg("Invalid lead member"); -// valid = false; -// } -// if (teamMemberCount()) -// { -// QMap idChecker; -// foreach (MapTrainerTeamMember* teamMember, m_teamMember) -// { -// if (!teamMember->isValid()) -// valid = false; -// if (idChecker[teamMember->id()]) -// static_cast(pokemod())->validationMsg(QString("Duplicate team member with id %1").arg(teamMember->id())); -// idChecker[teamMember->id()] = true; -// } -// } -// else -// { -// static_cast(pokemod())->validationMsg("There are no team members"); -// valid = false; -// } -// return valid; +void MapTrainer::validate(QTextStream& stream) +{ + TEST_SETUP(); + if (m_name.isEmpty()) + error(stream, "Name is empty"); + TEST(setTrainerClass, trainerClass); + TEST(setCoordinate, coordinate); + TEST(setDirection, direction); + TEST(setNumFight, numFight); + TEST(setDialog, dialog); + TEST(setLeadTeamMember, leadTeamMember); + if (!teamMemberCount()) + error(stream, "There are no team members"); + QSet idChecker; + foreach (MapTrainerTeamMember* teamMember, m_teamMember) + { + if (!teamMember->isValid(stream)) + setValid(false); + if (idChecker.contains(teamMember->id())) + subclassError(stream, "team member", teamMember->id()); + idChecker.insert(teamMember->id()); + } } void MapTrainer::load(const QDomElement& xml, int id) @@ -151,17 +123,23 @@ void MapTrainer::setName(const QString& name) m_name = name; } -void MapTrainer::setTrainerClass(const int trainerClass) throw(BoundsException) +void MapTrainer::setTrainerClass(const int trainerClass) { if (static_cast(pokemod())->trainerIndex(trainerClass) == INT_MAX) - error("trainerClass"); + { + boundsError("trainerClass"); + return; + } m_trainerClass = trainerClass; } -void MapTrainer::setCoordinate(const Point& coordinate) throw(BoundsException) +void MapTrainer::setCoordinate(const Point& coordinate) { if ((static_cast(parent())->width() <= coordinate.x()) || (static_cast(parent())->height() <= coordinate.y())) - error("coordinate"); + { + boundsError("coordinate"); + return; + } m_coordinate = coordinate; } @@ -170,17 +148,23 @@ void MapTrainer::setSight(const int sight) m_sight = sight; } -void MapTrainer::setDirection(const int direction) throw(BoundsException) +void MapTrainer::setDirection(const int direction) { if (Pokemod::D_End_None <= direction) - error("direction"); + { + boundsError("direction"); + return; + } m_direction = direction; } -void MapTrainer::setNumFight(const int numFight) throw(BoundsException) +void MapTrainer::setNumFight(const int numFight) { if (!numFight || (static_cast(pokemod())->rules()->maxFight() < numFight)) - error("numFight"); + { + boundsError("numFight"); + return; + } m_numFight = numFight; } @@ -189,17 +173,23 @@ void MapTrainer::setAppearFlag(const Flag& appearFlag) m_appearFlag = appearFlag; } -void MapTrainer::setDialog(const int dialog) throw(BoundsException) +void MapTrainer::setDialog(const int dialog) { if (static_cast(pokemod())->dialogIndex(dialog) == INT_MAX) - error("dialog"); + { + boundsError("dialog"); + return; + } m_dialog = dialog; } -void MapTrainer::setLeadTeamMember(const int leadMember) throw(BoundsException) +void MapTrainer::setLeadTeamMember(const int leadMember) { if (teamMemberCount() <= leadMember) - error("leadTeamMember"); + { + boundsError("leadTeamMember"); + return; + } m_leadTeamMember = leadMember; } @@ -248,26 +238,26 @@ int MapTrainer::leadTeamMember() const return m_leadTeamMember; } -const MapTrainerTeamMember* MapTrainer::teamMember(const int index) const throw(IndexException) +const MapTrainerTeamMember* MapTrainer::teamMember(const int index) const { if (teamMemberCount() <= index) - warning("team member"); + return NULL; return m_teamMember.at(index); } -MapTrainerTeamMember* MapTrainer::teamMember(const int index) throw(IndexException) +MapTrainerTeamMember* MapTrainer::teamMember(const int index) { if (teamMemberCount() <= index) - error("team member"); + return NULL; return m_teamMember[index]; } -const MapTrainerTeamMember* MapTrainer::teamMemberById(const int id) const throw(IndexException) +const MapTrainerTeamMember* MapTrainer::teamMemberById(const int id) const { return teamMember(teamMemberIndex(id)); } -MapTrainerTeamMember* MapTrainer::teamMemberById(const int id) throw(IndexException) +MapTrainerTeamMember* MapTrainer::teamMemberById(const int id) { return teamMember(teamMemberIndex(id)); } @@ -308,15 +298,15 @@ MapTrainerTeamMember* MapTrainer::newTeamMember(MapTrainerTeamMember* teamMember return teamMember; } -void MapTrainer::deleteTeamMember(const int index) throw(IndexException) +void MapTrainer::deleteTeamMember(const int index) { if (teamMemberCount() <= index) - error("team member"); + return; delete m_teamMember[index]; m_teamMember.removeAt(index); } -void MapTrainer::deleteTeamMemberById(const int id) throw(IndexException) +void MapTrainer::deleteTeamMemberById(const int id) { deleteTeamMember(teamMemberIndex(id)); } -- cgit