aboutsummaryrefslogtreecommitdiff
path: root/engines/cruise/object.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'engines/cruise/object.cpp')
-rw-r--r--engines/cruise/object.cpp530
1 files changed, 253 insertions, 277 deletions
diff --git a/engines/cruise/object.cpp b/engines/cruise/object.cpp
index 8f4b0eda47..e4500d9683 100644
--- a/engines/cruise/object.cpp
+++ b/engines/cruise/object.cpp
@@ -36,141 +36,133 @@ namespace Cruise {
*/
-objDataStruct* getObjectDataFromOverlay(int ovlIdx,int objIdx)
-{
- objDataStruct* var_6;
+objDataStruct *getObjectDataFromOverlay(int ovlIdx, int objIdx) {
+ objDataStruct *var_6;
- if(ovlIdx<1 || objIdx <0)
- return NULL;
+ if (ovlIdx < 1 || objIdx < 0)
+ return NULL;
- if(!overlayTable[ovlIdx].ovlData)
- return NULL;
+ if (!overlayTable[ovlIdx].ovlData)
+ return NULL;
- if(overlayTable[ovlIdx].ovlData->numObjData <= objIdx)
- return NULL;
+ if (overlayTable[ovlIdx].ovlData->numObjData <= objIdx)
+ return NULL;
- var_6 = overlayTable[ovlIdx].ovlData->objDataTable;
+ var_6 = overlayTable[ovlIdx].ovlData->objDataTable;
- if(!var_6)
- return NULL;
+ if (!var_6)
+ return NULL;
- return (&var_6[objIdx]);
+ return (&var_6[objIdx]);
}
-int16 getMultipleObjectParam(int16 overlayIdx,int16 objectIdx,objectParamsQuery* returnParam)
-{
- int16 size;
- int16 var_A;
- int16 var_14;
- objectParams* ptr2;
- objDataStruct* ptr;
- ovlDataStruct* ovlData;
+int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx,
+ objectParamsQuery *returnParam) {
+ int16 size;
+ int16 var_A;
+ int16 var_14;
+ objectParams *ptr2;
+ objDataStruct *ptr;
+ ovlDataStruct *ovlData;
// int16 type;
- ptr = getObjectDataFromOverlay(overlayIdx,objectIdx);
+ ptr = getObjectDataFromOverlay(overlayIdx, objectIdx);
- if(!ptr)
- return -11;
+ if (!ptr)
+ return -11;
- ovlData = overlayTable[overlayIdx].ovlData;
+ ovlData = overlayTable[overlayIdx].ovlData;
- switch(ptr->var1)
- {
+ switch (ptr->var1) {
case 0:
{
ptr2 = &ovlData->objData2SourceTable[ptr->var5];
- var_14 = globalVars[*(int16*)(&overlayTable[overlayIdx].field_14 + ptr->var6)];
+ var_14 = globalVars[*(int16 *) (&overlayTable[overlayIdx].field_14 + ptr->var6)];
var_A = ptr2->var5;
break;
}
- case 1:
- {
+ case 1:
+ {
ptr2 = &ovlData->objData2WorkTable[ptr->var4];
- var_A = var_14 = ptr2->var5;
- size = var_A + ptr->var5;
+ var_A = var_14 = ptr2->var5;
+ size = var_A + ptr->var5;
- if(ptr->var5 + var_14<=ovlData->size8)
- {
+ if (ptr->var5 + var_14 <= ovlData->size8) {
var_A = ovlData->objData2SourceTable[ptr->var5 + var_14].var5;
- }
- break;
- }
- default:
- {
- printf("unsupported case %d in getMultipleObjectParam\n", ptr->var1);
- exit(1);
- }
- }
+ }
+ break;
+ }
+ default:
+ {
+ printf("unsupported case %d in getMultipleObjectParam\n", ptr->var1);
+ exit(1);
+ }
+ }
returnParam->X = ptr2->X;
- returnParam->Y = ptr2->Y;
- returnParam->baseFileIdx = ptr2->baseFileIdx;
- returnParam->fileIdx = ptr2->var3;
- returnParam->scale = ptr2->scale;
- returnParam->var5 = var_14;
- returnParam->var6 = var_A;
- returnParam->var7 = ptr->var3;
-
- return 0;
+ returnParam->Y = ptr2->Y;
+ returnParam->baseFileIdx = ptr2->baseFileIdx;
+ returnParam->fileIdx = ptr2->var3;
+ returnParam->scale = ptr2->scale;
+ returnParam->var5 = var_14;
+ returnParam->var6 = var_A;
+ returnParam->var7 = ptr->var3;
+
+ return 0;
}
-void setObjectPosition(int16 param1,int16 objIdx,int16 param3,int16 param4)
-{
- objDataStruct* ptr;
- objectParams* ptr2;
+void setObjectPosition(int16 param1, int16 objIdx, int16 param3, int16 param4) {
+ objDataStruct *ptr;
+ objectParams *ptr2;
ptr = getObjectDataFromOverlay(param1, objIdx);
- if(!ptr)
- {
+ if (!ptr) {
return;
ASSERT(0);
}
-
//overlayTable[param1].ovlData
- switch(ptr->var1)
- {
+ switch (ptr->var1) {
case 1:
{
- ptr2 = &overlayTable[param1].ovlData->objData2WorkTable[ptr->var4];
-
- switch(param3)
- {
- case 0: // x
- {
- ptr2->X = param4;
- break;
- }
- case 1: // y
- {
- ptr2->Y = param4;
- break;
- }
- case 2: // base file
- {
- ptr2->baseFileIdx = param4;
- break;
- }
- case 3:
- {
- ptr2->var3 = param4;
- break;
- }
- case 4: // scale
+ ptr2 = &overlayTable[param1].ovlData->objData2WorkTable[ptr->var4];
+
+ switch (param3) {
+ case 0: // x
+ {
+ ptr2->X = param4;
+ break;
+ }
+ case 1: // y
+ {
+ ptr2->Y = param4;
+ break;
+ }
+ case 2: // base file
+ {
+ ptr2->baseFileIdx = param4;
+ break;
+ }
+ case 3:
+ {
+ ptr2->var3 = param4;
+ break;
+ }
+ case 4: // scale
{
ptr2->scale = param4;
break;
}
- case 5: // box colision
- {
- ptr2->var5 = param4;
- break;
- }
+ case 5: // box colision
+ {
+ ptr2->var5 = param4;
+ break;
+ }
default:
{
ASSERT(0);
@@ -186,212 +178,195 @@ void setObjectPosition(int16 param1,int16 objIdx,int16 param3,int16 param4)
}
}
-void Op_InitializeStateSub1(int16 param1, int16 param2, cellStruct* objPtr)
-{
- int16 var;
- cellStruct* var8_;
- cellStruct* var40;
- cellStruct* var3E;
- cellStruct* currentObjPtrPrevious;
- cellStruct* currentObjPtr2;
- cellStruct* match;
-
- getSingleObjectParam(param1,param2,2,&var);
-
- currentObjPtrPrevious = objPtr;
- currentObjPtr2 = objPtr->next;
-
- match = NULL;
- var40 = NULL;
- var3E = NULL;
- var8_ = objPtr;
-
- while(currentObjPtr2)
- {
- if((currentObjPtr2->overlay == param1) && (currentObjPtr2->idx == param2)) // found
- {
- currentObjPtrPrevious->next = currentObjPtr2->next;
-
- if(currentObjPtr2->next)
- {
- currentObjPtr2->next->prev = currentObjPtr2->prev;
- }
- else
- {
- objPtr->prev = currentObjPtr2->prev;
- }
-
- if(var40)
- {
- var40->prev = currentObjPtr2;
- }
- else
- {
- var3E = currentObjPtr2;
- }
-
- currentObjPtr2->prev = NULL;
-
- currentObjPtr2->next = var40;
-
- var40 = currentObjPtr2;
-
- if(match == NULL)
- {
- match = currentObjPtr2;
- }
- }
- else
- {
- if(currentObjPtr2->type == 5)
- {
- var2 = 32000;
- }
- else
- {
- int16 varC;
-
- getSingleObjectParam(currentObjPtr2->overlay,currentObjPtr2->idx,2,&varC);
-
- var2 = varC;
- }
-
- if(var>var2)
- {
- var8_ = currentObjPtr2;
- }
-
- currentObjPtrPrevious=currentObjPtrPrevious->next;
- }
-
- currentObjPtr2 = currentObjPtr2->next;
- }
-
- if(match)
- {
- cellStruct* temp;
-
- temp = var8_->next;
-
- var8_->next = var40;
- match->next = temp;
-
- if(objPtr!=var8_)
- {
- var40->prev = var8_;
- }
-
- if(!temp)
- {
- temp = match;
- }
-
- temp->prev = match;
- }
+void Op_InitializeStateSub1(int16 param1, int16 param2, cellStruct *objPtr) {
+ int16 var;
+ cellStruct *var8_;
+ cellStruct *var40;
+ cellStruct *var3E;
+ cellStruct *currentObjPtrPrevious;
+ cellStruct *currentObjPtr2;
+ cellStruct *match;
+
+ getSingleObjectParam(param1, param2, 2, &var);
+
+ currentObjPtrPrevious = objPtr;
+ currentObjPtr2 = objPtr->next;
+
+ match = NULL;
+ var40 = NULL;
+ var3E = NULL;
+ var8_ = objPtr;
+
+ while (currentObjPtr2) {
+ if ((currentObjPtr2->overlay == param1) && (currentObjPtr2->idx == param2)) {// found
+ currentObjPtrPrevious->next = currentObjPtr2->next;
+
+ if (currentObjPtr2->next) {
+ currentObjPtr2->next->prev =
+ currentObjPtr2->prev;
+ } else {
+ objPtr->prev = currentObjPtr2->prev;
+ }
+
+ if (var40) {
+ var40->prev = currentObjPtr2;
+ } else {
+ var3E = currentObjPtr2;
+ }
+
+ currentObjPtr2->prev = NULL;
+
+ currentObjPtr2->next = var40;
+
+ var40 = currentObjPtr2;
+
+ if (match == NULL) {
+ match = currentObjPtr2;
+ }
+ } else {
+ if (currentObjPtr2->type == 5) {
+ var2 = 32000;
+ } else {
+ int16 varC;
+
+ getSingleObjectParam(currentObjPtr2->overlay,
+ currentObjPtr2->idx, 2, &varC);
+
+ var2 = varC;
+ }
+
+ if (var > var2) {
+ var8_ = currentObjPtr2;
+ }
+
+ currentObjPtrPrevious = currentObjPtrPrevious->next;
+ }
+
+ currentObjPtr2 = currentObjPtr2->next;
+ }
+
+ if (match) {
+ cellStruct *temp;
+
+ temp = var8_->next;
+
+ var8_->next = var40;
+ match->next = temp;
+
+ if (objPtr != var8_) {
+ var40->prev = var8_;
+ }
+
+ if (!temp) {
+ temp = match;
+ }
+
+ temp->prev = match;
+ }
}
-int16 Op_InitializeStateSub(int ovlIdx,int objIdx,int param2)
-{
- objDataStruct* ptr;
+int16 Op_InitializeStateSub(int ovlIdx, int objIdx, int param2) {
+ objDataStruct *ptr;
// uint16 param;
- ovlDataStruct* ovlData;
-
- ptr = getObjectDataFromOverlay(ovlIdx,objIdx);
-
- if(!ptr)
- return -11;
-
- ovlData = overlayTable[ovlIdx].ovlData;
-
- switch(ptr->var1)
- {
- case 0:
- {
- globalVars[overlayTable[ovlIdx].field_14 + ptr->var6] = param2;
- Op_InitializeStateSub1(ovlIdx,param2,&cellHead);
- break;
- }
- case 1:
- {
- objectParams* destEntry;
- objectParams* sourceEntry;
-
- if(ptr->var5+param2 > ovlData->size8)
- {
- return 0;
- }
+ ovlDataStruct *ovlData;
+
+ ptr = getObjectDataFromOverlay(ovlIdx, objIdx);
+
+ if (!ptr)
+ return -11;
+
+ ovlData = overlayTable[ovlIdx].ovlData;
+
+ switch (ptr->var1) {
+ case 0:
+ {
+ globalVars[overlayTable[ovlIdx].field_14 + ptr->var6] =
+ param2;
+ Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+ break;
+ }
+ case 1:
+ {
+ objectParams *destEntry;
+ objectParams *sourceEntry;
+
+ if (ptr->var5 + param2 > ovlData->size8) {
+ return 0;
+ }
destEntry = &ovlData->objData2WorkTable[ptr->var4];
- sourceEntry = &ovlData->objData2SourceTable[ptr->var5 + param2];
+ sourceEntry =
+ &ovlData->objData2SourceTable[ptr->var5 + param2];
- memcpy(destEntry,sourceEntry,sizeof(objectParams));
+ memcpy(destEntry, sourceEntry, sizeof(objectParams));
- destEntry->var5 = param2;
+ destEntry->var5 = param2;
- Op_InitializeStateSub1(ovlIdx,param2,&cellHead);
- break;
- }
- default:
- {
- printf("Unsupported param = %d in Op_InitializeStateSub\n",ptr->var1);
- // exit(1);
- }
- }
+ Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+ break;
+ }
+ default:
+ {
+ printf
+ ("Unsupported param = %d in Op_InitializeStateSub\n",
+ ptr->var1);
+ // exit(1);
+ }
+ }
- return 0;
+ return 0;
}
-int16 getSingleObjectParam(int16 overlayIdx,int16 param2,int16 param3,int16* returnParam)
-{
+int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3,
+ int16 *returnParam) {
int var_A = 0;
//char* ptr3 = NULL;
- objDataStruct* ptr;
- ovlDataStruct* ovlData;
- objectParams* ptr2;
+ objDataStruct *ptr;
+ ovlDataStruct *ovlData;
+ objectParams *ptr2;
- ptr = getObjectDataFromOverlay(overlayIdx,param2);
+ ptr = getObjectDataFromOverlay(overlayIdx, param2);
- if(!ptr)
- return -11;
+ if (!ptr)
+ return -11;
- ovlData = overlayTable[overlayIdx].ovlData;
+ ovlData = overlayTable[overlayIdx].ovlData;
- switch(ptr->var1)
- {
+ switch (ptr->var1) {
case 0:
- case 3:
+ case 3:
{
var_A = globalVars[ptr->var6];
ptr2 = &ovlData->objData2SourceTable[ptr->var5];
- break;
+ break;
}
- case 1:
- {
+ case 1:
+ {
ptr2 = &ovlData->objData2WorkTable[ptr->var4];
- var_A = ptr2->var5;
- break;
- }
- default:
- {
- printf("Unsupported case %d in getSingleObjectParam\n",ptr->var1);
- exit(1);
- }
- }
-
- switch(param3)
- {
- case 0:
- {
- *returnParam = ptr2->X;
- break;
- }
- case 1:
- {
- *returnParam = ptr2->Y;
- break;
- }
+ var_A = ptr2->var5;
+ break;
+ }
+ default:
+ {
+ printf("Unsupported case %d in getSingleObjectParam\n",
+ ptr->var1);
+ exit(1);
+ }
+ }
+
+ switch (param3) {
+ case 0:
+ {
+ *returnParam = ptr2->X;
+ break;
+ }
+ case 1:
+ {
+ *returnParam = ptr2->Y;
+ break;
+ }
case 2:
{
*returnParam = ptr2->baseFileIdx;
@@ -399,7 +374,7 @@ int16 getSingleObjectParam(int16 overlayIdx,int16 param2,int16 param3,int16* ret
}
case 3:
{
- *returnParam = ptr2->var3;
+ *returnParam = ptr2->var3;
break;
}
case 4:
@@ -409,18 +384,19 @@ int16 getSingleObjectParam(int16 overlayIdx,int16 param2,int16 param3,int16* ret
}
case 5:
{
- *returnParam = var_A;
+ *returnParam = var_A;
break;
}
default:
{
- printf("Unsupported case %d in getSingleObjectParam case 1\n",param3);
+ printf
+ ("Unsupported case %d in getSingleObjectParam case 1\n",
+ param3);
exit(1);
}
}
- return 0;
+ return 0;
}
-
} // End of namespace Cruise