diff options
author | Robert Göffringmann | 2003-07-12 05:26:23 +0000 |
---|---|---|
committer | Robert Göffringmann | 2003-07-12 05:26:23 +0000 |
commit | cb48b4fca0b6a1fc816ba6cb49f497476ebcd534 (patch) | |
tree | c4d00b32183c1e6e2c7ed04dbfac1e6b5ea70870 /sky/control.cpp | |
parent | 8cc3d5e39c5b7eafca87366f6d4b9f70be9967f4 (diff) | |
download | scummvm-rg350-cb48b4fca0b6a1fc816ba6cb49f497476ebcd534.tar.gz scummvm-rg350-cb48b4fca0b6a1fc816ba6cb49f497476ebcd534.tar.bz2 scummvm-rg350-cb48b4fca0b6a1fc816ba6cb49f497476ebcd534.zip |
implemented -x command line option
svn-id: r8926
Diffstat (limited to 'sky/control.cpp')
-rw-r--r-- | sky/control.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/sky/control.cpp b/sky/control.cpp index 0880a5b3c6..c398cb2ea5 100644 --- a/sky/control.cpp +++ b/sky/control.cpp @@ -1461,7 +1461,7 @@ uint16 SkyControl::restoreGameFromFile(bool autoSave) { else sprintf(fName, "SKY-VM%03d.ASD", SkyState::_systemVars.gameVersion); } else - sprintf(fName,"SKY-VM.%03d", _selectedGame); + sprintf(fName,"SKY-VM.%03d", _selectedGame); File inf; if (!inf.open(fName, _savePath)) { @@ -1491,6 +1491,41 @@ uint16 SkyControl::restoreGameFromFile(bool autoSave) { return res; } +uint16 SkyControl::quickXRestore(uint16 slot) { + uint16 result; + initPanel(); + _mouseClicked = false; + + _savedCharSet = _skyText->giveCurrentCharSet(); + _skyText->fnSetFont(0); + + if (SkyState::_systemVars.gameVersion < 331) + _skyScreen->setPalette(60509); + else + _skyScreen->setPalette(60510); + + _savedMouse = _skyMouse->giveCurrentMouseType(); + _skyMouse->spriteMouse(MOUSE_NORMAL,0,0); + + if (slot == 0) + result = restoreGameFromFile(true); + else { + _selectedGame = slot - 1; + result = restoreGameFromFile(false); + } + if (result == GAME_RESTORED) { + memset(_skyScreen->giveCurrent(), 0, GAME_SCREEN_WIDTH * GAME_SCREEN_HEIGHT); + _skyScreen->showScreen(_skyScreen->giveCurrent()); + _skyScreen->forceRefresh(); + } + _skyScreen->setPaletteEndian((uint8 *)SkyState::fetchCompact(SkyState::_systemVars.currentPalette)); + _skyMouse->spriteMouse(_savedMouse, 0, 0); + _skyText->fnSetFont(_savedCharSet); + + removePanel(); + return result; +} + uint16 *SkyControl::lz77decode(uint16 *data) { uint32 size = READ_LE_UINT32(data); data += 2; |