void AGOSEngine_PN::opn_opcode32() { Common::String bf; int a, slot; a = varval(); if (a > 2) { setScriptReturn(true); return; } uint16 curSlot = countSaveGames(); switch (a) { case 0: getFilename(); slot = matchSaveGame(_saveFile, curSlot); if (slot != -1) bf = genSaveName(slot); else bf = genSaveName(curSlot); break; case 1: bf = "pn.sav"; break; case 2: // NOTE: Is this case ever used? error("opn_opcode32: case 2"); break; } a = saveFile(bf); setScriptReturn(a); }
void AGOSEngine_PN::opn_opcode31() { int a, slot = 0; Common::String bf; if ((a = varval()) > 2) { setScriptReturn(false); return; } switch (a) { case 0: getFilename(); slot = matchSaveGame(_saveFile, countSaveGames()); bf = genSaveName(slot); break; case 1: bf = "pn.sav"; break; case 2: // NOTE: Is this case ever used? error("opn_opcode31: case 2"); break; } if (slot == -1) { setScriptReturn(false); } else { a = loadFile(bf); if (a) setScriptReturn(badload(a)); else setScriptReturn(true); } }
void AGOSEngine_Feeble::off_loadUserGame() { // 133: load game if (readVariable(55) == 999) { loadGame(getFileName(GAME_RESTFILE), true); } else { loadGame(genSaveName(readVariable(55))); } }
void AGOSEngine_PuzzlePack::opp_loadUserGame() { // 133: load usergame // NoPatience or Jumble if (getBitFlag(110)) { //getHiScoreName(); return; } // XXX loadGame(genSaveName(1)); }
void AGOSEngine::o_loadUserGame() { // 133: load user game if (getGameId() == GID_SIMON1CD32) { // The Amiga CD32 version of Simon the Sorcerer 1 uses a single slot if (!loadGame(genSaveName(0))) { vc33_setMouseOn(); fileError(_windowArray[5], false); } } else { _system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true); userGame(true); _system->setFeatureState(OSystem::kFeatureVirtualKeyboard, false); } }
void AGOSEngine_Feeble::saveUserGame(int slot) { WindowBlock *window; Common::InSaveFile *in; char name[108]; int len; memset(name, 0, 108); window = _windowArray[3]; window->textRow = (slot + 1 - window->scrollY) * 15; window->textColumn = 26; if ((in = _saveFileMan->openForLoading(genSaveName(readVariable(55))))) { in->read(name, 100); delete in; } len = 0; while (name[len]) { byte chr = name[len]; window->textColumn += getFeebleFontSize(chr); len++; } windowPutChar(window, 0x7f); while (!shouldQuit()) { _keyPressed.reset(); delay(1); if (_keyPressed.ascii == 0 || _keyPressed.ascii >= 127) continue; window->textColumn -= getFeebleFontSize(127); name[len] = 0; windowBackSpace(_windowArray[3]); if (_keyPressed.keycode == Common::KEYCODE_ESCAPE) { _variableArray[55] = 27; break; } if (_keyPressed.keycode == Common::KEYCODE_KP_ENTER || _keyPressed.keycode == Common::KEYCODE_RETURN) { if (!saveGame(readVariable(55), name)) _variableArray[55] = (int16)0xFFFF; else _variableArray[55] = 0; break; } if (_keyPressed.keycode == Common::KEYCODE_BACKSPACE && len != 0) { len--; byte chr = name[len]; window->textColumn -= getFeebleFontSize(chr); name[len] = 0; windowBackSpace(_windowArray[3]); } if (_keyPressed.ascii >= 32 && window->textColumn + 26 <= window->width) { name[len++] = _keyPressed.ascii; windowPutChar(_windowArray[3], _keyPressed.ascii); } windowPutChar(window, 0x7f); } }
void AGOSEngine_Feeble::listSaveGames(int n) { char b[108]; Common::InSaveFile *in; uint16 j, k, z, maxFiles; int OK; memset(b, 0, 108); maxFiles = countSaveGames() - 1; j = maxFiles - n + 1; k = maxFiles - j + 1; z = maxFiles; if (getBitFlag(95)) { j++; z++; } while (!shouldQuit()) { OK = 1; if (getBitFlag(93) || getBitFlag(94)) { OK = 0; if (j > z) break; } if (getBitFlag(93)) { if (((_newLines + 1) >= _textWindow->scrollY) && ((_newLines + 1) < (_textWindow->scrollY + 3))) OK = 1; } if (getBitFlag(94)) { if ((_newLines + 1) == (_textWindow->scrollY + 7)) OK = 1; } if (OK == 1) { if (j == maxFiles + 1) { showMessageFormat("\n"); hyperLinkOn(j + 400); setTextColor(116); showMessageFormat(" %d. ", 1); hyperLinkOff(); setTextColor(113); k++; j--; } if (!(in = _saveFileMan->openForLoading(genSaveName(j)))) break; in->read(b, 100); delete in; } showMessageFormat("\n"); hyperLinkOn(j + 400); setTextColor(116); if (k < 10) showMessageFormat(" "); showMessageFormat("%d. ", k); setTextColor(113); showMessageFormat("%s ", b); hyperLinkOff(); j--; k++; } }
void AGOSEngine_DIMP::odp_loadUserGame() { // 133: load usergame loadGame(genSaveName(1)); }