From 77b070e782e664f9906487d6ee71010f659ce8b5 Mon Sep 17 00:00:00 2001
From: Daniel Karbach <daniel.karbach@localhorst.tv>
Date: Wed, 13 Feb 2013 18:39:57 +0100
Subject: [PATCH] put victory strings in battle resources

---
 src/battle/Resources.cpp           | 34 ++++++++++++++
 src/battle/Resources.h             | 17 +++++++
 src/battle/states/VictoryState.cpp | 74 ++++++++++++++++++++++--------
 test-data/test.l2s                 | 19 +++++++-
 4 files changed, 125 insertions(+), 19 deletions(-)

diff --git a/src/battle/Resources.cpp b/src/battle/Resources.cpp
index d50571f..621f61e 100644
--- a/src/battle/Resources.cpp
+++ b/src/battle/Resources.cpp
@@ -84,6 +84,23 @@ Resources::Resources()
 , ikariLabelCol(0)
 , ikariLabelRow(0)
 
+, victoryGetsText(0)
+, victoryExpText(0)
+, victoryGoldText(0)
+, victoryLevelUpText(0)
+, victoryUpgradeText(0)
+, victoryNextLevelText(0)
+
+, victoryMHPText(0)
+, victoryMMPText(0)
+, victoryATPText(0)
+, victoryDFPText(0)
+, victorySTRText(0)
+, victoryAGLText(0)
+, victoryINTText(0)
+, victoryGUTText(0)
+, victoryMGRText(0)
+
 { }
 
 
