summaryrefslogtreecommitdiffstats
path: root/pokemod/MapTrainer.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-05-02 08:42:08 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-05-02 08:42:08 +0000
commit822b5fcaa34b78b9668a58680f9e0d89aa3fd7bd (patch)
tree40dc605213eff20f62b16e5f54e5e5e03d744d63 /pokemod/MapTrainer.cpp
parent696414f1dc8bc419427efb6c1abe1bbae0a68a56 (diff)
downloadsigen-822b5fcaa34b78b9668a58680f9e0d89aa3fd7bd.tar.gz
sigen-822b5fcaa34b78b9668a58680f9e0d89aa3fd7bd.tar.xz
sigen-822b5fcaa34b78b9668a58680f9e0d89aa3fd7bd.zip
[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
Diffstat (limited to 'pokemod/MapTrainer.cpp')
-rw-r--r--pokemod/MapTrainer.cpp138
1 files changed, 64 insertions, 74 deletions
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 <QSet>
+
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<const Pokemod*>(pokemod())->validationMsg(QString("------Trainer \"%1\" with id %2---").arg(m_name).arg(id()), Pokemod::V_Msg);
-// if (m_name == "")
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Name is not defined");
-// valid = false;
-// }
-// if (static_cast<const Pokemod*>(pokemod())->trainerIndex(m_trainerClass) == INT_MAX)
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Invalid trainer class");
-// valid = false;
-// }
-// if (Pokemod::D_End_None <= m_direction)
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Invalid direction");
-// valid = false;
-// }
-// if (!m_numFight || (static_cast<const Pokemod*>(pokemod())->rules()->maxFight() < m_numFight))
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Invalid number of Pokémon for a fight");
-// valid = false;
-// }
-// if (static_cast<const Pokemod*>(pokemod())->dialogIndex(m_dialog) == INT_MAX)
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Invalid dialog");
-// valid = false;
-// }
-// if (teamMemberCount() <= m_leadTeamMember)
-// {
-// static_cast<const Pokemod*>(pokemod())->validationMsg("Invalid lead member");
-// valid = false;
-// }
-// if (teamMemberCount())
-// {
-// QMap<int, bool> idChecker;
-// foreach (MapTrainerTeamMember* teamMember, m_teamMember)
-// {
-// if (!teamMember->isValid())
-// valid = false;
-// if (idChecker[teamMember->id()])
-// static_cast<const Pokemod*>(pokemod())->validationMsg(QString("Duplicate team member with id %1").arg(teamMember->id()));
-// idChecker[teamMember->id()] = true;
-// }
-// }
-// else
-// {
-// static_cast<const Pokemod*>(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<int> 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<const Pokemod*>(pokemod())->trainerIndex(trainerClass) == INT_MAX)
- error<BoundsException>("trainerClass");
+ {
+ boundsError("trainerClass");
+ return;
+ }
m_trainerClass = trainerClass;
}
-void MapTrainer::setCoordinate(const Point& coordinate) throw(BoundsException)
+void MapTrainer::setCoordinate(const Point& coordinate)
{
if ((static_cast<const Map*>(parent())->width() <= coordinate.x()) || (static_cast<const Map*>(parent())->height() <= coordinate.y()))
- error<BoundsException>("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<BoundsException>("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<const Pokemod*>(pokemod())->rules()->maxFight() < numFight))
- error<BoundsException>("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<const Pokemod*>(pokemod())->dialogIndex(dialog) == INT_MAX)
- error<BoundsException>("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<BoundsException>("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<IndexException>("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<IndexException>("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<IndexException>("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));
}