[Scummvm-cvs-logs] SF.net SVN: scummvm: [22105] scummvm/trunk/engines/kyra
vinterstum at users.sourceforge.net
vinterstum at users.sourceforge.net
Sun Apr 23 07:44:03 CEST 2006
Revision: 22105
Author: vinterstum
Date: 2006-04-23 07:43:16 -0700 (Sun, 23 Apr 2006)
ViewCVS: http://svn.sourceforge.net/scummvm/?rev=22105&view=rev
Log Message:
-----------
Uses kyra.dat for GUI strings instead of hardcoding them, which means localized strings are now supported for the menus. Note that the size of the menus are not yet calculated to account for the longer strings in some languages
Modified Paths:
--------------
scummvm/trunk/engines/kyra/gui.cpp
scummvm/trunk/engines/kyra/kyra.h
scummvm/trunk/engines/kyra/resource.h
scummvm/trunk/engines/kyra/staticres.cpp
Modified: scummvm/trunk/engines/kyra/gui.cpp
===================================================================
--- scummvm/trunk/engines/kyra/gui.cpp 2006-04-23 14:38:25 UTC (rev 22104)
+++ scummvm/trunk/engines/kyra/gui.cpp 2006-04-23 14:43:16 UTC (rev 22105)
@@ -405,10 +405,95 @@
return 0;
}
+void KyraEngine::setGUILabels() {
+ int offset = 0;
+ int walkspeedGarbageOffset = 36;
+
+ if (_features & GF_TALKIE) {
+ if (_features & GF_ENGLISH) {
+ offset = 52;
+ } else if (_features & GF_GERMAN) {
+ offset = 30;
+ } else if (_features & GF_FRENCH) {
+ offset = 6;
+ }
+ walkspeedGarbageOffset = 48;
+ }
+
+ assert(offset + 27 < _guiStringsSize);
+
+ // The Legend of Kyrandia
+ _menu[0].menuName = _guiStrings[0];
+ // Load a Game
+ _menu[0].item[0].itemString = _guiStrings[1];
+ // Save a Game
+ _menu[0].item[1].itemString = _guiStrings[2];
+ // Game controls
+ _menu[0].item[2].itemString = _guiStrings[3];
+ // Quit playing
+ _menu[0].item[3].itemString = _guiStrings[4];
+ // Resume game
+ _menu[0].item[4].itemString = _guiStrings[5];
+
+ // Cancel
+ _menu[2].item[5].itemString = _guiStrings[10];
+
+ // Enter a description of your saved game:
+ _menu[3].menuName = _guiStrings[11];
+ // Save
+ _menu[3].item[0].itemString = _guiStrings[12];
+ // Cancel
+ _menu[3].item[1].itemString = _guiStrings[10];
+
+ // Rest in peace, Brandon
+ _menu[4].menuName = _guiStrings[13];
+ // Load a game
+ _menu[4].item[0].itemString = _guiStrings[1];
+ // Quit playing
+ _menu[4].item[1].itemString = _guiStrings[4];
+
+ // Game Controls
+ _menu[5].menuName = _guiStrings[6];
+ // Yes
+ _menu[1].item[0].itemString = _guiStrings[22 + offset];
+ // No
+ _menu[1].item[1].itemString = _guiStrings[23 + offset];
+
+ // Music is
+ _menu[5].item[0].labelString = _guiStrings[26 + offset];
+ // Sounds are
+ _menu[5].item[1].labelString = _guiStrings[27 + offset];
+ // Walk speed
+ _menu[5].item[2].labelString = &_guiStrings[24 + offset][walkspeedGarbageOffset];
+ // Text speed
+ _menu[5].item[4].labelString = _guiStrings[25 + offset];
+ // Main Menu
+ _menu[5].item[5].itemString = _guiStrings[19 + offset];
+
+ if (_features & GF_TALKIE) {
+ // Text & Voice
+ _voiceTextString = _guiStrings[28 + offset];
+ }
+ _textSpeedString = _guiStrings[25 + offset];
+ _onString = _guiStrings[20 + offset];
+ _offString = _guiStrings[21 + offset];
+}
+
int KyraEngine::buttonMenuCallback(Button *caller) {
_displayMenu = true;
- // XXX setLabels
+ assert(_guiStrings);
+ assert(_configStrings);
+
+ /*
+ for (int i = 0; i < _guiStringsSize; i++)
+ debug("GUI string %i: %s", i, _guiStrings[i]);
+
+ for (int i = 0; i < _configStringsSize; i++)
+ debug("Config string %i: %s", i, _configStrings[i]);
+ */
+
+ setGUILabels();
if (_currentCharacter->sceneId == 210 && _deathHandler == 0xFF) {
snd_playSoundEffect(0x36);
return 0;
@@ -685,8 +770,8 @@
_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
_screen->savePageToDisk("SEENPAGE.TMP", 0);
- _menu[2].menuName = "Select a position to save to:";
- _specialSavegameString = "[ EMPTY SLOT ]";
+ _menu[2].menuName = _guiStrings[8]; // Select a position to save to:
+ _specialSavegameString = _guiStrings[9]; // [ EMPTY SLOT ]
for (int i = 0; i < 5; i++)
_menu[2].item[i].callback = &KyraEngine::gui_saveGame;
@@ -729,8 +814,8 @@
_screen->loadPageFromDisk("SEENPAGE.TMP", 0);
_screen->savePageToDisk("SEENPAGE.TMP", 0);
- _specialSavegameString = "[ START A NEW GAME ]";
- _menu[2].menuName = "Which game would you like to reload?";
+ _specialSavegameString = _newGameString[0]; //[ START A NEW GAME ]
+ _menu[2].menuName = _guiStrings[7]; // Which game would you like to reload?
for (int i = 0; i < 5; i++)
_menu[2].item[i].callback = &KyraEngine::gui_loadGame;
@@ -879,7 +964,7 @@
debugC(9, kDebugLevelGUI, "KyraEngine::gui_quitPlaying()");
processMenuButton(button);
- if (gui_quitConfirm("Are you sure you want to quit playing?"))
+ if (gui_quitConfirm(_guiStrings[14])) // Are you sure you want to quit playing?
quitGame();
else {
initMenu(_menu[_toplevelMenu]);
@@ -946,14 +1031,14 @@
_menu[5].item[i].width = 94;
}
- _menu[5].item[3].labelString = "Voice / Text ";
+ _menu[5].item[3].labelString = _voiceTextString; //"Voice / Text "
_menu[5].item[3].callback = &KyraEngine::gui_controlsChangeVoice;
} else {
_menu[5].height = 136;
_menu[5].item[5].y = 110;
_menu[5].item[4].enabled = 0;
- _menu[5].item[3].labelString = "Text speed ";
+ _menu[5].item[3].labelString = _textSpeedString; // "Text speed "
_menu[5].item[3].callback = &KyraEngine::gui_controlsChangeText;
}
@@ -985,40 +1070,42 @@
debugC(9, kDebugLevelGUI, "KyraEngine::gui_setupControls()");
if (_configMusic)
- menu.item[0].itemString = "On";
+ menu.item[0].itemString = _onString; //"On"
else
- menu.item[0].itemString = "Off";
+ menu.item[0].itemString = _offString; //"Off"
if (_configSounds)
- menu.item[1].itemString = "On";
+ menu.item[1].itemString = _onString; //"On"
else
- menu.item[1].itemString = "Off";
+ menu.item[1].itemString = _offString; //"Off"
switch (_configWalkspeed) {
case 0:
- menu.item[2].itemString = "Slowest";
+ menu.item[2].itemString = _configStrings[0]; //"Slowest"
break;
case 1:
- menu.item[2].itemString = "Slow";
+ menu.item[2].itemString = _configStrings[1]; //"Slow"
break;
case 2:
- menu.item[2].itemString = "Normal";
+ menu.item[2].itemString = _configStrings[2]; //"Normal"
break;
case 3:
- menu.item[2].itemString = "Fast";
+ menu.item[2].itemString = _configStrings[3]; //"Fast"
break;
case 4:
- menu.item[2].itemString = "Fastest";
+ menu.item[2].itemString = _configStrings[4]; //"Fastest"
break;
default:
menu.item[2].itemString = "ERROR";
}
int textControl = 3;
+ int clickableOffset = 8;
if (_features & GF_TALKIE) {
textControl = 4;
-
+ clickableOffset = 11;
+
if (_configVoice == 0)
_menu[5].item[4].enabled = 1;
else
@@ -1026,13 +1113,13 @@
switch (_configVoice) {
case 0:
- menu.item[3].itemString = "Text only";
+ menu.item[3].itemString = _configStrings[5]; //"Text only"
break;
case 1:
- menu.item[3].itemString = "Voice & Text";
+ menu.item[3].itemString = _configStrings[6]; //"Voice & Text"
break;
case 2:
- menu.item[3].itemString = "Voice only";
+ menu.item[3].itemString = _configStrings[7]; //"Voice only"
break;
default:
menu.item[3].itemString = "ERROR";
@@ -1041,16 +1128,16 @@
switch (_configTextspeed) {
case 0:
- menu.item[textControl].itemString = "Slow";
+ menu.item[textControl].itemString = _configStrings[1]; //"Slow"
break;
case 1:
- menu.item[textControl].itemString = "Normal";
+ menu.item[textControl].itemString = _configStrings[2]; //"Normal"
break;
case 2:
- menu.item[textControl].itemString = "Fast";
+ menu.item[textControl].itemString = _configStrings[3]; //"Fast"
break;
case 3:
- menu.item[textControl].itemString = "Clickable";
+ menu.item[textControl].itemString = _configStrings[clickableOffset]; //"Clickable"
break;
default:
menu.item[textControl].itemString = "ERROR";
Modified: scummvm/trunk/engines/kyra/kyra.h
===================================================================
--- scummvm/trunk/engines/kyra/kyra.h 2006-04-23 14:38:25 UTC (rev 22104)
+++ scummvm/trunk/engines/kyra/kyra.h 2006-04-23 14:43:16 UTC (rev 22105)
@@ -635,7 +635,8 @@
int drawShadedBoxCallback(Button *button);
void calcCoords(Menu &menu);
void initMenu(Menu menu);
-
+ void setGUILabels();
+
Button *initButton(Button *list, Button *newButton);
void processButtonList(Button *list);
void processButton(Button *button);
@@ -873,7 +874,13 @@
const char * const*_fullFlask;
const char * const*_veryClever;
const char * const*_homeString;
+ const char * const*_newGameString;
+ const char *_voiceTextString;
+ const char *_textSpeedString;
+ const char *_onString;
+ const char *_offString;
+
int _itemList_Size;
int _takenList_Size;
int _placedList_Size;
@@ -892,9 +899,16 @@
int _fullFlask_Size;
int _veryClever_Size;
int _homeString_Size;
+ int _newGameString_Size;
const char * const*_characterImageTable;
int _characterImageTableSize;
+
+ const char * const*_guiStrings;
+ int _guiStringsSize;
+
+ const char * const*_configStrings;
+ int _configStringsSize;
Shape *_defaultShapeTable;
int _defaultShapeTableSize;
Modified: scummvm/trunk/engines/kyra/resource.h
===================================================================
--- scummvm/trunk/engines/kyra/resource.h 2006-04-23 14:38:25 UTC (rev 22104)
+++ scummvm/trunk/engines/kyra/resource.h 2006-04-23 14:43:16 UTC (rev 22105)
@@ -139,7 +139,8 @@
kFullFlaskString,
kVeryCleverString,
-
+ kNewGameString,
+
kDefaultShapes,
kHealing1Shapes,
kHealing2Shapes,
@@ -155,6 +156,9 @@
kPaletteList,
+ kGUIStrings,
+ kConfigStrings,
+
kMaxResIDs
};
Modified: scummvm/trunk/engines/kyra/staticres.cpp
===================================================================
--- scummvm/trunk/engines/kyra/staticres.cpp 2006-04-23 14:38:25 UTC (rev 22104)
+++ scummvm/trunk/engines/kyra/staticres.cpp 2006-04-23 14:43:16 UTC (rev 22105)
@@ -28,7 +28,7 @@
namespace Kyra {
-#define RESFILE_VERSION 11
+#define RESFILE_VERSION 12
#define GAME_FLAGS (GF_FLOPPY | GF_TALKIE | GF_DEMO | GF_AUDIOCD)
#define LANGUAGE_FLAGS (GF_ENGLISH | GF_FRENCH | GF_GERMAN | GF_SPANISH | GF_LNGUNK)
@@ -100,7 +100,12 @@
{ kFlaskFullString, kLanguageList, "FLASKFULL." },
{ kFullFlaskString, kLanguageList, "FULLFLASK." },
{ kVeryCleverString, kLanguageList, "VERYCLEVER." },
+ { kNewGameString, kLanguageList, "NEWGAME." },
+ // GUI strings table
+ { kGUIStrings, kLanguageList, "GUISTRINGS." },
+ { kConfigStrings, kLanguageList, "CONFIGSTRINGS." },
+
// ROOM table/filenames
{ Kyra::kRoomList, StaticResource::kRoomList, "ROOM-TABLE.ROOM" },
{ kRoomFilenames, kStringList, "ROOM-FILENAMES.TXT" },
@@ -567,7 +572,8 @@
_fullFlask = _staticres->loadStrings(kFullFlaskString, _fullFlask_Size);
_veryClever = _staticres->loadStrings(kVeryCleverString, _veryClever_Size);
_homeString = _staticres->loadStrings(kOutroHomeString, _homeString_Size);
-
+ _newGameString = _staticres->loadStrings(kNewGameString, _newGameString_Size);
+
_healingShapeTable = _staticres->loadShapeTable(kHealing1Shapes, _healingShapeTableSize);
_healingShape2Table = _staticres->loadShapeTable(kHealing2Shapes, _healingShape2TableSize);
_posionDeathShapeTable = _staticres->loadShapeTable(kPoisonDeathShapes, _posionDeathShapeTableSize);
@@ -588,6 +594,9 @@
_specialPalettes = _staticres->loadPaletteTable(kPaletteList, temp);
+ _guiStrings = _staticres->loadStrings(kGUIStrings, _guiStringsSize);
+ _configStrings = _staticres->loadStrings(kConfigStrings, _configStringsSize);
+
// copied static res
// room list
@@ -1067,30 +1076,30 @@
};
Menu KyraEngine::_menu[] = {
- { -1, -1, 208, 136, 248, 249, 250, "The Legend of Kyrandia", 251, -1, 8, 0, 5, -1, -1, -1, -1,
+ { -1, -1, 208, 136, 248, 249, 250, 0, 251, -1, 8, 0, 5, -1, -1, -1, -1,
{
- {1, 0, 0, "Load a Game", -1, -1, 30, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 30, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Save this Game", -1, -1, 47, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 47, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_saveGameMenu, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Game Controls", -1, -1, 64, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 64, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_gameControlsMenu, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Quit playing", -1, -1, 81, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 81, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Resume game", 86, 0, 110, 92, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 86, 0, 110, 92, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_resumeGame, -1, 0, 0, 0, 0, 0}
}
},
{ -1, -1, 288, 56, 248, 249, 250, 0, 254,-1, 8, 0, 2, -1, -1, -1, -1,
{
- {1, 0, 0, "Yes", 24, 0, 30, 72, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 24, 0, 30, 72, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_quitConfirmYes, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "No", 192, 0, 30, 72, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 192, 0, 30, 72, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_quitConfirmNo, -1, 0, 0, 0, 0, 0}
}
},
@@ -1111,46 +1120,46 @@
{1, 0, 0, 0, -1, 255, 107, 256, 15, 252, 253, 5, 0,
248, 249, 250, 0, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Cancel", 184, 0, 134, 88, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 184, 0, 134, 88, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0},
}
},
- { -1, -1, 288, 67, 248, 249, 250, "Enter a description of your saved game:", 251, -1, 8, 0, 3, -1, -1, -1, -1,
+ { -1, -1, 288, 67, 248, 249, 250, 0, 251, -1, 8, 0, 3, -1, -1, -1, -1,
{
- {1, 0, 0, "Save", 24, 0, 44, 72, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 24, 0, 44, 72, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_savegameConfirm, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Cancel", 192, 0, 44, 72, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 192, 0, 44, 72, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, 0, 0, 0, 0, 0}
}
},
- { -1, -1, 208, 76, 248, 249, 250, "Rest in peace, Brandon.", 251, -1, 8, 0, 2, -1, -1, -1, -1,
+ { -1, -1, 208, 76, 248, 249, 250, 0, 251, -1, 8, 0, 2, -1, -1, -1, -1,
{
- {1, 0, 0, "Load a game", -1, -1, 30, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 30, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_loadGameMenu, -1, 0, 0, 0, 0, 0},
- {1, 0, 0, "Quit playing", -1, -1, 47, 148, 15, 252, 253, 24, 0,
+ {1, 0, 0, 0, -1, -1, 47, 148, 15, 252, 253, 24, 0,
248, 249, 250, &KyraEngine::gui_quitPlaying, -1, 0, 0, 0, 0, 0}
}
},
- { -1, -1, 208, 153, 248, 249, 250, "Game Controls", 251, -1, 8, 0, 6, -1, -1, -1, -1,
+ { -1, -1, 208, 153, 248, 249, 250, 0, 251, -1, 8, 0, 6, -1, -1, -1, -1,
{
{1, 0, 0, 0, 110, 0, 30, 64, 15, 252, 253, 5, 0,
- 248, 249, 250, &KyraEngine::gui_controlsChangeMusic, -1, "Music is ", 34, 32, 0, 0},
+ 248, 249, 250, &KyraEngine::gui_controlsChangeMusic, -1, 0, 34, 32, 0, 0},
{1, 0, 0, 0, 110, 0, 47, 64, 15, 252, 253, 5, 0,
- 248, 249, 250, &KyraEngine::gui_controlsChangeSounds, -1, "Sounds are ", 34, 49, 0, 0},
+ 248, 249, 250, &KyraEngine::gui_controlsChangeSounds, -1, 0, 34, 49, 0, 0},
{1, 0, 0, 0, 110, 0, 64, 64, 15, 252, 253, 5, 0,
- 248, 249, 250, &KyraEngine::gui_controlsChangeWalk, -1, "Walk speed ", 34, 66, 0, 0},
+ 248, 249, 250, &KyraEngine::gui_controlsChangeWalk, -1, 0, 34, 66, 0, 0},
{1, 0, 0, 0, 110, 0, 81, 64, 15, 252, 253, 5, 0,
248, 249, 250, 0, -1, 0, 34, 83, 0, 0 },
{1, 0, 0, 0, 110, 0, 98, 64, 15, 252, 253, 5, 0,
- 248, 249, 250, &KyraEngine::gui_controlsChangeText, -1, "Text speed ", 34, 100, 0, 0 },
+ 248, 249, 250, &KyraEngine::gui_controlsChangeText, -1, 0, 34, 100, 0, 0 },
- {1, 0, 0, "Main Menu", 64, 0, 127, 92, 15, 252, 253, -1, 255,
+ {1, 0, 0, 0, 64, 0, 127, 92, 15, 252, 253, -1, 255,
248, 249, 250, &KyraEngine::gui_cancelSubMenu, -1, -0, 0, 0, 0, 0}
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list