diff options
author | Filippos Karapetis | 2011-12-09 00:09:38 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-09 00:11:24 +0200 |
commit | 4fdaba7e5ece3ac9d1ac2c7848072c70c1c5c746 (patch) | |
tree | 33eb4d6f97bb8b94f6d0aa2c44dba8a8137590a8 /engines/dreamweb/stubs.cpp | |
parent | 0db0bf45046205f5a55d88896c215dbaa8a9397a (diff) | |
download | scummvm-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.cpp | 62 |
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 |