aboutsummaryrefslogtreecommitdiff
path: root/engines/dreamweb/stubs.cpp
diff options
context:
space:
mode:
authorFilippos Karapetis2011-12-09 00:09:38 +0200
committerFilippos Karapetis2011-12-09 00:11:24 +0200
commit4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746 (patch)
tree33eb4d6f97bb8b94f6d0aa2c44dba8a8137590a8 /engines/dreamweb/stubs.cpp
parent0db0bf45046205f5a55d88896c215dbaa8a9397a (diff)
downloadscummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.tar.gz
scummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.tar.bz2
scummvm-rg350-4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746.zip
DREAMWEB: Port 'talk' to C++. Remove decidelist and talklist offsets
Diffstat (limited to 'engines/dreamweb/stubs.cpp')
-rw-r--r--engines/dreamweb/stubs.cpp62
1 files changed, 52 insertions, 10 deletions
diff --git a/engines/dreamweb/stubs.cpp b/engines/dreamweb/stubs.cpp
index a56d63e1a5..8d7ef9340a 100644
--- a/engines/dreamweb/stubs.cpp
+++ b/engines/dreamweb/stubs.cpp
@@ -1676,16 +1676,6 @@ void DreamGenContext::checkCoords() {
// FIXME: Move all these lists to the callers
switch ((uint16)bx) {
- case offset_talklist: {
- RectWithCallback talkList[] = {
- { 273,320,157,198,&DreamGenContext::getBack1 },
- { 240,290,2,44,&DreamGenContext::moreTalk },
- { 0,320,0,200,&DreamGenContext::blank },
- { 0xFFFF,0,0,0,0 }
- };
- checkCoords(talkList);
- break;
- }
case offset_quitlist: {
RectWithCallback quitList[] = {
{ 273,320,157,198,&DreamGenContext::getBack1 },
@@ -3982,4 +3972,56 @@ void DreamGenContext::decide() {
data.byte(kTextlen) = 240;
}
+void DreamGenContext::talk() {
+ data.byte(kTalkpos) = 0;
+ data.byte(kInmaparea) = 0;
+ data.byte(kCharacter) = data.byte(kCommand);
+ createPanel();
+ showPanel();
+ showMan();
+ showExit();
+ underTextLine();
+ convIcons();
+ startTalk();
+ data.byte(kCommandtype) = 255;
+ readMouse();
+ showPointer();
+ workToScreen();
+
+ RectWithCallback talkList[] = {
+ { 273,320,157,198,&DreamGenContext::getBack1 },
+ { 240,290,2,44,&DreamGenContext::moreTalk },
+ { 0,320,0,200,&DreamGenContext::blank },
+ { 0xFFFF,0,0,0,0 }
+ };
+
+ do {
+ delPointer();
+ readMouse();
+ animPointer();
+ showPointer();
+ vSync();
+ dumpPointer();
+ dumpTextLine();
+ data.byte(kGetback) = 0;
+ checkCoords(talkList);
+ if (data.byte(kQuitrequested))
+ break;
+ } while (!data.byte(kGetback));
+
+ bx = data.word(kPersondata);
+ es = cs;
+
+ if (data.byte(kTalkpos) >= 4)
+ es.byte(bx+7) |= 128;
+
+ redrawMainScrn();
+ workToScreenM();
+ if (data.byte(kSpeechloaded) == 1) {
+ cancelCh1();
+ data.byte(kVolumedirection) = -1;
+ data.byte(kVolumeto) = 0;
+ }
+}
+
} // End of namespace DreamGen