mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 21:59:17 +00:00
DREAMWEB: Port 'useopenbox' to C++
This commit is contained in:
parent
ef94b2d15a
commit
9480b21840
@ -802,6 +802,7 @@ generator = cpp(context, "DreamGen", blacklist = [
|
||||
'usemenu',
|
||||
'usemon',
|
||||
'useobject',
|
||||
'useopenbox',
|
||||
'usepipe',
|
||||
'useplate',
|
||||
'useplinth',
|
||||
|
@ -3590,58 +3590,6 @@ void DreamGenContext::notHeldError() {
|
||||
putBackObStuff();
|
||||
}
|
||||
|
||||
void DreamGenContext::useOpenBox() {
|
||||
STACK_CHECK;
|
||||
_cmp(data.byte(kWithobject), 255);
|
||||
if (!flags.z())
|
||||
goto openboxwith;
|
||||
withWhat();
|
||||
return;
|
||||
openboxwith:
|
||||
al = data.byte(kWithobject);
|
||||
ah = data.byte(kWithtype);
|
||||
cl = 'C';
|
||||
ch = 'U';
|
||||
dl = 'P';
|
||||
dh = 'F';
|
||||
compare();
|
||||
if (flags.z())
|
||||
goto destoryopenbox;
|
||||
al = data.byte(kWithobject);
|
||||
ah = data.byte(kWithtype);
|
||||
cl = 'C';
|
||||
ch = 'U';
|
||||
dl = 'P';
|
||||
dh = 'E';
|
||||
compare();
|
||||
if (flags.z())
|
||||
goto openboxwrong;
|
||||
showFirstUse();
|
||||
return;
|
||||
destoryopenbox:
|
||||
_inc(data.byte(kProgresspoints));
|
||||
cx = 300;
|
||||
al = 37;
|
||||
showPuzText();
|
||||
al = data.byte(kWithobject);
|
||||
getExAd();
|
||||
es.byte(bx+15) = 'E'-'A';
|
||||
data.word(kWatchingtime) = 140;
|
||||
data.word(kReeltowatch) = 105;
|
||||
data.word(kEndwatchreel) = 181;
|
||||
data.byte(kWatchspeed) = 1;
|
||||
data.byte(kSpeedcount) = 1;
|
||||
al = 4;
|
||||
turnPathOn();
|
||||
data.byte(kGetback) = 1;
|
||||
return;
|
||||
openboxwrong:
|
||||
cx = 300;
|
||||
al = 38;
|
||||
showPuzText();
|
||||
putBackObStuff();
|
||||
}
|
||||
|
||||
void DreamGenContext::useAltar() {
|
||||
STACK_CHECK;
|
||||
al = 'C';
|
||||
|
@ -488,7 +488,6 @@ public:
|
||||
|
||||
void identifyOb();
|
||||
void runEndSeq();
|
||||
void useOpenBox();
|
||||
void clearBuffers();
|
||||
void getObTextStart();
|
||||
void checkObjectSize();
|
||||
|
@ -333,6 +333,7 @@
|
||||
void useLighter();
|
||||
void useSLab();
|
||||
void usePipe();
|
||||
void useOpenBox();
|
||||
void wheelSound();
|
||||
void callHotelLift();
|
||||
void useShield();
|
||||
|
@ -1341,4 +1341,39 @@ void DreamGenContext::usePipe() {
|
||||
}
|
||||
}
|
||||
|
||||
void DreamGenContext::useOpenBox() {
|
||||
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), cupFull)) {
|
||||
// Destroy open box
|
||||
data.byte(kProgresspoints)++;
|
||||
showPuzText(37, 300);
|
||||
DynObject *exObject = getExAd(data.byte(kWithobject));
|
||||
exObject->id[3] = 'E'-'A'; // CUPF (full cup) -> CUPE (empty cup)
|
||||
data.word(kWatchingtime) = 140;
|
||||
data.word(kReeltowatch) = 105;
|
||||
data.word(kEndwatchreel) = 181;
|
||||
data.byte(kWatchspeed) = 1;
|
||||
data.byte(kSpeedcount) = 1;
|
||||
turnPathOn(4);
|
||||
data.byte(kGetback) = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
if (compare(data.byte(kWithobject), data.byte(kWithtype), cupEmpty)) {
|
||||
// Open box wrong
|
||||
showPuzText(38, 300);
|
||||
putBackObStuff();
|
||||
return;
|
||||
}
|
||||
|
||||
showFirstUse();
|
||||
}
|
||||
|
||||
} // End of namespace DreamGen
|
||||
|
Loading…
Reference in New Issue
Block a user