summaryrefslogtreecommitdiffstats
path: root/pokemod/MapTrainer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'pokemod/MapTrainer.cpp')
-rw-r--r--pokemod/MapTrainer.cpp42
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;
}