Implemented a few new functions. Now you can control the crane in Full Throttle
svn-id: r4079
This commit is contained in:
parent
d0bb864d35
commit
f3aab1ce9c
3 changed files with 38 additions and 6 deletions
22
boxes.cpp
22
boxes.cpp
|
@ -74,6 +74,28 @@ Box *Scumm::getBoxBaseAddr(int box)
|
|||
return (Box *) (ptr + box * SIZEOF_BOX + 2);
|
||||
}
|
||||
|
||||
int Scumm::getSpecialBox(int param1, int param2)
|
||||
{
|
||||
int i;
|
||||
int numOfBoxes;
|
||||
byte flag;
|
||||
|
||||
numOfBoxes = getNumBoxes() - 1;
|
||||
|
||||
for(i=numOfBoxes;i>=0;i--)
|
||||
{
|
||||
flag = getBoxFlags(i);
|
||||
|
||||
if(!(flag & 0x80) && (flag & 0x20))
|
||||
return(-1);
|
||||
|
||||
if(checkXYInBoxBounds(i,param1,param2))
|
||||
return(i);
|
||||
}
|
||||
|
||||
return(-1);
|
||||
}
|
||||
|
||||
bool Scumm::checkXYInBoxBounds(int b, int x, int y)
|
||||
{
|
||||
BoxCoords box;
|
||||
|
|
|
@ -2708,8 +2708,8 @@ void Scumm::o6_miscOps()
|
|||
setCursorImg(args[1], (uint) - 1, args[2]);
|
||||
break;
|
||||
case 13:
|
||||
warning("o6_miscOps: stub13(%d,%d,%d,%d)", args[1], args[2], args[3],
|
||||
args[4]);
|
||||
remapActor(derefActorSafe(args[1], "o6_miscOps:14"), args[2], args[3],
|
||||
args[4], -1);
|
||||
break;
|
||||
case 14:
|
||||
remapActor(derefActorSafe(args[1], "o6_miscOps:14"), args[2], args[3],
|
||||
|
@ -2721,8 +2721,8 @@ void Scumm::o6_miscOps()
|
|||
case 16:
|
||||
byte buf[200];
|
||||
_msgPtrToAdd = buf;
|
||||
addMessageToStack(getStringAddress(_vars[VAR_STRING2DRAW]));
|
||||
//warning("o6_miscOps: drawString(%s,charset=%d,color=%d,x=%d,y=%d)",buf, args[1],args[2],args[3],args[4]);
|
||||
addMessageToStack(getStringAddressVar(VAR_STRING2DRAW));
|
||||
|
||||
break;
|
||||
case 17:
|
||||
warning("o6_miscOps: stub17(%d,%d,%d,%d)", args[1], args[2], args[3],
|
||||
|
@ -2888,8 +2888,7 @@ void Scumm::o6_kernelFunction()
|
|||
push(0);
|
||||
break;
|
||||
case 115:
|
||||
warning("o6_kernelFunction: stub115(%d,%d)", args[1], args[2]);
|
||||
push(0);
|
||||
push(getSpecialBox(args[1], args[2]));
|
||||
break;
|
||||
case 116:
|
||||
push(checkXYInBoxBounds(args[3], args[1], args[2]));
|
||||
|
@ -2915,6 +2914,16 @@ void Scumm::o6_kernelFunction()
|
|||
break;
|
||||
case 211:
|
||||
warning("o6_kernelFunction: getInput(%d)", args[1]);
|
||||
/*
|
||||
13 = thrust
|
||||
336 = thrust
|
||||
328 = thrust
|
||||
27 = abord
|
||||
97 = left
|
||||
331 = left
|
||||
115 = right
|
||||
333 = tight
|
||||
*/
|
||||
push(0);
|
||||
break;
|
||||
case 212:
|
||||
|
|
1
scumm.h
1
scumm.h
|
@ -1282,6 +1282,7 @@ public:
|
|||
void GetGates(int trap1,int trap2);
|
||||
bool inBoxQuickReject(int box, int x, int y, int threshold);
|
||||
AdjustBoxResult getClosestPtOnBox(int box, int x, int y);
|
||||
int getSpecialBox(int param1, int param2);
|
||||
|
||||
void setBoxFlags(int box, int val);
|
||||
void setBoxScale(int box, int b);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue