diff options
Diffstat (limited to 'pokemod/MapTrainer.cpp')
-rw-r--r-- | pokemod/MapTrainer.cpp | 42 |
1 files changed, 25 insertions, 17 deletions
diff --git a/pokemod/MapTrainer.cpp b/pokemod/MapTrainer.cpp index cd6b4c98..5688c34f 100644 --- a/pokemod/MapTrainer.cpp +++ b/pokemod/MapTrainer.cpp @@ -29,6 +29,7 @@ #include "Pokemod.h" #include "Dialog.h" +#include "MapTrainerTeamMember.h" #include "MapTrainer.h" MapTrainer::MapTrainer(const Pokemod* par, const int _id) : @@ -60,6 +61,12 @@ MapTrainer::MapTrainer(const Pokemod* par, const QString& fname, const int _id) load(fname, _id); } +MapTrainer::~MapTrainer() +{ + for (QListIterator<MapTrainerTeamMember*> i(teamMembers); i.hasNext(); ) + delete i.next(); +} + bool MapTrainer::validate() const { bool valid = true; @@ -74,7 +81,7 @@ bool MapTrainer::validate() const pokemod->validationMsg("Skin could't be found"); valid = false; } - if (D_End_None <= direction) + if (Pokemod::D_End_None <= direction) { pokemod->validationMsg("Invalid direction"); valid = false; @@ -112,11 +119,11 @@ bool MapTrainer::validate() const if (getTeamMemberCount()) { QMap<int, int> idChecker; - for (QListIterator<MapTrainerTeamMember> i(teamMembers); i.hasNext(); i.next()) + for (QListIterator<MapTrainerTeamMember*> i(teamMembers); i.hasNext(); i.next()) { - if (!i.peekNext().isValid()) + if (!i.peekNext()->isValid()) valid = false; - ++idChecker[i.peekNext().getId()]; + ++idChecker[i.peekNext()->getId()]; } for (QMapIterator<int, int> i(idChecker); i.hasNext(); i.next()) { @@ -202,8 +209,8 @@ void MapTrainer::save(const QString& map) const throw(Exception) ini.addField("loseDialog", loseDialog); ini.addField("leadTeamMember", leadTeamMember); ini.save(QString("%1/map/%2/trainer/%3/data.pini").arg(pokemod->getPath()).arg(map).arg(name)); - for (QListIterator<MapTrainerTeamMember> i(teamMembers); i.hasNext(); ) - i.next().save(map, name); + for (QListIterator<MapTrainerTeamMember*> i(teamMembers); i.hasNext(); ) + i.next()->save(map, name); } void MapTrainer::setName(const QString& n) @@ -240,7 +247,7 @@ void MapTrainer::setSight(const int s) void MapTrainer::setDirection(const int d) throw(BoundsException) { - if (D_End_None <= d) + if (Pokemod::D_End_None <= d) throw(BoundsException(className, "direction")); direction = d; } @@ -366,14 +373,14 @@ const MapTrainerTeamMember* MapTrainer::getTeamMember(const int i) const throw(I { if (getTeamMemberCount() <= i) throw(IndexException(className)); - return &teamMembers.at(i); + return teamMembers.at(i); } MapTrainerTeamMember* MapTrainer::getTeamMember(const int i) throw(IndexException) { if (getTeamMemberCount() <= i) throw(IndexException(className)); - return &teamMembers[i]; + return teamMembers[i]; } const MapTrainerTeamMember* MapTrainer::getTeamMemberByID(const int i) const throw(IndexException) @@ -390,7 +397,7 @@ int MapTrainer::getTeamMemberIndex(const int _id) const { for (int i = 0; i < getTeamMemberCount(); ++i) { - if (teamMembers[i].getId() == _id) + if (teamMembers[i]->getId() == _id) return i; } return -1; @@ -403,26 +410,27 @@ int MapTrainer::getTeamMemberCount() const MapTrainerTeamMember* MapTrainer::newTeamMember() { - teamMembers.append(MapTrainerTeamMember(pokemod, getNewId())); - return &teamMembers[getTeamMemberCount() - 1]; + teamMembers.append(new MapTrainerTeamMember(pokemod, getNewId())); + return teamMembers[getTeamMemberCount() - 1]; } MapTrainerTeamMember* MapTrainer::newTeamMember(const QString& fname) { - teamMembers.append(MapTrainerTeamMember(pokemod, fname, getNewId())); - return &teamMembers[getTeamMemberCount() - 1]; + teamMembers.append(new MapTrainerTeamMember(pokemod, fname, getNewId())); + return teamMembers[getTeamMemberCount() - 1]; } MapTrainerTeamMember* MapTrainer::newTeamMember(const MapTrainerTeamMember& p) { - teamMembers.append(MapTrainerTeamMember(pokemod, p, getNewId())); - return &teamMembers[getTeamMemberCount() - 1]; + teamMembers.append(new MapTrainerTeamMember(pokemod, p, getNewId())); + return teamMembers[getTeamMemberCount() - 1]; } void MapTrainer::deleteTeamMember(const int i) throw(IndexException) { if (getTeamMemberCount() <= i) throw(IndexException(className)); + delete teamMembers[i]; teamMembers.removeAt(i); } @@ -444,6 +452,6 @@ MapTrainer& MapTrainer::operator=(const MapTrainer& rhs) leadTeamMember = rhs.leadTeamMember; teamMembers.clear(); for (int i = 0; i < rhs.getTeamMemberCount(); ++i) - teamMembers.append(MapTrainerTeamMember(pokemod, *rhs.getTeamMember(i), rhs.getTeamMember(i)->getId())); + teamMembers.append(new MapTrainerTeamMember(pokemod, *rhs.getTeamMember(i), rhs.getTeamMember(i)->getId())); return *this; } |