aboutsummaryrefslogtreecommitdiff
path: root/scumm/dialogs.cpp
diff options
context:
space:
mode:
authorMax Horn2003-05-13 23:33:01 +0000
committerMax Horn2003-05-13 23:33:01 +0000
commit0ee0e7f6347def3b9b32f62f37584a3a19131913 (patch)
treef3e48da06db97397210f2c6f85ad1ec1c4024e59 /scumm/dialogs.cpp
parent796fa748062564b4bf1993b6a150ce1d2da91259 (diff)
downloadscummvm-rg350-0ee0e7f6347def3b9b32f62f37584a3a19131913.tar.gz
scummvm-rg350-0ee0e7f6347def3b9b32f62f37584a3a19131913.tar.bz2
scummvm-rg350-0ee0e7f6347def3b9b32f62f37584a3a19131913.zip
cleanup
svn-id: r7488
Diffstat (limited to 'scumm/dialogs.cpp')
-rw-r--r--scumm/dialogs.cpp114
1 files changed, 13 insertions, 101 deletions
diff --git a/scumm/dialogs.cpp b/scumm/dialogs.cpp
index ef6548839d..435e58a89d 100644
--- a/scumm/dialogs.cpp
+++ b/scumm/dialogs.cpp
@@ -142,7 +142,7 @@ static ResString string_map_table_v6[] = {
{98, "Play"},
{99, "Cancel"},
{100, "Quit"},
- {101, "Ok"},
+ {101, "OK"},
{93, "Game paused"},
};
@@ -155,7 +155,7 @@ static ResString string_map_table_v5[] = {
{9, "Play"},
{10, "Cancel"},
{11, "Quit"},
- {12, "Ok"},
+ {12, "OK"},
{4, "Game paused"}
};
#endif
@@ -170,124 +170,36 @@ void ScummDialog::addResText(int x, int y, int w, int h, int resID) {
const ScummVM::String ScummDialog::queryResString(int stringno) {
- char *result;
- int string;
+ byte *result;
if (stringno == 0)
return String();
if (_scumm->_features & GF_AFTER_V7)
- string = _scumm->readVar(string_map_table_v7[stringno - 1].num);
+ result = _scumm->getStringAddressVar(string_map_table_v7[stringno - 1].num);
else if (_scumm->_features & GF_AFTER_V6)
- string = _scumm->readVar(string_map_table_v6[stringno - 1].num);
+ result = _scumm->getStringAddressVar(string_map_table_v6[stringno - 1].num);
else
- string = string_map_table_v5[stringno - 1].num;
+ result = _scumm->getStringAddress(string_map_table_v5[stringno - 1].num);
- result = (char *)_scumm->getStringAddress(string);
if (result && *result == '/') {
byte tmp[256];
- _scumm->translateText((byte *)result, tmp);
- strcpy(result, (char *)tmp);
+ _scumm->translateText(result, tmp);
+ strcpy((char *)result, (char *)tmp);
}
- if (!result || *result == '\0') { // Gracelessly degrade to english :)
- if (_scumm->_features & GF_AFTER_V6)
- result = string_map_table_v6[stringno - 1].string;
- else
- result = string_map_table_v5[stringno - 1].string;
+ if (!result || *result == '\0') { // Gracelessly degrade to english :)
+ return string_map_table_v5[stringno - 1].string;
}
// Convert to a proper string (take care of FF codes)
- int value;
byte chr;
String tmp;
-
while ((chr = *result++)) {
if (chr == 0xFF) {
- chr = *result++;
- switch (chr) {
- case 4: { // add value
- value = _scumm->readVar(READ_LE_UINT16(result));
- if (value < 0) {
- tmp += '-';
- value = -value;
- }
-
- int flag = 0;
- int max = 10000;
- do {
- if (value >= max || flag) {
- tmp += value / max + '0';
- value %= max;
- flag = 1;
- }
- max /= 10;
- if (max == 1)
- flag = 1;
- } while (max);
- result += 2;
- break;
- }
-
- case 5: { //add verb
- value = _scumm->readVar(READ_LE_UINT16(result));
- int i;
- if (!value)
- break;
-
- for (i = 1; i < _scumm->_maxVerbs; i++) {
- if (value == _scumm->_verbs[i].verbid && !_scumm->_verbs[i].type && !_scumm->_verbs[i].saveid) {
- char *verb = (char *)_scumm->getResourceAddress(rtVerb, i);
- if (verb) {
- tmp += verb;
- }
- break;
- }
- }
- result += 2;
- break;
- }
-
- case 6: { // add object or actor name
- value = _scumm->readVar(READ_LE_UINT16(result));
- if (!value)
- break;
-
- char *name = (char *)_scumm->getObjOrActorName(value);
- if (name) {
- tmp += name;
- }
- result += 2;
- break;
- }
- case 7: { // add string
- value = READ_LE_UINT16(result);
- if (_scumm->_features & GF_AFTER_V6 || _scumm->_gameId == GID_INDY3_256)
- value = _scumm->readVar(value);
-
- if (value) {
- char *str = (char *)_scumm->getStringAddress(value);
- if (str) {
- tmp += str;
- }
- }
- result += 2;
- break;
- }
- // Do these ever occur in the Gui?
- case 9:
- case 10:
- case 12:
- case 13:
- case 14:
- result += 2;
- default:
- warning("Ignoring unknown resource string of type %d", (int)chr);
- }
- } else {
- if (chr != '@') {
- tmp += chr;
- }
+ result += 3;
+ } else if (chr != '@') {
+ tmp += chr;
}
}
return tmp;