From 807071d35159de0660f9df31c48d5bf895ca3622 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Sun, 27 Apr 2008 15:15:17 +0000 Subject: [FIX] Pokemod objects now know about parents [FIX] Project includes are now relative [FIX] Headers included for better detection of invalid headers [FIX] Validation code commented out so it can be done better git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@111 6ecfd1a5-f3ed-3746-8530-beee90d26b22 --- pokemod/MapTrainer.cpp | 142 +++++++++++++++++++++++++------------------------ 1 file changed, 73 insertions(+), 69 deletions(-) (limited to 'pokemod/MapTrainer.cpp') 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 . */ -// Qt includes -#include +// 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 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 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(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::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(pokemod())->trainerIndex(trainerClass) == INT_MAX) error("trainerClass"); m_trainerClass = trainerClass; } -void MapTrainer::setCoordinate(const Point& coordinate) +void MapTrainer::setCoordinate(const Point& coordinate) throw(BoundsException) { + if ((static_cast(parent())->width() <= coordinate.x()) || (static_cast(parent())->height() <= coordinate.y())) + error("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(pokemod())->rules()->maxFight() < numFight)) error("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(pokemod())->dialogIndex(dialog) == INT_MAX) error("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]; } -- cgit