DREAMWEB: Port 'selectopenob' to C++
This commit is contained in:
parent
e412078319
commit
3ac88c16ea
5 changed files with 35 additions and 47 deletions
|
@ -760,6 +760,7 @@ generator = cpp(context, "DreamGen", blacklist = [
|
|||
'seecommandtail',
|
||||
'selectlocation',
|
||||
'selectob',
|
||||
'selectopenob',
|
||||
'selectslot',
|
||||
'selectslot2',
|
||||
'set16colpalette',
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -478,7 +478,6 @@ public:
|
|||
void getDestInfo();
|
||||
void read();
|
||||
void searchForString();
|
||||
void selectOpenOb();
|
||||
void searchForFiles();
|
||||
void getExAd();
|
||||
void swapWithInv();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -197,5 +197,6 @@
|
|||
void lookAtPlace();
|
||||
void inToInv();
|
||||
void outOfInv();
|
||||
void selectOpenOb();
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue