diff options
author | Filippos Karapetis | 2011-12-12 23:51:40 +0200 |
---|---|---|
committer | Filippos Karapetis | 2011-12-12 23:51:40 +0200 |
commit | ef94b2d15a543493a7d11ed208c74c5c2c37214c (patch) | |
tree | c0582f9cf10496f9cd62fa3fec0d93534a2d3f00 /engines | |
parent | 27f5661dfc5d49571499501e68db96fe30d272de (diff) | |
download | scummvm-rg350-ef94b2d15a543493a7d11ed208c74c5c2c37214c.tar.gz scummvm-rg350-ef94b2d15a543493a7d11ed208c74c5c2c37214c.tar.bz2 scummvm-rg350-ef94b2d15a543493a7d11ed208c74c5c2c37214c.zip |
DREAMWEB: Port 'usepipe' to C++
Diffstat (limited to 'engines')
-rw-r--r-- | engines/dreamweb/dreamgen.cpp | 47 | ||||
-rw-r--r-- | engines/dreamweb/dreamgen.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/stubs.h | 1 | ||||
-rw-r--r-- | engines/dreamweb/use.cpp | 27 |
4 files changed, 28 insertions, 48 deletions
diff --git a/engines/dreamweb/dreamgen.cpp b/engines/dreamweb/dreamgen.cpp index a2d8c2c70f..0a0aa7a91c 100644 --- a/engines/dreamweb/dreamgen.cpp +++ b/engines/dreamweb/dreamgen.cpp @@ -3590,53 +3590,6 @@ void DreamGenContext::notHeldError() { putBackObStuff(); } -void DreamGenContext::usePipe() { - STACK_CHECK; - _cmp(data.byte(kWithobject), 255); - if (!flags.z()) - goto pipewith; - withWhat(); - return; -pipewith: - al = data.byte(kWithobject); - ah = data.byte(kWithtype); - cl = 'C'; - ch = 'U'; - dl = 'P'; - dh = 'E'; - compare(); - if (flags.z()) - goto fillcup; - al = data.byte(kWithobject); - ah = data.byte(kWithtype); - cl = 'C'; - ch = 'U'; - dl = 'P'; - dh = 'F'; - compare(); - if (flags.z()) - goto alreadyfull; - cx = 300; - al = 14; - showPuzText(); - putBackObStuff(); - return; -fillcup: - cx = 300; - al = 36; - showPuzText(); - putBackObStuff(); - al = data.byte(kWithobject); - getExAd(); - es.byte(bx+15) = 'F'-'A'; - return; -alreadyfull: - cx = 300; - al = 35; - showPuzText(); - putBackObStuff(); -} - void DreamGenContext::useOpenBox() { STACK_CHECK; _cmp(data.byte(kWithobject), 255); diff --git a/engines/dreamweb/dreamgen.h b/engines/dreamweb/dreamgen.h index 6e8400b58e..bbdd70e455 100644 --- a/engines/dreamweb/dreamgen.h +++ b/engines/dreamweb/dreamgen.h @@ -511,7 +511,6 @@ public: void useAltar(); void startTalk(); void getAnyAd(); - void usePipe(); void reminders(); void runTap(); void dumpDiaryKeys(); diff --git a/engines/dreamweb/stubs.h b/engines/dreamweb/stubs.h index ff7c1106a6..2946327699 100644 --- a/engines/dreamweb/stubs.h +++ b/engines/dreamweb/stubs.h @@ -332,6 +332,7 @@ void useHatch(); void useLighter(); void useSLab(); + void usePipe(); void wheelSound(); void callHotelLift(); void useShield(); diff --git a/engines/dreamweb/use.cpp b/engines/dreamweb/use.cpp index f6d6b2f494..b8d7b7ca75 100644 --- a/engines/dreamweb/use.cpp +++ b/engines/dreamweb/use.cpp @@ -1314,4 +1314,31 @@ void DreamGenContext::useSLab() { data.byte(kGetback) = 1; } +void DreamGenContext::usePipe() { + if (data.byte(kWithobject) == 255) { + withWhat(); + return; + } + + char cupEmpty[4] = { 'C', 'U', 'P', 'E' }; // TODO: convert to string with trailing zero + char cupFull[4] = { 'C', 'U', 'P', 'F' }; // TODO: convert to string with trailing zero + + if (compare(data.byte(kWithobject), data.byte(kWithtype), cupEmpty)) { + // Fill cup + showPuzText(36, 300); + putBackObStuff(); + DynObject *exObject = getExAd(data.byte(kWithobject)); + exObject->id[3] = 'F'-'A'; // CUPE (empty cup) -> CUPF (full cup) + return; + } else if (compare(data.byte(kWithobject), data.byte(kWithtype), cupFull)) { + // Already full + showPuzText(14, 300); + showPuzText(); + putBackObStuff(); + } else { + showPuzText(35, 300); + putBackObStuff(); + } +} + } // End of namespace DreamGen |