Changed language finding again
svn-id: r25525
This commit is contained in:
parent
bd1a85582c
commit
15f52b96b8
7 changed files with 28 additions and 7 deletions
|
@ -79,6 +79,12 @@ void Draw_v2::printText(void) {
|
||||||
if ((_vm->_game->_totTextData == 0) || (_vm->_game->_totTextData->dataPtr == 0))
|
if ((_vm->_game->_totTextData == 0) || (_vm->_game->_totTextData->dataPtr == 0))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (_vm->_global->_languageWanted != _vm->_global->_language) {
|
||||||
|
warning("Your game version doesn't support the requested language, "
|
||||||
|
"using the first one available (%d)", _vm->_global->_language);
|
||||||
|
_vm->_global->_languageWanted = _vm->_global->_language;
|
||||||
|
}
|
||||||
|
|
||||||
size = _vm->_game->_totTextData->items[index].size;
|
size = _vm->_game->_totTextData->items[index].size;
|
||||||
dataPtr = _vm->_game->_totTextData->dataPtr + _vm->_game->_totTextData->items[index].offset;
|
dataPtr = _vm->_game->_totTextData->dataPtr + _vm->_game->_totTextData->items[index].offset;
|
||||||
ptr = dataPtr;
|
ptr = dataPtr;
|
||||||
|
@ -652,6 +658,12 @@ void Draw_v2::spriteOperation(int16 operation) {
|
||||||
if ((_fontIndex >= 4) || (_fontToSprite[_fontIndex].sprite == -1)) {
|
if ((_fontIndex >= 4) || (_fontToSprite[_fontIndex].sprite == -1)) {
|
||||||
if (_fonts[_fontIndex]->extraData == 0) {
|
if (_fonts[_fontIndex]->extraData == 0) {
|
||||||
if (((int8) _textToPrint[0]) == -1) {
|
if (((int8) _textToPrint[0]) == -1) {
|
||||||
|
if (_vm->_global->_languageWanted != _vm->_global->_language) {
|
||||||
|
warning("Your game version doesn't support the requested language, "
|
||||||
|
"using the first one available (%d)",
|
||||||
|
_vm->_global->_language);
|
||||||
|
_vm->_global->_languageWanted = _vm->_global->_language;
|
||||||
|
}
|
||||||
dataBuf = _vm->_game->_totTextData->dataPtr + _textToPrint[1] + 1;
|
dataBuf = _vm->_game->_totTextData->dataPtr + _textToPrint[1] + 1;
|
||||||
len = *dataBuf++;
|
len = *dataBuf++;
|
||||||
for (i = 0; i < len; i++) {
|
for (i = 0; i < len; i++) {
|
||||||
|
|
|
@ -54,6 +54,8 @@ Game::Game(GobEngine *vm) : _vm(vm) {
|
||||||
_extHandle = 0;
|
_extHandle = 0;
|
||||||
_collisionAreas = 0;
|
_collisionAreas = 0;
|
||||||
_shouldPushColls = 0;
|
_shouldPushColls = 0;
|
||||||
|
|
||||||
|
_foundTotLoc = false;
|
||||||
_totTextData = 0;
|
_totTextData = 0;
|
||||||
|
|
||||||
// Collisions stack
|
// Collisions stack
|
||||||
|
@ -690,28 +692,29 @@ int16 Game::openLocTextFile(char *locTextFile, int language) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *Game::loadLocTexts(void) {
|
char *Game::loadLocTexts(void) {
|
||||||
static bool found = false;
|
|
||||||
char locTextFile[20];
|
char locTextFile[20];
|
||||||
int16 handle;
|
int16 handle;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
strcpy(locTextFile, _curTotFile);
|
strcpy(locTextFile, _curTotFile);
|
||||||
|
|
||||||
handle = openLocTextFile(locTextFile, _vm->_global->_language);
|
handle = openLocTextFile(locTextFile, _vm->_global->_languageWanted);
|
||||||
if ((handle < 0) && !found) {
|
if (handle >= 0) {
|
||||||
|
_foundTotLoc = true;
|
||||||
|
_vm->_global->_language = _vm->_global->_languageWanted;
|
||||||
|
}
|
||||||
|
else if (!_foundTotLoc) {
|
||||||
for (i = 0; i < 10; i++) {
|
for (i = 0; i < 10; i++) {
|
||||||
handle = openLocTextFile(locTextFile, i);
|
handle = openLocTextFile(locTextFile, i);
|
||||||
if (handle >= 0) {
|
if (handle >= 0) {
|
||||||
warning("Your game version doesn't support the requested language, using the first one available (%d)", i);
|
|
||||||
_vm->_global->_language = i;
|
_vm->_global->_language = i;
|
||||||
found = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
debugC(1, kDebugFileIO, "Using language %d for %s", _vm->_global->_language, _curTotFile);
|
||||||
|
|
||||||
if (handle >= 0) {
|
if (handle >= 0) {
|
||||||
found = true;
|
|
||||||
_vm->_dataio->closeData(handle);
|
_vm->_dataio->closeData(handle);
|
||||||
return _vm->_dataio->getData(locTextFile);
|
return _vm->_dataio->getData(locTextFile);
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,6 +137,7 @@ public:
|
||||||
Collision *_collisionAreas;
|
Collision *_collisionAreas;
|
||||||
Collision *_collStack[5];
|
Collision *_collStack[5];
|
||||||
|
|
||||||
|
bool _foundTotLoc;
|
||||||
TotTextTable *_totTextData;
|
TotTextTable *_totTextData;
|
||||||
|
|
||||||
char _curTotFile[14];
|
char _curTotFile[14];
|
||||||
|
|
|
@ -141,8 +141,10 @@ void Game_v2::playTot(int16 skipPlay) {
|
||||||
if (READ_LE_UINT32(filePtr) == 0) {
|
if (READ_LE_UINT32(filePtr) == 0) {
|
||||||
_totTextData->dataPtr = loadLocTexts();
|
_totTextData->dataPtr = loadLocTexts();
|
||||||
totTextLoc = true;
|
totTextLoc = true;
|
||||||
} else
|
} else {
|
||||||
_totTextData->dataPtr = (_totFileData + READ_LE_UINT32((char *)_totFileData + 0x30));
|
_totTextData->dataPtr = (_totFileData + READ_LE_UINT32((char *)_totFileData + 0x30));
|
||||||
|
_vm->_global->_language = _vm->_global->_languageWanted;
|
||||||
|
}
|
||||||
|
|
||||||
_totTextData->items = 0;
|
_totTextData->items = 0;
|
||||||
if (_totTextData->dataPtr != 0) {
|
if (_totTextData->dataPtr != 0) {
|
||||||
|
|
|
@ -54,6 +54,7 @@ Global::Global(GobEngine *vm) : _vm(vm) {
|
||||||
/* Language */
|
/* Language */
|
||||||
_disableLangCfg = 0x8000;
|
_disableLangCfg = 0x8000;
|
||||||
_language = 0x8000;
|
_language = 0x8000;
|
||||||
|
_languageWanted = 0x8000;
|
||||||
|
|
||||||
/* Timer variables */
|
/* Timer variables */
|
||||||
_startTime = 0;
|
_startTime = 0;
|
||||||
|
|
|
@ -87,6 +87,7 @@ public:
|
||||||
|
|
||||||
uint16 _disableLangCfg;
|
uint16 _disableLangCfg;
|
||||||
uint16 _language;
|
uint16 _language;
|
||||||
|
uint16 _languageWanted;
|
||||||
|
|
||||||
// Timer variables
|
// Timer variables
|
||||||
int32 _startTime;
|
int32 _startTime;
|
||||||
|
|
|
@ -694,6 +694,7 @@ int GobEngine::init() {
|
||||||
_global->_language = 2;
|
_global->_language = 2;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
_global->_languageWanted = _global->_language;
|
||||||
|
|
||||||
// FIXME: This is the ugly way of reducing redraw overhead. It works
|
// FIXME: This is the ugly way of reducing redraw overhead. It works
|
||||||
// well for 320x200 but it's unclear how well it will work for
|
// well for 320x200 but it's unclear how well it will work for
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue