summaryrefslogtreecommitdiffstats
path: root/pokebattle/TeamMember.cpp
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2008-08-21 05:37:12 +0000
committerBen Boeckel <MathStuf@gmail.com>2008-08-21 05:37:12 +0000
commitc340fbb6635989fc24db6edd9d68544a376bca20 (patch)
tree1f5921b70e2a085f11237d40a6b0f80679338fbd /pokebattle/TeamMember.cpp
parentb99070118a3cedc4fcc7514ba95fce2646d649c4 (diff)
downloadsigen-c340fbb6635989fc24db6edd9d68544a376bca20.tar.gz
sigen-c340fbb6635989fc24db6edd9d68544a376bca20.tar.xz
sigen-c340fbb6635989fc24db6edd9d68544a376bca20.zip
[FIX] Cleaned up some TODO tags (fine tuning)
[FIX] Now using QUuid for unique action names in Kross git-svn-id: https://pokegen.svn.sourceforge.net/svnroot/pokegen/trunk@242 6ecfd1a5-f3ed-3746-8530-beee90d26b22
Diffstat (limited to 'pokebattle/TeamMember.cpp')
-rw-r--r--pokebattle/TeamMember.cpp72
1 files changed, 60 insertions, 12 deletions
diff --git a/pokebattle/TeamMember.cpp b/pokebattle/TeamMember.cpp
index cc5dc42c..02e266bc 100644
--- a/pokebattle/TeamMember.cpp
+++ b/pokebattle/TeamMember.cpp
@@ -50,7 +50,8 @@
Pokebattle::TeamMember::TeamMember(const int speciesId, const QString& name, const int level, Containment* containment, const bool suppressItems) :
Pokescripting::Config(containment),
- m_containment(containment)
+ m_containment(containment),
+ m_id(QUuid::createUuid())
{
makeConnections();
setSpecies(pokemod()->species(speciesId));
@@ -84,7 +85,8 @@ Pokebattle::TeamMember::TeamMember(const int speciesId, const QString& name, con
Pokebattle::TeamMember::TeamMember(Pokescripting::MapTrainerTeamMemberWrapper* teamMember, Containment* containment) :
Pokescripting::Config(containment),
- m_containment(containment)
+ m_containment(containment),
+ m_id(QUuid::createUuid())
{
makeConnections();
setSpecies(teamMember->species());
@@ -106,6 +108,11 @@ Pokebattle::TeamMember::TeamMember(Pokescripting::MapTrainerTeamMemberWrapper* t
m_statExp[i] = 0;
}
+QUuid Pokebattle::TeamMember::id() const
+{
+ return m_id;
+}
+
QString Pokebattle::TeamMember::name() const
{
if (value("name").canConvert<QString>())
@@ -148,16 +155,18 @@ int Pokebattle::TeamMember::baseStat(const Pokemod::Stat stat) const
int Pokebattle::TeamMember::statExperience(const Pokemod::Stat stat) const
{
- if (value(QString("statExperience-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat])).canConvert<int>())
- return value(QString("statExperience-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat])).toInt();
+ const QString valueName = QString("statExperience-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat]);
+ if (value(valueName).canConvert<int>())
+ return value(valueName).toInt();
return m_statExp[stat];
}
int Pokebattle::TeamMember::dv(const Pokemod::Stat stat) const
{
- if (value(QString("dv-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat])).canConvert<int>())
+ const QString valueName = QString("dv-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat]);
+ if (value(valueName).canConvert<int>())
{
- const int dv = value(QString("dv-%1").arg((pokemod()->rules()->specialSplit() ? Pokemod::StatGSCStr : Pokemod::StatRBYStr)[stat])).toInt();
+ const int dv = value(valueName).toInt();
if (dv < (pokemod()->rules()->specialDVSplit() ? 32 : 16))
return dv;
}
@@ -269,9 +278,47 @@ void Pokebattle::TeamMember::boostLevels(const int levels)
void Pokebattle::TeamMember::evolveInto(Pokescripting::SpeciesWrapper* newSpecies)
{
emit(evolveStart());
- // TODO: calculate current stats
+ int oldStats[Pokemod::ST_End_GSC] = {};
+ int newStats[Pokemod::ST_End_GSC] = {};
+ oldStats[Pokemod::ST_Attack] = statValue(Pokemod::ST_Attack);
+ oldStats[Pokemod::ST_Defense] = statValue(Pokemod::ST_Defense);
+ oldStats[Pokemod::ST_Speed] = statValue(Pokemod::ST_Speed);
+ if (pokemod()->rules()->specialSplit())
+ {
+ oldStats[Pokemod::ST_SpecialAttack] = statValue(Pokemod::ST_SpecialAttack);
+ oldStats[Pokemod::ST_SpecialDefense] = statValue(Pokemod::ST_SpecialDefense);
+ }
+ else
+ oldStats[Pokemod::ST_Special] = statValue(Pokemod::ST_Special);
setSpecies(newSpecies);
- // TODO: recalculate stats and emit signals as needed
+ newStats[Pokemod::ST_Attack] = statValue(Pokemod::ST_Attack);
+ newStats[Pokemod::ST_Defense] = statValue(Pokemod::ST_Defense);
+ newStats[Pokemod::ST_Speed] = statValue(Pokemod::ST_Speed);
+ if (pokemod()->rules()->specialSplit())
+ {
+ newStats[Pokemod::ST_SpecialAttack] = statValue(Pokemod::ST_SpecialAttack);
+ newStats[Pokemod::ST_SpecialDefense] = statValue(Pokemod::ST_SpecialDefense);
+ }
+ else
+ newStats[Pokemod::ST_Special] = statValue(Pokemod::ST_Special);
+ if (oldStats[Pokemod::ST_Attack] != newStats[Pokemod::ST_Attack])
+ emit(statChanged(Pokemod::ST_Attack, newStats[Pokemod::ST_Attack]));
+ if (oldStats[Pokemod::ST_Defense] != newStats[Pokemod::ST_Defense])
+ emit(statChanged(Pokemod::ST_Defense, newStats[Pokemod::ST_Defense]));
+ if (oldStats[Pokemod::ST_Speed] != newStats[Pokemod::ST_Speed])
+ emit(statChanged(Pokemod::ST_Speed, newStats[Pokemod::ST_Speed]));
+ if (pokemod()->rules()->specialSplit())
+ {
+ if (oldStats[Pokemod::ST_SpecialAttack] != newStats[Pokemod::ST_SpecialAttack])
+ emit(statChanged(Pokemod::ST_SpecialAttack, newStats[Pokemod::ST_SpecialAttack]));
+ if (oldStats[Pokemod::ST_SpecialDefense] != newStats[Pokemod::ST_SpecialDefense])
+ emit(statChanged(Pokemod::ST_SpecialDefense, newStats[Pokemod::ST_SpecialDefense]));
+ }
+ else
+ {
+ if (oldStats[Pokemod::ST_Special] != newStats[Pokemod::ST_Special])
+ emit(statChanged(Pokemod::ST_Special, newStats[Pokemod::ST_Special]));
+ }
emit(evolveEnd());
}
@@ -390,9 +437,9 @@ void Pokebattle::TeamMember::teachMove(Pokescripting::MoveWrapper* move)
m_moves.append(move);
emit(moveLearned(move));
}
- // TODO: Handle when the move list is full
+ emit(movesFull(move));
}
- // TODO: signal that the move is unlearnable
+ emit(unlearnableMove(move));
}
Pokebattle::TeamMember::Action Pokebattle::TeamMember::requestAction() const
@@ -402,12 +449,13 @@ Pokebattle::TeamMember::Action Pokebattle::TeamMember::requestAction() const
void Pokebattle::TeamMember::makeActive(Arena* arena)
{
- // TODO: start up any scripts that may be needed
+ // TODO: initialize status scripts
+ // TODO: initialize ability scripts
}
void Pokebattle::TeamMember::writeBack()
{
- // TODO: write back all differences between config and local storage
+ // TODO: write back all (applicable) differences between config and local storage
}
Pokescripting::PokemodWrapper* Pokebattle::TeamMember::pokemod() const