#include "../../common/Capsule.h"
#include "../../common/GameConfig.h"
#include "../../common/GameState.h"
-#include "../../common/Hero.h"
+#include "../../common/Upgrade.h"
#include "../../math/Vector.h"
#include "../../graphics/Font.h"
#include "../../graphics/Frame.h"
using app::Application;
using app::Input;
+using common::GameState;
+using common::Upgrade;
using graphics::Font;
using graphics::Frame;
using math::Vector;
lines.push_back("");
- for (std::vector<Hero>::const_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;
- const common::Hero &hero = i->Master();
- 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::LoadResult(
+ const Upgrade &u,
+ vector<string> &lines) {
+ std::stringstream s;
+ 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());
}