aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorMax Horn2011-12-20 09:39:33 +0100
committerFilippos Karapetis2011-12-23 03:31:01 +0200
commitd033566f6dea0330d17f54d2f1539c4587f231d0 (patch)
tree479966c0997eec4d53bb791054f4e72314855d9b /engines
parent2bdcbadbfe6badc8ab7c75bd27b988be7916828d (diff)
downloadscummvm-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.h15
-rw-r--r--engines/dreamweb/saveload.cpp119
-rw-r--r--engines/dreamweb/stubs.cpp99
-rw-r--r--engines/dreamweb/stubs.h12
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();