mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-15 06:08:35 +00:00
DREAMWEB: Port 'identifyob' to C++
This commit is contained in:
parent
12cac260c9
commit
984010faae
@ -480,6 +480,7 @@ generator = cpp(context, "DreamGen", blacklist = [
|
||||
'helicopter',
|
||||
'hotelbell',
|
||||
'hotelcontrol',
|
||||
'identifyob',
|
||||
'initialinv',
|
||||
'initman',
|
||||
'initrain',
|
||||
|
@ -3104,69 +3104,6 @@ void DreamGenContext::clearChanges() {
|
||||
_stosw(cx, true);
|
||||
}
|
||||
|
||||
void DreamGenContext::identifyOb() {
|
||||
STACK_CHECK;
|
||||
_cmp(data.word(kWatchingtime), 0);
|
||||
if (!flags.z())
|
||||
{ blank(); return; };
|
||||
ax = data.word(kMousex);
|
||||
_sub(ax, data.word(kMapadx));
|
||||
_cmp(ax, 22*8);
|
||||
if (flags.c())
|
||||
goto notover1;
|
||||
blank();
|
||||
return;
|
||||
notover1:
|
||||
bx = data.word(kMousey);
|
||||
_sub(bx, data.word(kMapady));
|
||||
_cmp(bx, 20*8);
|
||||
if (flags.c())
|
||||
goto notover2;
|
||||
blank();
|
||||
return;
|
||||
notover2:
|
||||
data.byte(kInmaparea) = 1;
|
||||
ah = bl;
|
||||
push(ax);
|
||||
findPathOfPoint();
|
||||
data.byte(kPointerspath) = dl;
|
||||
ax = pop();
|
||||
push(ax);
|
||||
findFirstPath();
|
||||
data.byte(kPointerfirstpath) = al;
|
||||
ax = pop();
|
||||
checkIfEx();
|
||||
if (!flags.z())
|
||||
return /* (finishidentify) */;
|
||||
checkIfFree();
|
||||
if (!flags.z())
|
||||
return /* (finishidentify) */;
|
||||
checkIfPerson();
|
||||
if (!flags.z())
|
||||
return /* (finishidentify) */;
|
||||
checkIfSet();
|
||||
if (!flags.z())
|
||||
return /* (finishidentify) */;
|
||||
ax = data.word(kMousex);
|
||||
_sub(ax, data.word(kMapadx));
|
||||
cl = al;
|
||||
ax = data.word(kMousey);
|
||||
_sub(ax, data.word(kMapady));
|
||||
ch = al;
|
||||
checkOne();
|
||||
_cmp(al, 0);
|
||||
if (flags.z())
|
||||
goto nothingund;
|
||||
_cmp(data.byte(kMandead), 1);
|
||||
if (flags.z())
|
||||
goto nothingund;
|
||||
ah = 3;
|
||||
obName();
|
||||
return;
|
||||
nothingund:
|
||||
blank();
|
||||
}
|
||||
|
||||
void DreamGenContext::findPathOfPoint() {
|
||||
STACK_CHECK;
|
||||
push(ax);
|
||||
|
@ -475,12 +475,11 @@ public:
|
||||
#include "stubs.h" // Allow hand-reversed functions to have a signature different than void f()
|
||||
|
||||
void fadeDownMon();
|
||||
void identifyOb();
|
||||
void getPersonText();
|
||||
void clearBuffers();
|
||||
void getObTextStart();
|
||||
void checkObjectSize();
|
||||
void fillOpen();
|
||||
void showSlots();
|
||||
void useCashCard();
|
||||
void moneyPoke();
|
||||
void doSomeTalk();
|
||||
@ -519,7 +518,7 @@ public:
|
||||
void rollEm();
|
||||
void lookAtPlace();
|
||||
void findAllOpen();
|
||||
void showSlots();
|
||||
void fillOpen();
|
||||
void deleteExObject();
|
||||
void getEitherAd();
|
||||
void setPickup();
|
||||
|
@ -312,4 +312,42 @@ void DreamGenContext::openOb() {
|
||||
_openChangeSize = getOpenedSizeCPP() * kItempicsize + kInventx;
|
||||
}
|
||||
|
||||
void DreamGenContext::identifyOb() {
|
||||
if (data.word(kWatchingtime) != 0 ||
|
||||
data.word(kMousex) - data.word(kMapadx) >= 22 * 8 ||
|
||||
data.word(kMousey) - data.word(kMapady) >= 20 * 8) {
|
||||
blank();
|
||||
return;
|
||||
}
|
||||
|
||||
data.byte(kInmaparea) = 1;
|
||||
ah = bl;
|
||||
push(ax);
|
||||
findPathOfPoint();
|
||||
data.byte(kPointerspath) = dl;
|
||||
ax = pop();
|
||||
push(ax);
|
||||
findFirstPath();
|
||||
data.byte(kPointerfirstpath) = al;
|
||||
ax = pop();
|
||||
|
||||
byte x = al;
|
||||
byte y = ah;
|
||||
|
||||
if (checkIfEx(x, y) || checkIfFree(x, y) ||
|
||||
checkIfPerson(x, y) || checkIfSet(x, y))
|
||||
return; // finishidentify
|
||||
|
||||
x = (data.word(kMousex) - data.word(kMapadx)) & 0xFF;
|
||||
y = (data.word(kMousey) - data.word(kMapady)) & 0xFF;
|
||||
byte flag, flagEx, type, flagX, flagY;
|
||||
|
||||
checkOne(x, y, &flag, &flagEx, &type, &flagX, &flagY);
|
||||
|
||||
if (type != 0 && data.byte(kMandead) != 1)
|
||||
obName(type, 3);
|
||||
else
|
||||
blank();
|
||||
}
|
||||
|
||||
} // End of namespace DreamGen
|
||||
|
@ -392,5 +392,6 @@
|
||||
void withWhat();
|
||||
void notHeldError();
|
||||
void useGun();
|
||||
void identifyOb();
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user