diff options
author | Max Horn | 2011-12-20 09:39:33 +0100 |
---|---|---|
committer | Filippos Karapetis | 2011-12-23 03:31:01 +0200 |
commit | d033566f6dea0330d17f54d2f1539c4587f231d0 (patch) | |
tree | 479966c0997eec4d53bb791054f4e72314855d9b /engines | |
parent | 2bdcbadbfe6badc8ab7c75bd27b988be7916828d (diff) | |
download | scummvm-rg350-d033566f6dea0330d17f54d2f1539c4587f231d0.tar.gz scummvm-rg350-d033566f6dea0330d17f54d2f1539c4587f231d0.tar.bz2 scummvm-rg350-d033566f6dea0330d17f54d2f1539c4587f231d0.zip |
DREAMWEB: Move most of saveload.cpp to DreamBase
Diffstat (limited to 'engines')
-rw-r--r-- | engines/dreamweb/dreambase.h | 15 | ||||
-rw-r--r-- | engines/dreamweb/saveload.cpp | 119 | ||||
-rw-r--r-- | engines/dreamweb/stubs.cpp | 99 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 12 |
4 files changed, 122 insertions, 123 deletions
diff --git a/engines/dreamweb/dreambase.h b/engines/dreamweb/dreambase.h index 0cdcefe233..ba0499f95e 100644 --- a/engines/dreamweb/dreambase.h +++ b/engines/dreamweb/dreambase.h @@ -238,9 +238,18 @@ public: void namesToOld(); void showMainOps(); void showDiscOps(); - void showNames(); + void actualSave(); + void actualLoad(); void loadPosition(unsigned int slot); void savePosition(unsigned int slot, const char *descbuf); + void loadSaveBox(); + void showNames(); + void checkInput(); + void selectSlot(); + void showSlots(); + void showOpBox(); + void showSaveOps(); + void showLoadOps(); // from sound.cpp bool loadSpeech(byte type1, int idx1, byte type2, int idx2); @@ -320,7 +329,6 @@ public: Frame *tempGraphics2(); Frame *tempGraphics3(); void showArrows(); - void showOpBox(); void middlePanel(); void showDiary(); void readMouse(); @@ -446,6 +454,9 @@ public: void personNameText(); void walkToText(); void entryTexts(); + void setAllChanges(); + void restoreAll(); + void redrawMainScrn(); // from use.cpp void placeFreeObject(uint8 index); diff --git a/engines/dreamweb/saveload.cpp b/engines/dreamweb/saveload.cpp index cd32e4fa34..5ca8ce88ec 100644 --- a/engines/dreamweb/saveload.cpp +++ b/engines/dreamweb/saveload.cpp @@ -81,9 +81,9 @@ void DreamGenContext::doLoad(int savegameId) { dumpPointer(); dumpTextLine(); RectWithCallback loadlist[] = { - { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps }, - { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamGenContext::actualLoad }, - { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamGenContext::selectSlot }, + { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamBase::getBackToOps }, + { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamBase::actualLoad }, + { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamBase::selectSlot }, { 0,320,0,200,&DreamBase::blank }, { 0xFFFF,0,0,0,0 } }; @@ -177,9 +177,9 @@ void DreamGenContext::saveGame() { dumpTextLine(); RectWithCallback savelist[] = { - { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps }, - { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamGenContext::actualSave }, - { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamGenContext::selectSlot }, + { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamBase::getBackToOps }, + { kOpsx+128,kOpsx+190,kOpsy+12,kOpsy+100,&DreamBase::actualSave }, + { kOpsx+2,kOpsx+92,kOpsy+4,kOpsy+81,&DreamBase::selectSlot }, { 0,320,0,200,&DreamBase::blank }, { 0xFFFF,0,0,0,0 } }; @@ -268,7 +268,7 @@ void DreamGenContext::doSaveLoad() { workToScreenCPP(); RectWithCallback opsList[] = { - { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::getBackFromOps }, + { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamBase::getBackFromOps }, { kOpsx+10,kOpsx+77,kOpsy+10,kOpsy+59,&DreamBase::DOSReturn }, { kOpsx+128,kOpsx+190,kOpsy+16,kOpsy+100,&DreamGenContext::discOps }, { 0,320,0,200,&DreamBase::blank }, @@ -316,6 +316,27 @@ void DreamGenContext::doSaveLoad() { data.byte(kManisoffscreen) = 0; } +void DreamBase::getBackFromOps() { + if (data.byte(kMandead) == 2) + blank(); + else + getBack1(); +} + +void DreamBase::getBackToOps() { + if (data.byte(kCommandtype) != 201) { + data.byte(kCommandtype) = 201; + commandOnly(42); + } + + if (data.word(kMousebutton) != data.word(kOldbutton)) { + if (data.word(kMousebutton) & 1) { + oldToNames(); + data.byte(kGetback) = 2; + } + } +} + void DreamBase::showMainOps() { showFrame(tempGraphics(), kOpsx+10, kOpsy+10, 8, 0); showFrame(tempGraphics(), kOpsx+59, kOpsy+30, 7, 0); @@ -329,7 +350,46 @@ void DreamBase::showDiscOps() { showFrame(tempGraphics(), kOpsx+176+2, kOpsy+60-4, 5, 0); } -void DreamGenContext::actualSave() { +void DreamGenContext::discOps() { + if (data.byte(kCommandtype) != 249) { + data.byte(kCommandtype) = 249; + commandOnly(43); + } + + if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) + return; + + scanForNames(); + data.byte(kLoadingorsave) = 2; + showOpBox(); + showDiscOps(); + data.byte(kCurrentslot) = 0; + workToScreenM(); + data.byte(kGetback) = 0; + + RectWithCallback discOpsList[] = { + { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::loadGame }, + { kOpsx+10,kOpsx+79,kOpsy+10,kOpsy+59,&DreamGenContext::saveGame }, + { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamBase::getBackToOps }, + { 0,320,0,200,&DreamBase::blank }, + { 0xFFFF,0,0,0,0 } + }; + + do { + if (data.byte(kQuitrequested) != 0) + return; // quitdiscops + + delPointer(); + readMouse(); + showPointer(); + vSync(); + dumpPointer(); + dumpTextLine(); + checkCoords(discOpsList); + } while (!data.byte(kGetback)); +} + +void DreamBase::actualSave() { if (data.byte(kCommandtype) != 222) { data.byte(kCommandtype) = 222; commandOnly(44); @@ -356,7 +416,7 @@ void DreamGenContext::actualSave() { data.byte(kGetback) = 4; } -void DreamGenContext::actualLoad() { +void DreamBase::actualLoad() { if (data.byte(kCommandtype) != 221) { data.byte(kCommandtype) = 221; commandOnly(41); @@ -584,7 +644,7 @@ void DreamGenContext::loadOld() { data.byte(kGetback) = 0; } -void DreamGenContext::loadSaveBox() { +void DreamBase::loadSaveBox() { loadIntoTemp("DREAMWEB.G08"); } @@ -612,7 +672,7 @@ void DreamBase::showNames() { } } -void DreamGenContext::checkInput() { +void DreamBase::checkInput() { if (data.byte(kLoadingorsave) == 3) return; @@ -649,7 +709,7 @@ void DreamGenContext::checkInput() { workToScreenM(); } -void DreamGenContext::selectSlot() { +void DreamBase::selectSlot() { if (data.byte(kCommandtype) != 244) { data.byte(kCommandtype) = 244; commandOnly(45); @@ -677,8 +737,41 @@ void DreamGenContext::selectSlot() { showSaveOps(); readMouse(); showPointer(); - workToScreen(); + workToScreenCPP(); delPointer(); } +void DreamBase::showSlots() { + showFrame(tempGraphics(), kOpsx + 7, kOpsy + 8, 2, 0); + + uint16 y = kOpsy + 11; + + for (int slot = 0; slot < 7; slot++) { + if (slot == data.byte(kCurrentslot)) + showFrame(tempGraphics(), kOpsx + 10, y, 3, 0); + + y += 10; + } +} + +void DreamBase::showOpBox() { + showFrame(tempGraphics(), kOpsx, kOpsy, 0, 0); + + // CHECKME: There seem to be versions of dreamweb in which this call + // should be removed. It displays a red dot on the ops dialogs if left in. + showFrame(tempGraphics(), kOpsx, kOpsy + 55, 4, 0); +} + +void DreamBase::showLoadOps() { + showFrame(tempGraphics(), kOpsx + 128 + 4, kOpsy + 12, 1, 0); + showFrame(tempGraphics(), kOpsx + 176 + 2, kOpsy + 60 - 4, 5, 0); + printMessage(kOpsx + 104, kOpsy + 14, 55, 101, (101 & 1)); +} + +void DreamBase::showSaveOps() { + showFrame(tempGraphics(), kOpsx + 128 + 4, kOpsy + 12, 1, 0); + showFrame(tempGraphics(), kOpsx + 176 + 2, kOpsy + 60 - 4, 5, 0); + printMessage(kOpsx + 104, kOpsy + 14, 54, 101, (101 & 1)); +} + } // End of namespace DreamGen diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp index 1a0c07cea5..c31edc2c65 100644 --- a/engines/dreamweb/stubs.cpp +++ b/engines/dreamweb/stubs.cpp @@ -1314,7 +1314,7 @@ void DreamBase::findOrMake(uint8 index, uint8 value, uint8 type) { change->type = type; } -void DreamGenContext::setAllChanges() { +void DreamBase::setAllChanges() { Change *change = (Change *)getSegment(data.word(kBuffers)).ptr(kListofchanges, sizeof(Change)); for (; change->index != 0xff; ++change) if (change->location == data.byte(kReallocation)) @@ -2309,7 +2309,7 @@ void DreamBase::loadRoomData(const Room &room, bool skipDat) { engine->closeFile(); } -void DreamGenContext::restoreAll() { +void DreamBase::restoreAll() { const Room &room = g_roomData[data.byte(kLocation)]; loadRoomData(room, true); setAllChanges(); @@ -3131,27 +3131,6 @@ void DreamGenContext::newGame() { data.byte(kGetback) = 3; } -void DreamBase::getBackFromOps() { - if (data.byte(kMandead) == 2) - blank(); - else - getBack1(); -} - -void DreamBase::getBackToOps() { - if (data.byte(kCommandtype) != 201) { - data.byte(kCommandtype) = 201; - commandOnly(42); - } - - if (data.word(kMousebutton) != data.word(kOldbutton)) { - if (data.word(kMousebutton) & 1) { - oldToNames(); - data.byte(kGetback) = 2; - } - } -} - void DreamGenContext::pickupOb(uint8 command, uint8 pos) { data.byte(kLastinvpos) = pos; data.byte(kObjecttype) = kFreeObjectType; @@ -3234,7 +3213,7 @@ void DreamGenContext::gettingShot() { clearBeforeLoad(); } -void DreamGenContext::redrawMainScrn() { +void DreamBase::redrawMainScrn() { data.word(kTimecount) = 0; createPanel(); data.byte(kNewobs) = 0; @@ -3630,26 +3609,6 @@ void DreamBase::showArrows() { showFrame(tempGraphics(), 280, 14, 2, 0); } -void DreamBase::showOpBox() { - showFrame(tempGraphics(), kOpsx, kOpsy, 0, 0); - - // CHECKME: There seem to be versions of dreamweb in which this call - // should be removed. It displays a red dot on the ops dialogs if left in. - showFrame(tempGraphics(), kOpsx, kOpsy + 55, 4, 0); -} - -void DreamGenContext::showLoadOps() { - showFrame(tempGraphics(), kOpsx + 128 + 4, kOpsy + 12, 1, 0); - showFrame(tempGraphics(), kOpsx + 176 + 2, kOpsy + 60 - 4, 5, 0); - printMessage(kOpsx + 104, kOpsy + 14, 55, 101, (101 & 1)); -} - -void DreamGenContext::showSaveOps() { - showFrame(tempGraphics(), kOpsx + 128 + 4, kOpsy + 12, 1, 0); - showFrame(tempGraphics(), kOpsx + 176 + 2, kOpsy + 60 - 4, 5, 0); - printMessage(kOpsx + 104, kOpsy + 14, 54, 101, (101 & 1)); -} - void DreamBase::middlePanel() { Frame *tempSprites = (Frame *)getSegment(data.word(kTempsprites)).ptr(0, 0); showFrame(tempSprites, 72 + 47 + 20, 0, 48, 0); @@ -3891,45 +3850,6 @@ void DreamGenContext::talk() { } } -void DreamGenContext::discOps() { - if (data.byte(kCommandtype) != 249) { - data.byte(kCommandtype) = 249; - commandOnly(43); - } - - if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1)) - return; - - scanForNames(); - data.byte(kLoadingorsave) = 2; - showOpBox(); - showDiscOps(); - data.byte(kCurrentslot) = 0; - workToScreenM(); - data.byte(kGetback) = 0; - - RectWithCallback discOpsList[] = { - { kOpsx+59,kOpsx+114,kOpsy+30,kOpsy+76,&DreamGenContext::loadGame }, - { kOpsx+10,kOpsx+79,kOpsy+10,kOpsy+59,&DreamGenContext::saveGame }, - { kOpsx+176,kOpsx+192,kOpsy+60,kOpsy+76,&DreamGenContext::getBackToOps }, - { 0,320,0,200,&DreamBase::blank }, - { 0xFFFF,0,0,0,0 } - }; - - do { - if (data.byte(kQuitrequested) != 0) - return; // quitdiscops - - delPointer(); - readMouse(); - showPointer(); - vSync(); - dumpPointer(); - dumpTextLine(); - checkCoords(discOpsList); - } while (!data.byte(kGetback)); -} - void DreamGenContext::hangOnPQ() { data.byte(kGetback) = 0; @@ -4510,19 +4430,6 @@ void DreamGenContext::lookAtCard() { putBackObStuff(); } -void DreamGenContext::showSlots() { - showFrame(tempGraphics(), kOpsx + 7, kOpsy + 8, 2, 0); - - uint16 y = kOpsy + 11; - - for (int slot = 0; slot < 7; slot++) { - if (slot == data.byte(kCurrentslot)) - showFrame(tempGraphics(), kOpsx + 10, y, 3, 0); - - y += 10; - } -} - void DreamBase::clearBuffers() { memset(getSegment(data.word(kBuffers)).ptr(0, kLengthofbuffer), 0, kLengthofbuffer); diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index 987f04f65a..8a9a41489a 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -87,7 +87,6 @@ SetObject *getSetAd(uint8 index) { return DreamBase::getSetAd(index); } - void setAllChanges(); void deleteTaken(); bool finishedWalkingCPP(); void finishedWalking(); @@ -162,9 +161,6 @@ void doLook(); void showFirstUse(); void showSecondUse(); - void actualSave(); - void actualLoad(); - void restoreAll(); void enterSymbol(); void viewFolder(); void edensCDPlayer(); @@ -221,7 +217,6 @@ void nextFolder(); void lastFolder(); void singleKey(uint8 key, uint16 x, uint16 y); - void loadSaveBox(); uint8 nextSymbol(uint8 symbol); void showSymbol(); void enterCode(uint8 digit0, uint8 digit1, uint8 digit2, uint8 digit3); @@ -247,9 +242,6 @@ void loadIntroRoom(); void afterIntroRoom(); void gettingShot(); - void redrawMainScrn(); - void selectSlot(); - void selectSlot2(); void allPointer(); void openYourNeighbour(); void openRyan(); @@ -294,8 +286,6 @@ return DreamBase::loadSpeech(type1, idx1, type2, idx2); } void set16ColPalette(); - void showSaveOps(); - void showLoadOps(); void afterNewRoom(); void madmanRun(); void showDecisions(); @@ -307,7 +297,6 @@ void hangOnPQ(); void showGun(); void endGame(); - void checkInput(); void dropError(); void cantDrop(); void newPlace(); @@ -341,7 +330,6 @@ void notHeldError(); void useGun(); void identifyOb(); - void showSlots(); void useCashCard(); void useStereo(); void selectOb(); |