summaryrefslogtreecommitdiffstats
path: root/pokemod/MapTrainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemod/MapTrainer.cpp')
-rw-r--r--pokemod/MapTrainer.cpp142
1 files changed, 73 insertions, 69 deletions
diff --git a/pokemod/MapTrainer.cpp b/pokemod/MapTrainer.cpp
index 217b8d2d..ab5abd21 100644
--- a/pokemod/MapTrainer.cpp
+++ b/pokemod/MapTrainer.cpp
@@ -15,25 +15,26 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-// Qt includes
-#include <QMap>
+// Header include
+#include "MapTrainer.h"
// Pokemod includes
-#include "Pokemod.h"
#include "Dialog.h"
+#include "Map.h"
#include "MapTrainerTeamMember.h"
+#include "Pokemod.h"
-// Header include
-#include "MapTrainer.h"
+// Qt includes
+#include <QMap>
MapTrainer::MapTrainer(const MapTrainer& trainer) :
- Object("MapTrainer", trainer.pokemod(), trainer.id())
+ Object("MapTrainer", trainer.parent(), trainer.id())
{
*this = trainer;
}
-MapTrainer::MapTrainer(const Pokemod* pokemod, const int id) :
- Object("MapTrainer", pokemod, id),
+MapTrainer::MapTrainer(const Object* parent, const int id) :
+ Object("MapTrainer", parent, id),
m_name(""),
m_trainerClass(INT_MAX),
m_coordinate(0, 0),
@@ -46,14 +47,14 @@ MapTrainer::MapTrainer(const Pokemod* pokemod, const int id) :
{
}
-MapTrainer::MapTrainer(const MapTrainer& trainer, const Pokemod* pokemod, const int id) :
- Object("MapTrainer", pokemod, id)
+MapTrainer::MapTrainer(const MapTrainer& trainer, const Object* parent, const int id) :
+ Object("MapTrainer", parent, id)
{
*this = trainer;
}
-MapTrainer::MapTrainer(const QDomElement& xml, const Pokemod* pokemod, const int id) :
- Object("MapTrainer", pokemod, id)
+MapTrainer::MapTrainer(const QDomElement& xml, const Object* parent, const int id) :
+ Object("MapTrainer", parent, id)
{
load(xml, id);
}
@@ -65,56 +66,57 @@ MapTrainer::~MapTrainer()
bool MapTrainer::validate() const
{
- bool valid = true;
- pokemod()->validationMsg(QString("------Trainer \"%1\" with id %2---").arg(m_name).arg(id()), Pokemod::V_Msg);
- if (m_name == "")
- {
- pokemod()->validationMsg("Name is not defined");
- valid = false;
- }
- if (pokemod()->trainerIndex(m_trainerClass) == INT_MAX)
- {
- pokemod()->validationMsg("Invalid trainer class");
- valid = false;
- }
- if (Pokemod::D_End_None <= m_direction)
- {
- pokemod()->validationMsg("Invalid direction");
- valid = false;
- }
- if (!m_numFight || (pokemod()->rules()->maxFight() < m_numFight))
- {
- pokemod()->validationMsg("Invalid number of Pokémon for a fight");
- valid = false;
- }
- if (pokemod()->dialogIndex(m_dialog) == INT_MAX)
- {
- pokemod()->validationMsg("Invalid dialog");
- valid = false;
- }
- if (teamMemberCount() <= m_leadTeamMember)
- {
- 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()])
- pokemod()->validationMsg(QString("Duplicate team member with id %1").arg(teamMember->id()));
- idChecker[teamMember->id()] = true;
- }
- }
- else
- {
- pokemod()->validationMsg("There are no team members");
- valid = false;
- }
- return valid;
+ // 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::load(const QDomElement& xml, int id)
@@ -154,13 +156,15 @@ void MapTrainer::setName(const QString& name)
void MapTrainer::setTrainerClass(const int trainerClass) throw(BoundsException)
{
- if (pokemod()->trainerIndex(trainerClass) == INT_MAX)
+ if (static_cast<const Pokemod*>(pokemod())->trainerIndex(trainerClass) == INT_MAX)
error<BoundsException>("trainerClass");
m_trainerClass = trainerClass;
}
-void MapTrainer::setCoordinate(const Point& coordinate)
+void MapTrainer::setCoordinate(const Point& coordinate) throw(BoundsException)
{
+ if ((static_cast<const Map*>(parent())->width() <= coordinate.x()) || (static_cast<const Map*>(parent())->height() <= coordinate.y()))
+ error<BoundsException>("coordinate");
m_coordinate = coordinate;
}
@@ -178,7 +182,7 @@ void MapTrainer::setDirection(const int direction) throw(BoundsException)
void MapTrainer::setNumFight(const int numFight) throw(BoundsException)
{
- if (!numFight || (pokemod()->rules()->maxFight() < numFight))
+ if (!numFight || (static_cast<const Pokemod*>(pokemod())->rules()->maxFight() < numFight))
error<BoundsException>("numFight");
m_numFight = numFight;
}
@@ -190,7 +194,7 @@ void MapTrainer::setAppearFlag(const Flag& appearFlag)
void MapTrainer::setDialog(const int dialog) throw(BoundsException)
{
- if (pokemod()->dialogIndex(dialog) == INT_MAX)
+ if (static_cast<const Pokemod*>(pokemod())->dialogIndex(dialog) == INT_MAX)
error<BoundsException>("dialog");
m_dialog = dialog;
}
@@ -288,19 +292,19 @@ int MapTrainer::teamMemberCount() const
MapTrainerTeamMember* MapTrainer::newTeamMember()
{
- m_teamMember.append(new MapTrainerTeamMember(pokemod(), newTeamMemberId()));
+ m_teamMember.append(new MapTrainerTeamMember(this, newTeamMemberId()));
return m_teamMember[teamMemberCount() - 1];
}
MapTrainerTeamMember* MapTrainer::newTeamMember(const QDomElement& xml)
{
- m_teamMember.append(new MapTrainerTeamMember(xml, pokemod(), newTeamMemberId()));
+ m_teamMember.append(new MapTrainerTeamMember(xml, this, newTeamMemberId()));
return m_teamMember[teamMemberCount() - 1];
}
MapTrainerTeamMember* MapTrainer::newTeamMember(const MapTrainerTeamMember& teamMember)
{
- m_teamMember.append(new MapTrainerTeamMember(teamMember, pokemod(), newTeamMemberId()));
+ m_teamMember.append(new MapTrainerTeamMember(teamMember, this, newTeamMemberId()));
return m_teamMember[teamMemberCount() - 1];
}