DREAMWEB: Port 'selectopenob' to C++

This commit is contained in:
Filippos Karapetis 2011-12-25 14:30:00 +02:00
parent e412078319
commit 3ac88c16ea
5 changed files with 35 additions and 47 deletions

View file

@ -760,6 +760,7 @@ generator = cpp(context, "DreamGen", blacklist = [
'seecommandtail',
'selectlocation',
'selectob',
'selectopenob',
'selectslot',
'selectslot2',
'set16colpalette',

View file

@ -537,52 +537,6 @@ findopenp1:
_add(bx, (0+(228*13)));
}
void DreamGenContext::selectOpenOb() {
STACK_CHECK;
al = data.byte(kCommand);
getAnyAd();
_cmp(al, 255);
if (!flags.z())
goto canopenit1;
blank();
return;
canopenit1:
_cmp(data.byte(kCommandtype), 224);
if (flags.z())
goto alreadyopob;
data.byte(kCommandtype) = 224;
bl = data.byte(kCommand);
bh = data.byte(kObjecttype);
al = 38;
commandWithOb();
alreadyopob:
ax = data.word(kMousebutton);
_cmp(ax, data.word(kOldbutton));
if (flags.z())
return /* (noopenob) */;
_and(ax, 1);
if (!flags.z())
goto doopenob;
return;
doopenob:
al = data.byte(kCommand);
data.byte(kOpenedob) = al;
al = data.byte(kObjecttype);
data.byte(kOpenedtype) = al;
createPanel();
showPanel();
showMan();
examIcon();
showExit();
openInv();
openOb();
underTextLine();
readMouse();
showPointer();
workToScreen();
delPointer();
}
void DreamGenContext::useOpened() {
STACK_CHECK;
_cmp(data.byte(kOpenedob), 255);

View file

@ -478,7 +478,6 @@ public:
void getDestInfo();
void read();
void searchForString();
void selectOpenOb();
void searchForFiles();
void getExAd();
void swapWithInv();

View file

@ -793,4 +793,37 @@ bool DreamGenContext::checkObjectSizeCPP() {
return false;
}
void DreamGenContext::selectOpenOb() {
uint8 slotSize, slotCount;
getAnyAd(&slotSize, &slotCount);
if (slotCount == 255) {
// Can't open the object
blank();
return;
}
if (data.byte(kCommandtype) != 224) {
data.byte(kCommandtype) = 224;
commandWithOb(38, data.byte(kObjecttype), data.byte(kCommand));
}
if (data.word(kMousebutton) == data.word(kOldbutton) || !(data.word(kMousebutton) & 1))
return;
data.byte(kOpenedob) = data.byte(kCommand);
data.byte(kOpenedtype) = data.byte(kObjecttype);
createPanel();
showPanel();
showMan();
examIcon();
showExit();
openInv();
openOb();
underTextLine();
readMouse();
showPointer();
workToScreenCPP();
delPointer();
}
} // End of namespace DreamGen

View file

@ -197,5 +197,6 @@
void lookAtPlace();
void inToInv();
void outOfInv();
void selectOpenOb();
#endif