Fixed the note-pad, font changing and date/time-display

svn-id: r24875
This commit is contained in:
Sven Hesse 2006-12-18 20:38:31 +00:00
parent fc6f8a47f1
commit 2e6ad11d6d
5 changed files with 73 additions and 6 deletions

View File

@ -71,7 +71,8 @@ void Game_v2::playTot(int16 skipPlay) {
if (skipPlay <= 0) {
while (!_vm->_quitRequested) {
_vm->_draw->animateCursor(4);
if (_vm->_global->_inter_variables != 0)
_vm->_draw->animateCursor(4);
if (_vm->_features & GF_MAC)
_vm->_music->stopPlay();
else

View File

@ -575,6 +575,11 @@ void GobEngine::loadGameData(enum SaveFiles sFile, int16 dataVar, int32 size, in
_video->freeSurfDesc(srcDesc);
} else
retSize = in->read(buf, size);
if (index == 21) {
_video->drawSprite(_draw->_backSurface, _draw->_frontSurface, 0, 0,
_draw->_frontSurface->width - 1, _draw->_frontSurface->height - 1, 0, 0, 0);
_video->waitRetrace(_global->_videoMode);
}
} else
retSize = readDataEndian(*in, buf, _global->_inter_variablesSizes + dataVar, size);

View File

@ -109,7 +109,8 @@ enum {
enum SaveFiles {
SAVE_CAT = 0, // Saves
SAVE_SAV, // Draw::_backSurface (why?)
SAVE_SAV, // Draw::_backSurface (as a temporary buffer when using the notepad
// and changing the font. TODO: That probably should be worked around
SAVE_BLO // Notes
};

View File

@ -333,6 +333,7 @@ protected:
bool o2_playSound(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_goblinFunc(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_evaluateStore(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_printText(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_palLoad(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_loadTot(char &cmdCount, int16 &counter, int16 &retFlag);
bool o2_freeSprite(char &cmdCount, int16 &counter, int16 &retFlag);

View File

@ -469,7 +469,7 @@ void Inter_v2::setupOpcodes(void) {
{NULL, ""},
/* 10 */
{NULL, ""},
OPCODE(o1_printText),
OPCODE(o2_printText),
OPCODE(o2_loadTot),
OPCODE(o2_palLoad),
/* 14 */
@ -1490,7 +1490,7 @@ bool Inter_v2::o2_checkData(char &cmdCount, int16 &counter, int16 &retFlag) {
evalExpr(0);
varOff = _vm->_parse->parseVarIndex();
handle = 0;
handle = 1;
if (!scumm_stricmp(_vm->_global->_inter_resStr, "cat.inf"))
size = _vm->getSaveSize(SAVE_CAT);
else if (!scumm_stricmp(_vm->_global->_inter_resStr, "cat.cat"))
@ -1682,6 +1682,66 @@ bool Inter_v2::o2_evaluateStore(char &cmdCount, int16 &counter, int16 &retFlag)
return false;
}
bool Inter_v2::o2_printText(char &cmdCount, int16 &counter, int16 &retFlag) {
char buf[60];
int16 i;
_vm->_draw->_destSpriteX = _vm->_parse->parseValExpr();
_vm->_draw->_destSpriteY = _vm->_parse->parseValExpr();
_vm->_draw->_backColor = _vm->_parse->parseValExpr();
_vm->_draw->_frontColor = _vm->_parse->parseValExpr();
_vm->_draw->_fontIndex = _vm->_parse->parseValExpr();
_vm->_draw->_destSurface = 21;
_vm->_draw->_textToPrint = buf;
_vm->_draw->_transparency = 0;
if (_vm->_draw->_backColor == 16) {
_vm->_draw->_backColor = 0;
_vm->_draw->_transparency = 1;
}
do {
for (i = 0; *_vm->_global->_inter_execPtr != '.' && (byte)*_vm->_global->_inter_execPtr != 200;
i++, _vm->_global->_inter_execPtr++) {
buf[i] = *_vm->_global->_inter_execPtr;
}
if ((byte)*_vm->_global->_inter_execPtr != 200) {
_vm->_global->_inter_execPtr++;
switch (*_vm->_global->_inter_execPtr) {
case 16:
case 18:
sprintf(buf + i, "%d", (int8) READ_VARO_UINT8(_vm->_parse->parseVarIndex()));
break;
case 17:
case 24:
case 27:
sprintf(buf + i, "%d", (int16) READ_VARO_UINT16(_vm->_parse->parseVarIndex()));
break;
case 23:
case 26:
sprintf(buf + i, "%d", VAR_OFFSET(_vm->_parse->parseVarIndex()));
break;
case 25:
case 28:
sprintf(buf + i, "%s", GET_VARO_STR(_vm->_parse->parseVarIndex()));
break;
}
_vm->_global->_inter_execPtr++;
} else {
buf[i] = 0;
}
_vm->_draw->spriteOperation(DRAW_PRINTTEXT);
} while ((byte)*_vm->_global->_inter_execPtr != 200);
_vm->_global->_inter_execPtr++;
return false;
}
bool Inter_v2::o2_palLoad(char &cmdCount, int16 &counter, int16 &retFlag) {
int16 i;
int16 ind1;
@ -2238,8 +2298,7 @@ void Inter_v2::o2_totSub(void) {
totFile[i] = 0;
}
_vm->_global->_inter_execPtr++;
flags = *_vm->_global->_inter_execPtr;
flags = (byte) *_vm->_global->_inter_execPtr++;
_vm->_game->totSub(flags, totFile);
}