Erwan
- Added translation mechanism, and basic french translation as an example
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
#include "../include/GameOptions.h"
|
||||
// WALDORF - added to support drawing big cards during interrupts
|
||||
#include "../include/CardGui.h"
|
||||
|
||||
#include "../include/Translate.h"
|
||||
|
||||
/*
|
||||
NextGamePhase requested by user
|
||||
@@ -29,7 +29,7 @@ void NextGamePhase::Render(){
|
||||
char buffer[200];
|
||||
int playerId = 1;
|
||||
if (GameObserver::GetInstance()->currentActionPlayer == GameObserver::GetInstance()->players[1]) playerId = 2;
|
||||
sprintf(buffer, "Player %i : -> %s", playerId, Constants::MTGPhaseNames[nextPhase]);
|
||||
sprintf(buffer, "%s %i : -> %s", _("Player").c_str(), playerId, _(Constants::MTGPhaseNames[nextPhase]).c_str());
|
||||
mFont->DrawString(buffer, x + 30 , y, JGETEXT_LEFT);
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ void StackAbility::Render(){
|
||||
mFont->SetBase(0);
|
||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||
char buffer[200];
|
||||
sprintf(buffer, "%s", ability->getMenuText());
|
||||
sprintf(buffer, "%s", _(ability->getMenuText()).c_str());
|
||||
mFont->DrawString(buffer, x + 30 , y, JGETEXT_LEFT);
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = ability->source->getThumb();
|
||||
@@ -57,7 +57,7 @@ void StackAbility::Render(){
|
||||
float scale = 30 / quad->mHeight;
|
||||
renderer->RenderQuad(quad, x , y , 0,scale,scale);
|
||||
}else{
|
||||
mFont->DrawString(ability->source->getName(),x,y-15);
|
||||
mFont->DrawString(_(ability->source->getName()).c_str(),x,y-15);
|
||||
}
|
||||
}
|
||||
StackAbility::StackAbility(int id,MTGAbility * _ability): Interruptible(id),ability(_ability){
|
||||
@@ -111,7 +111,7 @@ void Spell::Render(){
|
||||
JLBFont * mFont = GameApp::CommonRes->GetJLBFont(Constants::MAIN_FONT);
|
||||
mFont->SetBase(0);
|
||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||
mFont->DrawString(source->getName(), x + 30 , y, JGETEXT_LEFT);
|
||||
mFont->DrawString(_(source->getName()).c_str(), x + 30 , y, JGETEXT_LEFT);
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = source->getThumb();
|
||||
if (quad){
|
||||
@@ -162,7 +162,7 @@ void Spell::Render(){
|
||||
renderer->RenderQuad(quad, x + 150 , y , 0,scale,scale);
|
||||
}else{
|
||||
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
|
||||
mFont->DrawString(((MTGCardInstance *)target)->getName(),x+120,y);
|
||||
mFont->DrawString(_(((MTGCardInstance *)target)->getName()).c_str(),x+120,y);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -191,9 +191,9 @@ void PutInGraveyard::Render(){
|
||||
mFont->SetBase(0);
|
||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||
if (!removeFromGame){
|
||||
mFont->DrawString("goes to graveyard", x + 30 , y, JGETEXT_LEFT);
|
||||
mFont->DrawString(_("goes to graveyard").c_str(), x + 30 , y, JGETEXT_LEFT);
|
||||
}else{
|
||||
mFont->DrawString("is removed from game", x + 30 , y, JGETEXT_LEFT);
|
||||
mFont->DrawString(_("is removed from game").c_str(), x + 30 , y, JGETEXT_LEFT);
|
||||
}
|
||||
JRenderer * renderer = JRenderer::GetInstance();
|
||||
JQuad * quad = card->getThumb();
|
||||
@@ -295,7 +295,7 @@ int ActionStack::addSpell(MTGCardInstance * _source, Targetable * _targets[], in
|
||||
}
|
||||
|
||||
|
||||
Interruptible * ActionStack::_(int id){
|
||||
Interruptible * ActionStack::getAt(int id){
|
||||
if (id < 0) id = mCount + id;
|
||||
if (id > mCount -1) return NULL;
|
||||
return (Interruptible *)mObjects[id];
|
||||
@@ -760,9 +760,9 @@ void ActionStack::Render(){
|
||||
// seconds if the user disables auto progressing interrupts by setting the seconds
|
||||
// value to zero in Options.
|
||||
if (GameOptions::GetInstance()->values[OPTIONS_INTERRUPT_SECONDS].getIntValue() == 0)
|
||||
sprintf(buffer, "Interrupt?");
|
||||
sprintf(buffer, _("Interrupt?").c_str());
|
||||
else
|
||||
sprintf(buffer, "Interrupt? %i", static_cast<int>(timer));
|
||||
sprintf(buffer, "%s %i", _("Interrupt?").c_str(),static_cast<int>(timer));
|
||||
|
||||
//WALDORF - removed all the unnecessary math. just display the prompt at the
|
||||
// top of the box.
|
||||
@@ -770,8 +770,8 @@ void ActionStack::Render(){
|
||||
mFont->DrawString(buffer, x0 + 5, y0);
|
||||
|
||||
|
||||
if (mCount > 1) sprintf(buffer, "X Interrupt - 0 No - [] No to All");
|
||||
else sprintf(buffer, "X Interrupt - 0 No");
|
||||
if (mCount > 1) sprintf(buffer, _("X Interrupt - 0 No - [] No to All").c_str());
|
||||
else sprintf(buffer, _("X Interrupt - 0 No").c_str());
|
||||
|
||||
// WALDORF - puts the button legend right under the prompt. the stack
|
||||
// will be displayed below it now. no more need to do wierd currY math.
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include "../include/CardGui.h"
|
||||
#include "../include/ManaCostHybrid.h"
|
||||
#include "../include/Subtypes.h"
|
||||
#include "../include/Translate.h"
|
||||
#include "../include/MTGDefinitions.h"
|
||||
#include <Vector2D.h>
|
||||
|
||||
@@ -112,6 +113,7 @@ void CardGui::alternateRender(MTGCard * card, JQuad ** manaIcons, float x, float
|
||||
|
||||
if (!card->formattedTextInit){
|
||||
std::string s(card->getText());
|
||||
s = _(s);
|
||||
std::string::size_type found=s.find_first_of("{}");
|
||||
while (found!=string::npos)
|
||||
{
|
||||
@@ -160,7 +162,7 @@ void CardGui::alternateRender(MTGCard * card, JQuad ** manaIcons, float x, float
|
||||
v.x = ((-width/2)+10) * scale;
|
||||
v.y = ((-height/2) + 25) * scale;
|
||||
v.Rotate(rotation);
|
||||
int over = strlen(card->getName()) - 23;
|
||||
int over = strlen(_(card->getName()).c_str()) - 23;
|
||||
float multiply = 1.4;
|
||||
if (over > 0){
|
||||
multiply = 1.1;
|
||||
@@ -168,7 +170,7 @@ void CardGui::alternateRender(MTGCard * card, JQuad ** manaIcons, float x, float
|
||||
mFont->SetScale(scale * multiply);
|
||||
|
||||
mFont->SetColor(ARGB(255,Constants::_r[color],Constants::_g[color],Constants::_b[color]));
|
||||
mFont->DrawString(card->getName(),x+v.x,y+v.y);
|
||||
mFont->DrawString(_(card->getName()).c_str(),x+v.x,y+v.y);
|
||||
mFont->SetScale(scale);
|
||||
mFont->SetColor(ARGB(255,255,255,255));
|
||||
|
||||
@@ -186,7 +188,7 @@ void CardGui::alternateRender(MTGCard * card, JQuad ** manaIcons, float x, float
|
||||
v.y = (height/2-20 - 12 * i) * scale;
|
||||
v.Rotate(rotation);
|
||||
string s = Subtypes::subtypesList->find(card->types[i]);
|
||||
mFont->DrawString(s.c_str(),x+v.x,y+v.y);
|
||||
mFont->DrawString(_(s).c_str(),x+v.x,y+v.y);
|
||||
}
|
||||
|
||||
mFont->SetScale(backup);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
#include "../include/GameStateOptions.h"
|
||||
#include "../include/GameStateShop.h"
|
||||
#include "../include/DeckStats.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
const char * const GameState::menuTexts[]= {"--NEW--","Deck 1", "Deck 2", "Deck 3", "Deck 4", "Deck 5", "Deck 6"} ;
|
||||
JResourceManager* GameApp::CommonRes = NEW JResourceManager();
|
||||
@@ -190,7 +191,7 @@ void GameApp::Destroy()
|
||||
SAFE_DELETE(MtgSets::SetsList);
|
||||
|
||||
SAFE_DELETE(music);
|
||||
|
||||
Translator::EndInstance();
|
||||
|
||||
|
||||
SimpleMenu::destroy();
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
#include "../include/DeckStats.h"
|
||||
#include "../include/MTGRules.h"
|
||||
#include "../include/Credits.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
#ifdef TESTSUITE
|
||||
#include "../include/TestSuiteAI.h"
|
||||
@@ -285,7 +286,7 @@ void GameStateDuel::Update(float dt)
|
||||
}else{
|
||||
difficulty = "(easy)";
|
||||
}
|
||||
sprintf(deckDesc, "Deck %i %s",nbAIDecks, difficulty.c_str());
|
||||
sprintf(deckDesc, "Deck %i %s",nbAIDecks, _(difficulty).c_str());
|
||||
opponentMenu->Add(nbAIDecks,deckDesc);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "../include/GameOptions.h"
|
||||
#include "../include/GameApp.h"
|
||||
#include "../include/MTGCard.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
|
||||
static const char* GAME_VERSION = "WTH?! 0.6.2 - by WilLoW";
|
||||
#define ALPHA_WARNING 0
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include "../include/OptionItem.h"
|
||||
#include "../include/SimpleMenu.h"
|
||||
#include "../include/GameOptions.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
GameStateOptions::GameStateOptions(GameApp* parent): GameState(parent) {
|
||||
optionsList = NULL;
|
||||
@@ -31,7 +32,7 @@ void GameStateOptions::Start()
|
||||
if (GameOptions::GetInstance()->values[OPTIONS_DIFFICULTY_MODE_UNLOCKED].getIntValue()) {
|
||||
optionsList->Add(NEW OptionItem(OPTIONS_DIFFICULTY, "Difficulty", 3, 1));
|
||||
}
|
||||
optionsList->Add(NEW OptionItem(OPTIONS_CACHESIZE, "Cache Size", 60, 5));
|
||||
optionsList->Add(NEW OptionItem(OPTIONS_CACHESIZE, "Image Cache Size", 60, 5));
|
||||
JLBFont * mFont = GameApp::CommonRes->GetJLBFont("graphics/f3");
|
||||
optionsMenu = NEW SimpleMenu(102, this,mFont, 50,170);
|
||||
optionsMenu->Add(1, "Save & Back to Main Menu");
|
||||
@@ -102,7 +103,7 @@ void GameStateOptions::Render()
|
||||
for (int i = 0; i < size; i++){
|
||||
pos = startpos +20*i;
|
||||
if (pos > -20){
|
||||
mFont->DrawString(CreditsText[i],SCREEN_WIDTH/2,pos ,JGETEXT_CENTER);
|
||||
mFont->DrawString(_(CreditsText[i]).c_str(),SCREEN_WIDTH/2,pos ,JGETEXT_CENTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "../include/GameStateShop.h"
|
||||
#include "../include/GameApp.h"
|
||||
#include "../include/MTGDeck.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
|
||||
GameStateShop::GameStateShop(GameApp* parent): GameState(parent) {}
|
||||
@@ -63,7 +64,7 @@ void GameStateShop::Start()
|
||||
|
||||
shop = NEW ShopItems(10, this, itemFont, 10, 0, mParent->collection, setIds);
|
||||
for (int i = 0; i < SHOP_BOOSTERS; i++){
|
||||
sprintf(setNames[i], "%s Booster (15 cards)",MtgSets::SetsList->values[setIds[i]].c_str());
|
||||
sprintf(setNames[i], "%s Booster (15 %s)",MtgSets::SetsList->values[setIds[i]].c_str(), _("cards").c_str());
|
||||
shop->Add(setNames[i],mBack,mBackThumb, 1200);
|
||||
}
|
||||
|
||||
@@ -96,7 +97,7 @@ void GameStateShop::Update(float dt)
|
||||
menu->Update(dt);
|
||||
}else{
|
||||
menu = NEW SimpleMenu(11,this,menuFont,SCREEN_WIDTH/2-100,20);
|
||||
menu->Add(12,"Save & Back to main menu");
|
||||
menu->Add(12,"Save & Back to Main Menu");
|
||||
menu->Add(13, "Cancel");
|
||||
}
|
||||
}else{
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "../include/MTGCardInstance.h"
|
||||
#include "../include/CardGui.h"
|
||||
#include "../include/CardDisplay.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
#define ZX_MAIN 100
|
||||
#define ZY_MAIN 22
|
||||
@@ -329,7 +330,7 @@ void MTGGuiPlay::RenderPhaseBar(){
|
||||
mFont->SetColor(ARGB(255,255,255,255));
|
||||
}
|
||||
mFont->SetScale(DEFAULT_MAIN_FONT_SCALE);
|
||||
mFont->DrawString(Constants::MTGPhaseNames[currentPhase], 375, 2);
|
||||
mFont->DrawString(_(Constants::MTGPhaseNames[currentPhase]).c_str(), 375, 2);
|
||||
}
|
||||
|
||||
void MTGGuiPlay::Render(){
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
#include "../include/config.h"
|
||||
#include "../include/MenuItem.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
|
||||
MenuItem::MenuItem(int id, JLBFont *font, const char* text, int x, int y, JQuad * _off, JQuad * _on, const char * particle, JQuad * particleTex, bool hasFocus): JGuiObject(id), mFont(font), mText(text), mX(x), mY(y)
|
||||
MenuItem::MenuItem(int id, JLBFont *font, string text, int x, int y, JQuad * _off, JQuad * _on, const char * particle, JQuad * particleTex, bool hasFocus): JGuiObject(id), mFont(font), mX(x), mY(y)
|
||||
{
|
||||
mText = _(text);
|
||||
updatedSinceLastRender = 1;
|
||||
mParticleSys = NEW hgeParticleSystem(particle, particleTex);
|
||||
mParticleSys->MoveTo(mX, mY);
|
||||
@@ -41,7 +42,7 @@ void MenuItem::Render()
|
||||
onQuad->SetColor(ARGB(70,255,255,255));
|
||||
renderer->RenderQuad(onQuad, SCREEN_WIDTH , SCREEN_HEIGHT/2 , 0,8,8);
|
||||
onQuad->SetColor(ARGB(255,255,255,255));
|
||||
mFont->DrawString(mText, SCREEN_WIDTH/2, 20 + 3*SCREEN_HEIGHT/4, JGETEXT_CENTER);
|
||||
mFont->DrawString(mText.c_str(), SCREEN_WIDTH/2, 20 + 3*SCREEN_HEIGHT/4, JGETEXT_CENTER);
|
||||
renderer->RenderQuad(onQuad, mX , mY , 0,mScale,mScale);
|
||||
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
#include "../include/GameApp.h"
|
||||
#include <JGE.h>
|
||||
#include "../include/GameOptions.h"
|
||||
|
||||
#include "../include/Translate.h"
|
||||
|
||||
OptionItem::OptionItem(string _id, string _displayValue, int _maxValue, int _increment):JGuiObject(0){
|
||||
id = _id;
|
||||
maxValue = _maxValue;
|
||||
increment = _increment;
|
||||
displayValue = _displayValue;
|
||||
displayValue = _(_displayValue);
|
||||
value = GameOptions::GetInstance()->values[id].getIntValue();
|
||||
hasFocus = 0;
|
||||
x = 0;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
#include "../include/SimpleMenuItem.h"
|
||||
#include "JTypes.h"
|
||||
#include "../include/GameApp.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
const unsigned SimpleMenu::SIDE_SIZE = 7;
|
||||
const unsigned SimpleMenu::VMARGIN = 16;
|
||||
@@ -37,7 +38,7 @@ SimpleMenu::SimpleMenu(int id, JGuiListener* listener, JLBFont* font, int x, int
|
||||
mX = x;
|
||||
mY = y;
|
||||
mFont = font;
|
||||
title = _title;
|
||||
title = _(_title);
|
||||
startId = 0;
|
||||
maxItems = _maxItems;
|
||||
selectionT = 0;
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
#include "../include/config.h"
|
||||
#include "../include/SimpleMenuItem.h"
|
||||
#include "../include/Translate.h"
|
||||
|
||||
|
||||
SimpleMenuItem::SimpleMenuItem(SimpleMenu* _parent, int id, JLBFont *font, const char* text, int x, int y, bool hasFocus): JGuiObject(id), parent(_parent), mFont(font), mX(x), mY(y)
|
||||
SimpleMenuItem::SimpleMenuItem(SimpleMenu* _parent, int id, JLBFont *font, string text, int x, int y, bool hasFocus): JGuiObject(id), parent(_parent), mFont(font), mX(x), mY(y)
|
||||
{
|
||||
mText = text;
|
||||
mText = _(text);
|
||||
mHasFocus = hasFocus;
|
||||
|
||||
mScale = 1.0f;
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
#include "../include/Translate.h"
|
||||
#include "../include/config.h"
|
||||
#include <JGE.h>
|
||||
#include <fstream>
|
||||
#include <iostream>
|
||||
|
||||
Translator * Translator::mInstance = NULL;
|
||||
|
||||
Translator * Translator::GetInstance(){
|
||||
if (!mInstance) mInstance = NEW Translator();
|
||||
return mInstance;
|
||||
}
|
||||
|
||||
void Translator::EndInstance(){
|
||||
SAFE_DELETE(mInstance);
|
||||
}
|
||||
|
||||
int Translator::Add(string from, string to){
|
||||
values[from] = to;
|
||||
return 1;
|
||||
}
|
||||
|
||||
string Translator::translate(string value){
|
||||
map<string,string>::iterator it = values.find(value);
|
||||
if (it != values.end()) return it->second;
|
||||
return value;
|
||||
}
|
||||
|
||||
Translator::Translator(){
|
||||
std::ifstream file("Res/lang/_lang.txt");
|
||||
std::string s;
|
||||
|
||||
if(file){
|
||||
while(std::getline(file,s)){
|
||||
if (!s.size()) continue;
|
||||
if (s[s.size()-1] == '\r') s.erase(s.size()-1); //Handle DOS files
|
||||
size_t found = s.find('=');
|
||||
if (found == string::npos) continue;
|
||||
string s1 = s.substr(0,found);
|
||||
string s2 = s.substr(found+1);
|
||||
Add(s1,s2);
|
||||
}
|
||||
file.close();
|
||||
}
|
||||
}
|
||||
|
||||
string _(string toTranslate){
|
||||
Translator * t = Translator::GetInstance();
|
||||
return t->translate(toTranslate);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user