@@ -160,6 +177,23 @@ void Resources::CreateTypeDescription() {
 	td.AddField("ikariLabelCol", FieldDescription(((char *)&r.ikariLabelCol) - ((char *)&r), Interpreter::NUMBER_ID).SetDescription("row of the ikari label in heroTagLabels"));
 
 	td.AddField("heroesBgColor", FieldDescription(((char *)&r.heroesBgColor) - ((char *)&r), Interpreter::COLOR_ID).SetDescription("background color of the small tags during attack animation"));
+
+	td.AddField("victoryGetsText", FieldDescription(((char *)&r.victoryGetsText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryExpText", FieldDescription(((char *)&r.victoryExpText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryGoldText", FieldDescription(((char *)&r.victoryGoldText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryLevelUpText", FieldDescription(((char *)&r.victoryLevelUpText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryUpgradeText", FieldDescription(((char *)&r.victoryUpgradeText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryNextLevelText", FieldDescription(((char *)&r.victoryNextLevelText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+
+	td.AddField("victoryMHPText", FieldDescription(((char *)&r.victoryMHPText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryMMPText", FieldDescription(((char *)&r.victoryMMPText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryATPText", FieldDescription(((char *)&r.victoryATPText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryDFPText", FieldDescription(((char *)&r.victoryDFPText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victorySTRText", FieldDescription(((char *)&r.victorySTRText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryAGLText", FieldDescription(((char *)&r.victoryAGLText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryINTText", FieldDescription(((char *)&r.victoryINTText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryGUTText", FieldDescription(((char *)&r.victoryGUTText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
+	td.AddField("victoryMGRText", FieldDescription(((char *)&r.victoryMGRText) - ((char *)&r), Interpreter::STRING_ID).SetReferenced());
 }
 
 void Resources::Construct(void *data) {
diff --git a/src/battle/Resources.h b/src/battle/Resources.h
index 1500378..0a8a1e8 100644
--- a/src/battle/Resources.h
+++ b/src/battle/Resources.h
@@ -88,6 +88,23 @@ struct Resources {
 
 	graphics::Color heroesBgColor;
 
+	const char *victoryGetsText;
+	const char *victoryExpText;
+	const char *victoryGoldText;
+	const char *victoryLevelUpText;
+	const char *victoryUpgradeText;
+	const char *victoryNextLevelText;
+
+	const char *victoryMHPText;
+	const char *victoryMMPText;
+	const char *victoryATPText;
+	const char *victoryDFPText;
+	const char *victorySTRText;
+	const char *victoryAGLText;
+	const char *victoryINTText;
+	const char *victoryGUTText;
+	const char *victoryMGRText;
+
 
 	Resources();
 
diff --git a/src/battle/states/VictoryState.cpp b/src/battle/states/VictoryState.cpp
index e2cc99f..59d4495 100644
--- a/src/battle/states/VictoryState.cpp
+++ b/src/battle/states/VictoryState.cpp
@@ -3,6 +3,7 @@
 #include "../Battle.h"
 #include "../BattleState.h"
 #include "../Hero.h"
+#include "../Resources.h"
 #include "../../app/Application.h"
 #include "../../app/Input.h"
 #include "../../common/Capsule.h"
@@ -13,6 +14,7 @@
 #include "../../graphics/Font.h"
 #include "../../graphics/Frame.h"
 
+#include <iomanip>
 #include <sstream>
 
 using app::Application;
@@ -22,7 +24,12 @@ using common::Upgrade;
 using graphics::Font;
 using graphics::Frame;
 using math::Vector;
+using std::left;
+using std::right;
+using std::setfill;
+using std::setw;
 using std::string;
+using std::stringstream;
 using std::vector;
 
 namespace battle {
@@ -33,15 +40,19 @@ void VictoryState::OnEnterState(SDL_Surface *screen) {
 }
 
 void VictoryState::LoadResults() {
-	// TODO: localization
+	const Resources &res = parent->Res();
 	lines.clear();
 
-	std::stringstream s;
-	s << "Gets " << battle->ExpReward() << " EXP";
+	stringstream s;
+	s << res.victoryGetsText << ' '
+			<< battle->ExpReward() << ' '
+			<< res.victoryExpText << '.';
 	lines.push_back(s.str());
 
 	s.str("");
-	s << "Gets " << battle->GoldReward() << " gold";
+	s << res.victoryGetsText << ' '
+			<< battle->GoldReward() << ' '
+			<< res.victoryGoldText << '.';
 	lines.push_back(s.str());
 
 	lines.push_back("");
@@ -49,55 +60,82 @@ void VictoryState::LoadResults() {
 	GameState &state = *parent->Game().state;
 	vector<Upgrade> upgrade;
 	battle->ApplyRewards(state, upgrade);
-	for (std::vector<Upgrade>::const_iterator
+	for (vector<Upgrade>::const_iterator
 			i(upgrade.begin()), end(upgrade.end());
 			i != end; ++i) {
 		LoadResult(*i, lines);
 	}
 
+	s.str("");
+	s << state.money << ' ' << res.victoryGoldText;
+	string goldStr = s.str();
+
 	lines.push_back("");
 	s.str("");
-	s << state.money << " gold";
+	s << right << setw(28) << setfill(' ') << goldStr;
 	lines.push_back(s.str());
 }
 
 void VictoryState::LoadResult(
 		const Upgrade &u,
 		vector<string> &lines) {
-	std::stringstream s;
+	const Resources &res = parent->Res();
+	stringstream s;
 	switch (u.GetType()) {
 		case Upgrade::LEVEL_UP:
-			s << u.Name() << " levels up.";
+			s << left << setw(6) << setfill(' ') << u.Name()
+					<< res.victoryLevelUpText << '.';
 			break;
 		case Upgrade::MAX_HEALTH:
-			s << "Max. HP increases by " << u.Amount();
+			s << res.victoryMHPText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::MAX_MAGIC:
-			s << "Max. MP increases by " << u.Amount();
+			s << res.victoryMMPText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::ATTACK:
-			s << "ATP increases by " << u.Amount();
+			s << res.victoryATPText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::DEFENSE:
-			s << "DFP increases by " << u.Amount();
+			s << res.victoryDFPText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::STRENGTH:
-			s << "STR increases by " << u.Amount();
+			s << res.victorySTRText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::AGILITY:
-			s << "AGL increases by " << u.Amount();
+			s << res.victoryAGLText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::INTELLIGENCE:
-			s << "INT increases by " << u.Amount();
+			s << res.victoryINTText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::GUT:
-			s << "GUT increases by " << u.Amount();
+			s << res.victoryGUTText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::MAGIC_RESISTANCE:
-			s << "MGR increases by " << u.Amount();
+			s << res.victoryMGRText << ' '
+					<< res.victoryUpgradeText << ' '
+					<< u.Amount() << '.';
 			break;
 		case Upgrade::LEVEL_NEXT:
-			s << u.Name() << " next level " << u.Amount();
+			s << setw(7) << setfill(' ')
+					<< left << u.Name() << ' '
+					<< res.victoryNextLevelText
+					<< ' ' << u.Amount();
 			break;
 		default:
 			s << "unknown upgrade type " << u.GetType();
diff --git a/test-data/test.l2s b/test-data/test.l2s
index 7b187aa..500039f 100644
--- a/test-data/test.l2s
+++ b/test-data/test.l2s
@@ -650,7 +650,24 @@ export BattleResources battleResources {
 	},
 	noEquipmentText: "No equip",
 
-	escapeText: "Escapes."
+	escapeText: "Escapes.",
+
+	victoryGetsText: "Gets",
+	victoryExpText: "EXP",
+	victoryGoldText: "GOLD",
+	victoryLevelUpText: "levels up",
+	victoryUpgradeText: "increases by",
+	victoryNextLevelText: "NXT.LEVEL",
+
+	victoryMHPText: "Max. HP",
+	victoryMMPText: "Max. MP",
+	victoryATPText: "ATP",
+	victoryDFPText: "DFP",
+	victorySTRText: "STR",
+	victoryAGLText: "AGL",
+	victoryINTText: "INT",
+	victoryGUTText: "GUT",
+	victoryMGRText: "MGR"
 }
 
 Font menuFont {
-- 
2.39.5