removed useless AR saving leftovers and implemented fnRestoreGame()

svn-id: r8693
This commit is contained in:
Robert Göffringmann 2003-07-01 23:31:29 +00:00
parent b7f9b1a5d8
commit c66457664e
4 changed files with 58 additions and 48 deletions

View File

@ -957,24 +957,3 @@ Compact *SkyControl::_saveLoadCpts[833] = {
&SkyCompact::info_button
};
uint8 *SkyControl::_saveLoadARs[18] = {
SkyCompact::joey_auto,
SkyCompact::lamb_auto,
SkyCompact::monitor_auto,
SkyCompact::ss_auto,
SkyCompact::full_ss_auto,
SkyCompact::loader_auto,
SkyCompact::shades_auto,
SkyCompact::jobs_auto,
SkyCompact::foreman_auto,
SkyCompact::radman_auto,
SkyCompact::burke_auto,
SkyCompact::babs_auto,
SkyCompact::dan_auto,
SkyCompact::spu_auto,
SkyCompact::medi_auto,
SkyCompact::wit_auto,
SkyCompact::gal_auto,
SkyCompact::ken_auto
};

View File

@ -292,6 +292,33 @@ void SkyControl::drawMainPanel(void) {
_bodge->drawToScreen(WITH_MASK);
}
void SkyControl::doLoadSavePanel(void) {
if (SkyState::isDemo() && (!SkyState::isCDVersion()))
return; // I don't think this can even happen
initPanel();
_skyScreen->clearScreen();
if (SkyState::_systemVars.gameVersion < 368)
_skyScreen->setPalette(60509);
else
_skyScreen->setPalette(60510);
_savedMouse = _skyMouse->giveCurrentMouseType();
_skyMouse->spriteMouse(MOUSE_NORMAL,0,0);
_lastButton = -1;
_curButtonText = 0;
_textSprite = NULL;
saveRestorePanel(false);
memset(_screenBuf, 0, GAME_SCREEN_WIDTH * FULL_SCREEN_HEIGHT);
_system->copy_rect(_screenBuf, GAME_SCREEN_WIDTH, 0, 0, GAME_SCREEN_WIDTH, FULL_SCREEN_HEIGHT);
_system->update_screen();
_skyScreen->forceRefresh();
_skyScreen->setPalette((uint8*)SkyState::fetchCompact(SkyState::_systemVars.currentPalette));
removePanel();
_skyMouse->spriteMouse(_savedMouse, 0, 0);
}
void SkyControl::doControlPanel(void) {
if (SkyState::isDemo() && (!SkyState::isCDVersion())) {
@ -335,7 +362,9 @@ void SkyControl::doControlPanel(void) {
buttonControl(NULL);
_text->drawToScreen(WITH_MASK); // flush text restore buffer
drawMainPanel();
if (clickRes == QUIT_PANEL) quitPanel = true;
if ((clickRes == QUIT_PANEL) || (clickRes == GAME_SAVED) ||
(clickRes == GAME_RESTORED))
quitPanel = true;
}
_mouseClicked = false;
}
@ -1126,7 +1155,7 @@ uint16 SkyControl::parseSaveData(uint8 *srcBuf) {
LODSD(srcPos, size);
LODSD(srcPos, saveRev);
if (saveRev != SAVE_FILE_REVISION) {
if (saveRev > SAVE_FILE_REVISION) {
warning("Unknown save file revision (%d)",saveRev);
return RESTORE_FAILED;
}

View File

@ -147,15 +147,29 @@ class SkyControl {
public:
SkyControl(SkyScreen *screen, SkyDisk *disk, SkyMouse *mouse, SkyText *text, SkyMusicBase *music, SkyLogic *logic, OSystem *system, const char *savePath);
void doControlPanel(void);
void doLoadSavePanel(void);
void showGameQuitMsg(bool useScreen = true);
private:
void initPanel(void);
void removePanel(void);
void drawMainPanel(void);
void delay(unsigned int amount);
void buttonControl(SkyConResource *pButton);
void drawMainPanel(void);
void delay(unsigned int amount);
void animClick(SkyConResource *pButton);
bool getYesNo(void);
void buttonControl(SkyConResource *pButton);
uint16 handleClick(SkyConResource *pButton);
uint16 doMusicSlide(void);
uint16 doSpeedSlide(void);
uint16 toggleFx(SkyConResource *pButton);
uint16 toggleText(SkyConResource *pButton);
uint16 shiftDown(uint8 speed);
uint16 shiftUp(uint8 speed);
uint16 saveRestorePanel(bool allowSave);
void loadDescriptions(uint8 *destBuf);
void saveDescriptions(uint8 *srcBuf);
void setUpGameSprites(uint8 *nameBuf, dataFileHeader **nameSprites, uint16 firstNum, uint16 selectedGame, bool allowSave);
@ -163,20 +177,6 @@ private:
bool checkKeyList(uint8 key);
void handleKeyPress(uint8 key, uint8 *textBuf);
void animClick(SkyConResource *pButton);
bool getYesNo(void);
uint16 doMusicSlide(void);
uint16 doSpeedSlide(void);
uint16 handleClick(SkyConResource *pButton);
uint16 toggleFx(SkyConResource *pButton);
uint16 toggleText(SkyConResource *pButton);
uint16 shiftDown(uint8 speed);
uint16 shiftUp(uint8 speed);
const char *_savePath;
void appendMemList(uint16 *pMem);
void freeMemList(void);
uint16 _selectedGame;
uint16 saveGameToFile(void);
void stosMegaSet(uint8 **destPos, MegaSet *mega);
@ -190,10 +190,12 @@ private:
void lodsStr(uint8 **srcPos, uint16 *src);
uint16 parseSaveData(uint8 *srcBuf);
static Compact *_saveLoadCpts[833]; // \ moved to sky/compacts/savedata.cpp
static uint8 *_saveLoadARs[18]; // /
static Compact *_saveLoadCpts[833]; // moved to sky/compacts/savedata.cpp
const char *_savePath;
uint16 saveRestorePanel(bool allowSave);
AllocedMem *_memListRoot;
void appendMemList(uint16 *pMem);
void freeMemList(void);
SkyScreen *_skyScreen;
SkyDisk *_skyDisk;
@ -206,8 +208,6 @@ private:
bool _mouseClicked;
byte _keyPressed;
SkyConResource *createResource(void *pSpData, uint32 pNSprites, uint32 pCurSprite, int16 pX, int16 pY, uint32 pText, uint8 pOnClick, uint8 panelType);
struct {
uint8 *controlPanel;
uint8 *button;
@ -221,14 +221,14 @@ private:
uint8 *musicBodge;
} _sprites;
AllocedMem *_memListRoot;
uint8 *_screenBuf;
int _lastButton;
uint32 _curButtonText;
uint16 _firstText;
uint16 _savedMouse;
SkyConResource *createResource(void *pSpData, uint32 pNSprites, uint32 pCurSprite, int16 pX, int16 pY, uint32 pText, uint8 pOnClick, uint8 panelType);
dataFileHeader *_textSprite;
SkyTextResource *_text;

View File

@ -2185,7 +2185,9 @@ bool SkyLogic::fnEnterSection(uint32 sectionNo, uint32 b, uint32 c) {
}
bool SkyLogic::fnRestoreGame(uint32 a, uint32 b, uint32 c) {
error("Stub: fnRestoreGame");
_skyControl->doLoadSavePanel();
return false;
}
bool SkyLogic::fnRestartGame(uint32 a, uint32 b, uint32 c) {