[Scummvm-cvs-logs] CVS: scummvm/scumm actor.cpp,1.235,1.236 dialogs.cpp,1.105,1.106 dialogs.h,1.38,1.39 script_v6.cpp,1.316,1.317 script_v6he.cpp,2.37,2.38 script_v8.cpp,2.236,2.237 scumm.h,1.377,1.378 string.cpp,1.199,1.200
Max Horn
fingolfin at users.sourceforge.net
Sun Mar 14 18:34:46 CET 2004
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui launcher.cpp,1.88,1.89 options.cpp,1.50,1.51 options.h,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga binread.cpp,1.1,1.2 gamedesc.cpp,1.2,1.3 gamedesc.h,1.1,1.2 resfile.cpp,1.1,1.2 resfile.h,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19082/scumm
Modified Files:
actor.cpp dialogs.cpp dialogs.h script_v6.cpp script_v6he.cpp
script_v8.cpp scumm.h string.cpp
Log Message:
...and mor. Next big thing should be to document the overlay stuff, but that'll have to wait till after I slept :-)
Index: actor.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/actor.cpp,v
retrieving revision 1.235
retrieving revision 1.236
diff -u -d -r1.235 -r1.236
--- actor.cpp 24 Feb 2004 13:59:29 -0000 1.235
+++ actor.cpp 15 Mar 2004 02:21:04 -0000 1.236
@@ -1147,9 +1147,7 @@
void ScummEngine::actorTalk() {
Actor *a;
- _msgPtrToAdd = _charsetBuffer;
- _messagePtr = addMessageToStack(_messagePtr);
- assert((int)(_msgPtrToAdd - _charsetBuffer) < (int)(sizeof(_charsetBuffer)));
+ _messagePtr = addMessageToStack(_messagePtr, _charsetBuffer, sizeof(_charsetBuffer));
// FIXME: Workaround for bugs #770039 and #770049
if (_gameId == GID_LOOM || _gameId == GID_LOOM256) {
Index: dialogs.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.cpp,v
retrieving revision 1.105
retrieving revision 1.106
diff -u -d -r1.105 -r1.106
--- dialogs.cpp 24 Feb 2004 22:39:39 -0000 1.105
+++ dialogs.cpp 15 Mar 2004 02:21:04 -0000 1.106
@@ -395,10 +395,6 @@
#pragma mark -
enum {
- kOKCmd = 'ok '
-};
-
-enum {
kKeysCmd = 'KEYS'
};
@@ -413,12 +409,14 @@
// Add the buttons
//
#ifdef _WIN32_WCE
- addButton(_w - kButtonWidth - 8, _h - 24 - 4, "OK", GUI::OptionsDialog::kOKCmd, 'O');
- addButton(_w - 2 * kButtonWidth - 12, _h - 24 - 4, "Cancel", kCloseCmd, 'C');
- addButton(_w - 3 * kButtonWidth - 16, _h - 24 - 4, "Keys", kKeysCmd, 'K');
+ addButton(_w - kButtonWidth - 8, _h - 24 - 4, "Save", GUI::OptionsDialog::kSaveCmd, 'S');
+ addButton(_w - 2 * kButtonWidth - 12, _h - 24 - 4, "Apply", GUI::OptionsDialog::kApplyCmd, 'A');
+ addButton(_w - 3 * kButtonWidth - 16, _h - 24 - 4, "Revert", GUI::OptionsDialog::kRevertCmd, 'R');
+ addButton(_w - 4 * kButtonWidth - 16, _h - 24 - 4, "Keys", kKeysCmd, 'K');
#else
- addButton(_w - kButtonWidth-8, _h - 24, "OK", GUI::OptionsDialog::kOKCmd, 'O');
- addButton(_w - 2 * kButtonWidth-12, _h - 24, "Cancel", kCloseCmd, 'C');
+ addButton(_w - kButtonWidth - 8, _h - 24, "Save", GUI::OptionsDialog::kSaveCmd, 'S');
+ addButton(_w - 2 * kButtonWidth - 12, _h - 24, "Apply", GUI::OptionsDialog::kApplyCmd, 'A');
+ addButton(_w - 3 * kButtonWidth - 16, _h - 24, "Revert", GUI::OptionsDialog::kRevertCmd, 'R');
#endif
//
@@ -446,24 +444,8 @@
#endif
}
-void ConfigDialog::open() {
- GUI_OptionsDialog::open();
-
- // update checkboxes, too
- subtitlesCheckbox->setState(ConfMan.getBool("subtitles"));
-}
-
-void ConfigDialog::close() {
-
- if (getResult()) {
- // Subtitles
- ConfMan.set("subtitles", subtitlesCheckbox->getState(), _domain);
- // Sync with current setting
- if (_vm->_version >= 7)
- _vm->VAR(_vm->VAR_VOICE_MODE) = subtitlesCheckbox->getState();
- }
-
- GUI_OptionsDialog::close();
+void ConfigDialog::applySettings() {
+ ConfigDialog::applySettings();
// Sync the engine with the config manager
int soundVolumeMaster = ConfMan.getInt("master_volume");
@@ -479,8 +461,25 @@
_vm->_mixer->setVolume(soundVolumeSfx * soundVolumeMaster / 255);
_vm->_mixer->setMusicVolume(soundVolumeMusic);
+
+ // Sync with current setting
+ if (_vm->_version >= 7)
+ _vm->VAR(_vm->VAR_VOICE_MODE) = ConfMan.getBool("subtitles");
}
+void ConfigDialog::loadSettings() {
+ GUI_OptionsDialog::loadSettings();
+
+ // Update subtitles checkbox
+ subtitlesCheckbox->setState(ConfMan.getBool("subtitles"));
+}
+
+void ConfigDialog::saveSettings() {
+ // Subtitles
+ ConfMan.set("subtitles", subtitlesCheckbox->getState(), _domain);
+
+ GUI_OptionsDialog::saveSettings();
+}
void ConfigDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
switch (cmd) {
Index: dialogs.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/dialogs.h,v
retrieving revision 1.38
retrieving revision 1.39
diff -u -d -r1.38 -r1.39
--- dialogs.h 26 Jan 2004 07:40:14 -0000 1.38
+++ dialogs.h 15 Mar 2004 02:21:04 -0000 1.39
@@ -112,12 +112,15 @@
ConfigDialog(ScummEngine *scumm);
~ConfigDialog();
- virtual void open();
- virtual void close();
virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
protected:
GUI::CheckboxWidget *subtitlesCheckbox;
+
+
+ virtual void applySettings();
+ virtual void loadSettings();
+ virtual void saveSettings();
};
class InfoDialog : public ScummDialog {
Index: script_v6.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6.cpp,v
retrieving revision 1.316
retrieving revision 1.317
diff -u -d -r1.316 -r1.317
--- script_v6.cpp 5 Mar 2004 11:08:29 -0000 1.316
+++ script_v6.cpp 15 Mar 2004 02:21:04 -0000 1.317
@@ -2508,8 +2508,8 @@
const byte *message;
byte buf_input[300], buf_output[300];
_messagePtr = getStringAddressVar(VAR_STRING2DRAW);
- message = _msgPtrToAdd = buf_input;
- addMessageToStack(_messagePtr);
+ message = buf_input;
+ addMessageToStack(_messagePtr, buf_input, sizeof(buf_input));
if ((_gameId == GID_DIG) && !(_features & GF_DEMO)) {
byte buf_trans[300];
char *t_ptr = (char *)buf_input;
Index: script_v6he.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v6he.cpp,v
retrieving revision 2.37
retrieving revision 2.38
diff -u -d -r2.37 -r2.38
--- script_v6he.cpp 2 Mar 2004 10:22:55 -0000 2.37
+++ script_v6he.cpp 15 Mar 2004 02:21:04 -0000 2.38
@@ -955,9 +955,8 @@
int mode, len, slot, l, r;
byte filename[100];
- _msgPtrToAdd = filename;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename, sizeof(filename));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
@@ -1003,9 +1002,8 @@
int len, r;
byte filename[100];
- _msgPtrToAdd = filename;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename, sizeof(filename));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
@@ -1022,9 +1020,8 @@
int len, r1, r2;
byte filename[100],filename2[100];
- _msgPtrToAdd = filename;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename, sizeof(filename));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
@@ -1034,9 +1031,8 @@
break;
}
- _msgPtrToAdd = filename2;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename2, sizeof(filename2));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
@@ -1344,25 +1340,22 @@
switch (b) {
case 1:
- _msgPtrToAdd = filename1;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename1, sizeof(filename1));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
debug(1, "o6_unknownF4(%d, %d, \"%s\")", a, b, _messagePtr);
break;
case 2:
- _msgPtrToAdd = filename1;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename1, sizeof(filename1));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
- _msgPtrToAdd = filename2;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename2, sizeof(filename2));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
@@ -1378,9 +1371,8 @@
int len, r;
byte filename[100];
- _msgPtrToAdd = filename;
_messagePtr = _scriptPointer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, filename, sizeof(filename));
len = resStrLen(_scriptPointer);
_scriptPointer += len + 1;
Index: script_v8.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/script_v8.cpp,v
retrieving revision 2.236
retrieving revision 2.237
diff -u -d -r2.236 -r2.237
--- script_v8.cpp 25 Feb 2004 10:48:35 -0000 2.236
+++ script_v8.cpp 15 Mar 2004 02:21:04 -0000 2.237
@@ -531,8 +531,7 @@
break;
case 5:{
byte buffer[256];
- _msgPtrToAdd = buffer;
- addMessageToStack(_messagePtr);
+ addMessageToStack(_messagePtr, buffer, sizeof(buffer));
enqueueText(buffer, _string[m].xpos, _string[m].ypos, _string[m].color, _string[m].charset, _string[m].center);
}
break;
Index: scumm.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scumm.h,v
retrieving revision 1.377
retrieving revision 1.378
diff -u -d -r1.377 -r1.378
--- scumm.h 2 Mar 2004 01:20:18 -0000 1.377
+++ scumm.h 15 Mar 2004 02:21:04 -0000 1.378
@@ -1064,7 +1064,7 @@
void CHARSET_1();
void drawString(int a);
- const byte *addMessageToStack(const byte *msg);
+ const byte *addMessageToStack(const byte *msg, byte *dstBuffer, int dstBufferSize);
void addIntToStack(int var);
void addVerbToStack(int var);
void addNameToStack(int var);
Index: string.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
retrieving revision 1.199
retrieving revision 1.200
diff -u -d -r1.199 -r1.200
--- string.cpp 22 Feb 2004 14:48:13 -0000 1.199
+++ string.cpp 15 Mar 2004 02:21:04 -0000 1.200
@@ -48,8 +48,7 @@
void ScummEngine::unkMessage1() {
byte buffer[100];
- _msgPtrToAdd = buffer;
- _messagePtr = addMessageToStack(_messagePtr);
+ _messagePtr = addMessageToStack(_messagePtr, buffer, sizeof(buffer));
// if ((_gameId == GID_CMI) && _debugMode) { // In CMI, unkMessage1 is used for printDebug output
if ((buffer[0] != 0xFF) && _debugMode) {
@@ -78,8 +77,7 @@
byte buf[100];
const byte *tmp;
- _msgPtrToAdd = buf;
- tmp = _messagePtr = addMessageToStack(_messagePtr);
+ tmp = _messagePtr = addMessageToStack(_messagePtr, buf, sizeof(buf));
if (_string[3].color == 0)
_string[3].color = 4;
@@ -348,8 +346,7 @@
byte fontHeight = 0;
uint color;
- _msgPtrToAdd = buf;
- _messagePtr = addMessageToStack(_messagePtr);
+ _messagePtr = addMessageToStack(_messagePtr, buf, sizeof(buf));
_charset->_top = _string[a].ypos + _screenTop;
_charset->_startLeft = _charset->_left = _string[a].xpos;
@@ -366,18 +363,18 @@
fontHeight = _charset->getFontHeight();
- _msgPtrToAdd = buf;
// trim from the right
+ byte *tmp = buf;
space = NULL;
- while (*_msgPtrToAdd) {
- if (*_msgPtrToAdd == ' ') {
+ while (*tmp) {
+ if (*tmp == ' ') {
if (!space)
- space = _msgPtrToAdd;
+ space = tmp;
} else {
space = NULL;
}
- _msgPtrToAdd++;
+ tmp++;
}
if (space)
*space = '\0';
@@ -472,12 +469,16 @@
}
}
-const byte *ScummEngine::addMessageToStack(const byte *msg) {
+const byte *ScummEngine::addMessageToStack(const byte *msg, byte *dstBuffer, int dstBufferSize) {
uint num = 0;
uint32 val;
byte chr;
byte buf[512];
+ if (dstBuffer) {
+ _msgPtrToAdd = dstBuffer;
+ }
+
if (msg == NULL) {
warning("Bad message in addMessageToStack, ignoring");
return NULL;
@@ -563,6 +564,12 @@
}
*_msgPtrToAdd = 0;
+ if (dstBuffer) {
+ // Check for a buffer overflow
+ if (_msgPtrToAdd >= dstBuffer + dstBufferSize)
+ error("addMessageToStack: buffer overflow!");
+ }
+
return msg;
}
@@ -582,7 +589,7 @@
if (num == _verbs[k].verbid && !_verbs[k].type && !_verbs[k].saveid) {
const byte *ptr = getResourceAddress(rtVerb, k);
ptr = translateTextAndPlaySpeech(ptr);
- addMessageToStack(ptr);
+ addMessageToStack(ptr, 0, 0);
break;
}
}
@@ -599,9 +606,9 @@
if (ptr) {
if ((_version == 8) && (ptr[0] == '/')) {
translateText(ptr, _transText);
- addMessageToStack(_transText);
+ addMessageToStack(_transText, 0, 0);
} else {
- addMessageToStack(ptr);
+ addMessageToStack(ptr, 0, 0);
}
}
}
@@ -617,9 +624,9 @@
if (ptr) {
if ((_version == 8) && (ptr[0] == '/')) {
translateText(ptr, _transText);
- addMessageToStack(_transText);
+ addMessageToStack(_transText, 0, 0);
} else {
- addMessageToStack(ptr);
+ addMessageToStack(ptr, 0, 0);
}
}
}
@@ -728,6 +735,7 @@
return strcmp(i1->tag, i2->tag);
}
+// Create an index of the language file.
void ScummEngine::loadLanguageBundle() {
File file;
int32 size;
@@ -751,23 +759,16 @@
file.read(_languageBuffer, size);
file.close();
- // Create an index of the language file.
- // FIXME: Extend this mechanism to also cover The Dig?
-
int32 i;
char *ptr = _languageBuffer;
// Count the number of lines in the language file.
-
- _languageIndexSize = 0;
-
- for (;;) {
+ for (_languageIndexSize = 0; ; _languageIndexSize++) {
ptr = strpbrk(ptr, "\n\r");
if (ptr == NULL)
break;
while (*ptr == '\n' || *ptr == '\r')
ptr++;
- _languageIndexSize++;
}
// Fill the language file index. This is just an array of
- Previous message: [Scummvm-cvs-logs] CVS: scummvm/gui launcher.cpp,1.88,1.89 options.cpp,1.50,1.51 options.h,1.16,1.17
- Next message: [Scummvm-cvs-logs] CVS: scummvm/saga binread.cpp,1.1,1.2 gamedesc.cpp,1.2,1.3 gamedesc.h,1.1,1.2 resfile.cpp,1.1,1.2 resfile.h,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the Scummvm-git-logs
mailing list