Implemented basic saving and loading. Use Ctrl+(0-9) to save, and

Alt+(0-9) to load. Also extended the FastMode functionality to cover
the main game, hit Ctrl-F to speed animations and chats. Set '.' to skip
Brandon's chats, removed a redundant showMouse() and hideMouse() pair,
and simplified some screen updating code.

svn-id: r19773
This commit is contained in:
Oystein Eftevaag 2005-12-10 17:51:40 +00:00
parent 7b556aaafe
commit d6e9396166
3 changed files with 195 additions and 23 deletions

View file

@ -314,10 +314,8 @@ int KyraEngine::cmd_characterSays(ScriptState *script) {
if (_features & GF_TALKIE) {
debug(3, "cmd_characterSays(0x%X) (%d, '%s', %d, %d)", script, stackPos(0), stackPosString(1), stackPos(2), stackPos(3));
while (snd_voicePlaying()) {
_sprites->updateSceneAnims();
updateAllObjectShapes();
_system->delayMillis(10);
while (snd_voicePlaying() && !_fastMode) {
delay(10);
}
snd_playVoiceFile(stackPos(0));
characterSays(stackPosString(1), stackPos(2), stackPos(3));
@ -667,7 +665,7 @@ int KyraEngine::cmd_runWSAFromBeginningToEnd(ScriptState *script) {
_sprites->updateSceneAnims();
updateAllObjectShapes();
}
_screen->updateScreen();
_updateScreen = true;
}
_screen->showMouse();
@ -685,7 +683,7 @@ int KyraEngine::cmd_displayWSAFrame(ScriptState *script) {
_screen->hideMouse();
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
delay(waitTime * _tickLength);
_screen->updateScreen();
_updateScreen = true;
_screen->showMouse();
return 0;
}
@ -779,10 +777,8 @@ int KyraEngine::cmd_loadPageFromDisk(ScriptState *script) {
int KyraEngine::cmd_customPrintTalkString(ScriptState *script) {
if (_features & GF_TALKIE) {
debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF);
while (snd_voicePlaying()) {
_sprites->updateSceneAnims();
updateAllObjectShapes();
_system->delayMillis(10);
while (snd_voicePlaying() && !_fastMode) {
delay(10);
}
snd_playVoiceFile(stackPos(0));
printTalkTextMessage(stackPosString(1), stackPos(2), stackPos(3), stackPos(4) & 0xFF, 0, 2);
@ -790,7 +786,7 @@ int KyraEngine::cmd_customPrintTalkString(ScriptState *script) {
debug(3, "cmd_customPrintTalkString(0x%X) ('%s', %d, %d, %d)", script, stackPosString(0), stackPos(1), stackPos(2), stackPos(3) & 0xFF);
printTalkTextMessage(stackPosString(0), stackPos(1), stackPos(2), stackPos(3) & 0xFF, 0, 2);
}
_updateScreen = true;
return 0;
}
@ -907,7 +903,7 @@ int KyraEngine::cmd_displayWSASequentialFrames(ScriptState *script) {
while (endFrame >= frame) {
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
delay(waitTime * _tickLength);
_screen->updateScreen();
_updateScreen = true;
++frame;
}
} else {
@ -915,7 +911,7 @@ int KyraEngine::cmd_displayWSASequentialFrames(ScriptState *script) {
while (startFrame <= frame) {
wsa_play(_wsaObjects[wsaIndex], frame, xpos, ypos, 0);
delay(waitTime * _tickLength);
_screen->updateScreen();
_updateScreen = true;
--frame;
}
}