]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/states/VictoryState.cpp
moved upgrade process to battle class
[l2e.git] / src / battle / states / VictoryState.cpp
index 409f0846aa380b4a8153f53a12aaa287f616cda6..64318e0157d87b50afbdd75334ad22647c8a983f 100644 (file)
@@ -8,6 +8,7 @@
 #include "../../common/Capsule.h"
 #include "../../common/GameConfig.h"
 #include "../../common/GameState.h"
+#include "../../common/Upgrade.h"
 #include "../../math/Vector.h"
 #include "../../graphics/Font.h"
 #include "../../graphics/Frame.h"
@@ -16,6 +17,8 @@
 
 using app::Application;
 using app::Input;
+using common::GameState;
+using common::Upgrade;
 using graphics::Font;
 using graphics::Frame;
 using math::Vector;
@@ -42,81 +45,63 @@ void VictoryState::LoadResults() {
 
        lines.push_back("");
 
-       vector<common::Hero::UpgradeInfo> upgrade;
-       for (std::vector<Hero>::iterator
-                       i(battle->HeroesBegin()), end(battle->HeroesEnd());
+       GameState &state = *parent->Game().state;
+       vector<Upgrade> upgrade;
+       battle->ApplyRewards(state, upgrade);
+       for (std::vector<Upgrade>::const_iterator
+                       i(upgrade.begin()), end(upgrade.end());
                        i != end; ++i) {
-               if (i->Health() <= 0) continue;
-               upgrade.clear();
-               common::Hero &hero = i->Master();
-               hero.AddExperience(battle->ExpReward(), upgrade);
-               LoadResults(hero.Name(), upgrade, lines);
-               s.str("");
-               s << hero.Name() << " next level " << hero.NextLevel();
-               lines.push_back(s.str());
-       }
-
-       if (battle->HasCapsule()) {
-               const Capsule &capsule = battle->GetCapsule();
-               if (capsule.Health() > 0) {
-                       s.str("");
-                       s << capsule.Name() << " next level " << capsule.Master().NextLevel();
-                       lines.push_back(s.str());
-               }
+               LoadResult(*i, lines);
        }
 
        lines.push_back("");
        s.str("");
-       s << parent->Game().state->money << " gold";
+       s << state.money << " gold";
        lines.push_back(s.str());
 }
 
-void VictoryState::LoadResults(
-               const char *who,
-               const vector<common::Hero::UpgradeInfo> &upgrade,
+void VictoryState::LoadResult(
+               const Upgrade &u,
                vector<string> &lines) {
        std::stringstream s;
-       for (vector<common::Hero::UpgradeInfo>::const_iterator
-                       i(upgrade.begin()), end(upgrade.end());
-                       i != end; ++i) {
-               s.str("");
-               switch (i->type) {
-                       case common::Hero::UPGRADE_LVL:
-                               s << who << " levels up.";
-                               break;
-                       case common::Hero::UPGRADE_MHP:
-                               s << "Max. HP increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_MMP:
-                               s << "Max. MP increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_ATK:
-                               s << "ATK increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_DFP:
-                               s << "DFP increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_STR:
-                               s << "STR increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_AGL:
-                               s << "AGL increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_INT:
-                               s << "INT increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_GUT:
-                               s << "GUT increases by " << i->amount;
-                               break;
-                       case common::Hero::UPGRADE_MGR:
-                               s << "MGR increases by " << i->amount;
-                               break;
-                       default:
-                               s << "There's an error in common::Hero::"
-                                               "AddExperience()";
-               }
-               lines.push_back(s.str());
+       switch (u.GetType()) {
+               case Upgrade::LEVEL_UP:
+                       s << u.Name() << " levels up.";
+                       break;
+               case Upgrade::MAX_HEALTH:
+                       s << "Max. HP increases by " << u.Amount();
+                       break;
+               case Upgrade::MAX_MAGIC:
+                       s << "Max. MP increases by " << u.Amount();
+                       break;
+               case Upgrade::ATTACK:
+                       s << "ATK increases by " << u.Amount();
+                       break;
+               case Upgrade::DEFENSE:
+                       s << "DFP increases by " << u.Amount();
+                       break;
+               case Upgrade::STRENGTH:
+                       s << "STR increases by " << u.Amount();
+                       break;
+               case Upgrade::AGILITY:
+                       s << "AGL increases by " << u.Amount();
+                       break;
+               case Upgrade::INTELLIGENCE:
+                       s << "INT increases by " << u.Amount();
+                       break;
+               case Upgrade::GUT:
+                       s << "GUT increases by " << u.Amount();
+                       break;
+               case Upgrade::MAGIC_RSISTANCE:
+                       s << "MGR increases by " << u.Amount();
+                       break;
+               case Upgrade::LEVEL_NEXT:
+                       s << u.Name() << " next level " << u.Amount();
+                       break;
+               default:
+                       s << "unknown upgrade type " << u.GetType();
        }
+       lines.push_back(s.str());
 }
 
 void VictoryState::OnExitState(SDL_Surface *screen) {