diff options
| author | Ben Boeckel <MathStuf@gmail.com> | 2008-08-21 05:37:12 +0000 |
|---|---|---|
| committer | Ben Boeckel <MathStuf@gmail.com> | 2008-08-21 05:37:12 +0000 |
| commit | c340fbb6635989fc24db6edd9d68544a376bca20 (patch) | |
| tree | 1f5921b70e2a085f11237d40a6b0f80679338fbd /pokebattle/TeamMember.cpp | |
| parent | b99070118a3cedc4fcc7514ba95fce2646d649c4 (diff) | |
| download | sigen-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.cpp | 72 |
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 |
