[Scummvm-cvs-logs] SF.net SVN: scummvm: [26666] scummvm/trunk/engines/cruise
yazoo at users.sourceforge.net
yazoo at users.sourceforge.net
Sun Apr 29 00:31:56 CEST 2007
Revision: 26666
http://scummvm.svn.sourceforge.net/scummvm/?rev=26666&view=rev
Author: yazoo
Date: 2007-04-28 15:31:55 -0700 (Sat, 28 Apr 2007)
Log Message:
-----------
More cleanup
Few bug fix
Modified Paths:
--------------
scummvm/trunk/engines/cruise/actor.cpp
scummvm/trunk/engines/cruise/actor.h
scummvm/trunk/engines/cruise/cell.cpp
scummvm/trunk/engines/cruise/cell.h
scummvm/trunk/engines/cruise/cruise_main.cpp
scummvm/trunk/engines/cruise/dataLoader.cpp
scummvm/trunk/engines/cruise/decompiler.cpp
scummvm/trunk/engines/cruise/detection.cpp
scummvm/trunk/engines/cruise/function.cpp
scummvm/trunk/engines/cruise/mainDraw.cpp
scummvm/trunk/engines/cruise/object.cpp
scummvm/trunk/engines/cruise/object.h
scummvm/trunk/engines/cruise/overlay.cpp
scummvm/trunk/engines/cruise/overlay.h
scummvm/trunk/engines/cruise/saveload.cpp
scummvm/trunk/engines/cruise/script.cpp
scummvm/trunk/engines/cruise/script.h
scummvm/trunk/engines/cruise/various.cpp
scummvm/trunk/engines/cruise/various.h
Modified: scummvm/trunk/engines/cruise/actor.cpp
===================================================================
--- scummvm/trunk/engines/cruise/actor.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/actor.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -774,11 +774,7 @@
getMultipleObjectParam(currentActor->overlayNumber,
currentActor->idx, ¶ms);
- if (((animationStart && !currentActor->flag)
- || (!animationStart
- && currentActor->x_dest != -1
- && currentActor->y_dest != -1))
- && (currentActor->type == 0)) {
+ if (((animationStart && !currentActor->flag) || (!animationStart && currentActor->x_dest != -1 && currentActor->y_dest != -1)) && (currentActor->type == 0)) {
// mouse animation
if (!animationStart) {
var34 = currentActor->x_dest;
@@ -790,11 +786,7 @@
currentActor->flag = 1;
}
- currentActor->pathId =
- computePathfinding(returnVar2, params.X,
- params.Y, var34, var35,
- currentActor->stepX, currentActor->stepY,
- currentActor->pathId);
+ currentActor->pathId = computePathfinding(returnVar2, params.X, params.Y, var34, var35, currentActor->stepX, currentActor->stepY, currentActor->pathId);
if (currentActor->pathId == -1) {
if ((currentActor->endDirection != -1)
@@ -1136,31 +1128,19 @@
}
case ANIM_PHASE_END:
{
- int newA =
- raoul_end[currentActor->
- startDirection][0];
+ int newA = raoul_end[currentActor->startDirection][0];
- set_anim(currentActor->
- overlayNumber,
- currentActor->idx,
- currentActor->start,
- currentActor->x,
- currentActor->y, newA,
- currentActor->poly);
+ set_anim(currentActor->overlayNumber, currentActor->idx, currentActor->start, currentActor->x, currentActor->y, newA, currentActor->poly);
currentActor->pathId = -2;
- currentActor->phase =
- ANIM_PHASE_WAIT;
+ currentActor->phase = ANIM_PHASE_WAIT;
currentActor->flag = 0;
- currentActor->endDirection =
- -1;
+ currentActor->endDirection = -1;
break;
}
default:
{
- printf
- ("Unimplemented currentActor->phase=%d in processAnimation()\n",
- currentActor->phase);
+ printf("Unimplemented currentActor->phase=%d in processAnimation()\n", currentActor->phase);
// exit(1);
}
}
Modified: scummvm/trunk/engines/cruise/actor.h
===================================================================
--- scummvm/trunk/engines/cruise/actor.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/actor.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -64,10 +64,13 @@
typedef struct actorStruct actorStruct;
-int16 mainProc13(int overlayIdx, int param1, actorStruct * pStartEntry,
- int param2);
-actorStruct *findActor(int overlayIdx, int param1, actorStruct * pStartEntry,
- int param2);
+extern int raoul_move[][13];
+extern int raoul_end[][13];
+extern int raoul_stat[][13];
+extern int raoul_invstat[][13];
+
+int16 mainProc13(int overlayIdx, int param1, actorStruct * pStartEntry, int param2);
+actorStruct *findActor(int overlayIdx, int param1, actorStruct * pStartEntry, int param2);
void processAnimation(void);
void getPixel(int x, int y);
Modified: scummvm/trunk/engines/cruise/cell.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cell.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cell.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -32,6 +32,15 @@
ptr->prev = NULL;
}
+void freeMessageList(cellStruct *objPtr) {
+/* if (objPtr) {
+ if(objPtr->next)
+ free(objPtr->next);
+
+ free(objPtr);
+ } */
+}
+
void loadSavegameDataSub2(FILE *f) {
unsigned short int n_chunks;
int i;
@@ -60,9 +69,7 @@
}
}
-cellStruct *addCell(int16 overlayIdx, int16 param2, cellStruct *pHead,
- int16 scriptType, int16 scriptNumber, int16 scriptOverlay, int16 param3,
- int16 param4) {
+cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 type, int16 backgroundPlane, int16 scriptOverlay, int16 scriptNumber, int16 scriptType) {
int16 var;
cellStruct *newElement;
@@ -70,7 +77,7 @@
cellStruct *currentHead2;
cellStruct *currentHead3;
- if (getSingleObjectParam(overlayIdx, param2, 2, &var) < 0) {
+ if (getSingleObjectParam(overlayIdx, objIdx, 2, &var) < 0) {
return 0;
}
@@ -85,8 +92,7 @@
if (currentHead2->type != 5) {
int16 lvar2;
- getSingleObjectParam(currentHead2->overlay,
- currentHead2->idx, 2, &lvar2);
+ getSingleObjectParam(currentHead2->overlay, currentHead2->idx, 2, &lvar2);
if (lvar2 > var)
break;
@@ -98,9 +104,9 @@
if (currentHead2) {
if ((currentHead2->overlay == overlayIdx) &&
- (currentHead2->backgroundPlane == param3) &&
- (currentHead2->idx == param2) &&
- (currentHead2->type == param4))
+ (currentHead2->backgroundPlane == backgroundPlane) &&
+ (currentHead2->idx == objIdx) &&
+ (currentHead2->type == type))
return NULL;
}
@@ -115,25 +121,26 @@
newElement->next = currentHead3->next;
currentHead3->next = newElement;
- newElement->idx = param2;
- newElement->type = param4;
- newElement->backgroundPlane = param3;
+ newElement->idx = objIdx;
+ newElement->type = type;
+ newElement->backgroundPlane = backgroundPlane;
newElement->overlay = overlayIdx;
newElement->freeze = 0;
- newElement->field_16 = scriptNumber;
- newElement->field_18 = scriptOverlay;
+ newElement->parent = scriptNumber;
+ newElement->parentOverlay = scriptOverlay;
newElement->gfxPtr = NULL;
- newElement->followObjectIdx = param2;
+ newElement->followObjectIdx = objIdx;
newElement->followObjectOverlayIdx = overlayIdx;
- newElement->field_1A = scriptType;
- newElement->field_20 = 0;
- newElement->field_22 = 0;
- newElement->nextAnimDelay = 0;
- newElement->field_2C = 0;
- newElement->currentAnimDelay = 0;
- newElement->field_2A = 0;
+ newElement->parentType = scriptType;
+
+ newElement->animStart = 0;
+ newElement->animEnd = 0;
+ newElement->animWait = 0;
+ newElement->animSignal = 0;
+ newElement->animCounter = 0;
+ newElement->animType = 0;
newElement->animStep = 0;
- newElement->field_30 = 0;
+ newElement->animLoop = 0;
if (currentHead) {
newElement->prev = currentHead->prev;
@@ -146,4 +153,208 @@
return newElement;
}
+void createTextObject(int overlayIdx, int oldVar8, cellStruct *pObject, int scriptNumber, int scriptOverlayNumber, int backgroundPlane, int16 color, int oldVar2, int oldVar4, int oldVar6) {
+
+ char *ax;
+ cellStruct *savePObject = pObject;
+ cellStruct *cx;
+
+ cellStruct *pNewElement;
+ cellStruct *si = pObject->next;
+ cellStruct *var_2;
+
+ while (si) {
+ pObject = si;
+ si = si->next;
+ }
+
+ var_2 = si;
+
+ pNewElement = (cellStruct *) malloc(sizeof(cellStruct));
+
+ pNewElement->next = pObject->next;
+ pObject->next = pNewElement;
+
+ pNewElement->idx = oldVar8;
+ pNewElement->type = 5;
+ pNewElement->backgroundPlane = backgroundPlane;
+ pNewElement->overlay = overlayIdx;
+ pNewElement->x = oldVar6;
+ pNewElement->field_C = oldVar4;
+ pNewElement->spriteIdx = oldVar2;
+ pNewElement->color = color;
+ pNewElement->freeze = 0;
+ pNewElement->parent = scriptNumber;
+ pNewElement->parentOverlay = scriptOverlayNumber;
+ pNewElement->gfxPtr = NULL;
+
+ if (var_2) {
+ cx = var_2;
+ } else {
+ cx = savePObject;
+ }
+
+ pNewElement->prev = cx->prev;
+ cx->prev = pNewElement;
+
+ ax = getText(oldVar8, overlayIdx);
+
+ if (ax) {
+ pNewElement->gfxPtr = renderText(oldVar2, (uint8 *) ax);
+ }
+}
+
+void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, int backgroundPlane ) {
+ cellStruct *currentObj = objPtr->next;
+ cellStruct *previous;
+
+ while (currentObj) {
+ if (((currentObj->overlay == ovlNumber) || (ovlNumber == -1)) &&
+ ((currentObj->idx == objectIdx) || (objectIdx == -1)) &&
+ ((currentObj->type == objType) || (objType == -1)) &&
+ ((currentObj->backgroundPlane == backgroundPlane) || (backgroundPlane == -1))) {
+ currentObj->type = -1;
+ }
+
+ currentObj = currentObj->next;
+ }
+
+ previous = objPtr;
+ currentObj = objPtr->next;
+
+ while (currentObj) {
+ cellStruct *si;
+
+ si = currentObj;
+
+ if (si->type == -1) {
+ cellStruct *dx;
+ previous->next = si->next;
+
+ dx = si->next;
+
+ if (!si->next) {
+ dx = objPtr;
+ }
+
+ dx->prev = si->prev;
+
+ // TODO: complelty wrong
+ //freeMessageList(si);
+
+ free(si);
+
+ currentObj = dx;
+ } else {
+ currentObj = si->next;
+ previous = si;
+ }
+ }
+}
+
+void freezeCell(cellStruct * pObject, int overlayIdx, int objIdx, int objType, int backgroundPlane, int oldFreeze, int newFreeze ) {
+ while (pObject) {
+ if ((pObject->overlay == overlayIdx) || (overlayIdx == -1)) {
+ if ((pObject->idx == objIdx) || (objIdx == -1)) {
+ if ((pObject->type == objType) || (objType == -1)) {
+ if ((pObject->backgroundPlane == backgroundPlane) || (backgroundPlane == -1)) {
+ if ((pObject->freeze == oldFreeze) || (oldFreeze == -1)) {
+ pObject->freeze = newFreeze;
+ }
+ }
+ }
+ }
+ }
+
+ pObject = pObject->next;
+ }
+}
+
+void sortCells(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;
+ }
+}
+
} // End of namespace Cruise
Modified: scummvm/trunk/engines/cruise/cell.h
===================================================================
--- scummvm/trunk/engines/cruise/cell.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cell.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -38,26 +38,26 @@
int16 idx;
int16 type;
int16 overlay;
- int16 field_A;
+ int16 x;
int16 field_C;
int16 spriteIdx;
int16 color;
int16 backgroundPlane;
int16 freeze;
- int16 field_16;
- int16 field_18;
- int16 field_1A;
+ int16 parent;
+ int16 parentOverlay;
+ int16 parentType;
int16 followObjectOverlayIdx;
int16 followObjectIdx;
- int16 field_20;
- int16 field_22;
- int16 nextAnimDelay;
+ int16 animStart;
+ int16 animEnd;
+ int16 animWait;
int16 animStep;
- int16 field_28;
- int16 field_2A;
- int16 field_2C;
- int16 currentAnimDelay;
- int16 field_30;
+ int16 animChange;
+ int16 animType;
+ int16 animSignal;
+ int16 animCounter;
+ int16 animLoop;
gfxEntryStruct *gfxPtr;
};
@@ -65,9 +65,11 @@
void resetPtr(cellStruct * ptr);
void loadSavegameDataSub2(FILE * f);
-cellStruct *addCell(int16 overlayIdx, int16 param2, cellStruct * pHead,
- int16 scriptType, int16 scriptNumber, int16 scriptOverlay, int16 param3,
- int16 param4);
+cellStruct *addCell(cellStruct *pHead, int16 overlayIdx, int16 objIdx, int16 type, int16 backgroundPlane, int16 scriptOverlay, int16 scriptNumber, int16 scriptType);
+void createTextObject(int overlayIdx, int oldVar8, cellStruct * pObject, int scriptNumber, int scriptOverlayNumber, int backgroundPlane, int16 color, int oldVar2, int oldVar4, int oldVar6);
+void removeCell(cellStruct *objPtr, int ovlNumber, int objectIdx, int objType, int backgroundPlane );
+void freezeCell(cellStruct * pObject, int overlayIdx, int objIdx, int objType, int backgroundPlane, int oldFreeze, int newFreeze );
+void sortCells(int16 param1, int16 param2, cellStruct *objPtr);
} // End of namespace Cruise
Modified: scummvm/trunk/engines/cruise/cruise_main.cpp
===================================================================
--- scummvm/trunk/engines/cruise/cruise_main.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/cruise_main.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -480,8 +480,8 @@
initBigVar3();
- resetPtr2(&scriptHandle2);
- resetPtr2(&scriptHandle1);
+ resetPtr2(&procHead);
+ resetPtr2(&relHead);
resetPtr(&cellHead);
@@ -579,9 +579,8 @@
if (bootOverlayNumber) {
positionInStack = 0;
- attacheNewScriptToTail(bootOverlayNumber, &scriptHandle2, 0,
- 20, 0, 0, scriptType_20);
- scriptFunc2(bootOverlayNumber, &scriptHandle2, 1, 0);
+ attacheNewScriptToTail(bootOverlayNumber, &procHead, 0, 20, 0, 0, scriptType_PROC);
+ scriptFunc2(bootOverlayNumber, &procHead, 1, 0);
}
strcpyuint8(systemStrings.bootScriptName, "AUTO00");
@@ -878,7 +877,7 @@
getObjectDataFromOverlay(overlayIdx, objIdx);
if (pObjectData) {
- return pObjectData->var1;
+ return pObjectData->type;
} else {
return -11;
}
@@ -1029,7 +1028,7 @@
var_34->stringNameOffset) {
if (pObject) {
if (pObject->
- var1 !=
+ type !=
3) {
char var_214[80];
char var_1C4[80];
@@ -1163,7 +1162,7 @@
if (strlen(var_214)) {
attacheNewScriptToTail
(var_1E,
- &scriptHandle1,
+ &relHead,
var_34->
field_2,
30,
@@ -1171,7 +1170,7 @@
scriptNumber,
currentScriptPtr->
overlayNumber,
- scriptType_30);
+ scriptType_REL);
} else {
if (var_22->specialString1) {
ptr = getObjectName(var_34->varNameOffset, var_22->specialString1);
@@ -1531,11 +1530,11 @@
enableUser = 0;
}
- manageScripts(&scriptHandle1);
- manageScripts(&scriptHandle2);
+ manageScripts(&relHead);
+ manageScripts(&procHead);
- removeFinishedScripts(&scriptHandle1);
- removeFinishedScripts(&scriptHandle2);
+ removeFinishedScripts(&relHead);
+ removeFinishedScripts(&procHead);
processAnimation();
Modified: scummvm/trunk/engines/cruise/dataLoader.cpp
===================================================================
--- scummvm/trunk/engines/cruise/dataLoader.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/dataLoader.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -185,8 +185,7 @@
return (-2);
filesDatabase[entryNumber].widthInColumn = width;
- filesDatabase[entryNumber].subData.ptr2 =
- filesDatabase[entryNumber].subData.ptr + size;
+ filesDatabase[entryNumber].subData.ptr2 = filesDatabase[entryNumber].subData.ptr + size;
filesDatabase[entryNumber].width = width / 8;
filesDatabase[entryNumber].resType = resType;
filesDatabase[entryNumber].height = height;
@@ -225,16 +224,14 @@
width = (width * 8) / 5;
}
- filesDatabase[entryNumber].subData.ptr =
- (uint8 *) mallocAndZero(size + div);
+ filesDatabase[entryNumber].subData.ptr = (uint8 *) mallocAndZero(size + div);
if (filesDatabase[entryNumber].subData.ptr) {
return (-2);
}
filesDatabase[entryNumber].widthInColumn = width;
- filesDatabase[entryNumber].subData.ptr2 =
- filesDatabase[entryNumber].subData.ptr + size;
+ filesDatabase[entryNumber].subData.ptr2 = filesDatabase[entryNumber].subData.ptr + size;
filesDatabase[entryNumber].width = width / 8;
filesDatabase[entryNumber].resType = resType;
filesDatabase[entryNumber].height = height;
Modified: scummvm/trunk/engines/cruise/decompiler.cpp
===================================================================
--- scummvm/trunk/engines/cruise/decompiler.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/decompiler.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -837,7 +837,7 @@
}
case 0x8:
{
- sprintf(tempbuffer, "_removeObjectFromList(%s,%s,%s)",
+ sprintf(tempbuffer, "_removeCell(%s,%s,%s)",
popDecomp(), popDecomp(), popDecomp());
pushDecomp(tempbuffer);
break;
Modified: scummvm/trunk/engines/cruise/detection.cpp
===================================================================
--- scummvm/trunk/engines/cruise/detection.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/detection.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -75,7 +75,7 @@
{
{
"cruise",
- "",
+ "256 colors",
AD_ENTRY1("D1", "a90d2b9ead6b4d812cd14268672cf178"),
Common::EN_ANY,
Common::kPlatformPC,
Modified: scummvm/trunk/engines/cruise/function.cpp
===================================================================
--- scummvm/trunk/engines/cruise/function.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/function.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -30,19 +30,6 @@
opcodeFunction opcodeTablePtr[256];
-struct actorTableStruct {
- int data[13];
-};
-
-typedef struct actorTableStruct actorTableStruct;
-
-actorTableStruct actorTable1[] = {
- { { 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
- { { 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
- { { 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } },
- { {-38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
-};
-
int16 Op_LoadOverlay(void) {
uint8 *originalScriptName;
uint8 scriptName[38];
@@ -116,9 +103,9 @@
}
ptr =
- attacheNewScriptToTail(ovlIdx, &scriptHandle2, scriptIdx,
+ attacheNewScriptToTail(ovlIdx, &procHead, scriptIdx,
currentScriptPtr->type, currentScriptPtr->scriptNumber,
- currentScriptPtr->overlayNumber, scriptType_Minus20);
+ currentScriptPtr->overlayNumber, scriptType_MinusPROC);
if (!ptr)
return (0);
@@ -156,9 +143,7 @@
if (!overlay)
return (0);
- attacheNewScriptToTail(overlay, &scriptHandle2, pop2,
- currentScriptPtr->type, currentScriptPtr->scriptNumber,
- currentScriptPtr->overlayNumber, scriptType_20);
+ attacheNewScriptToTail(overlay, &procHead, pop2, currentScriptPtr->type, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, scriptType_PROC);
if (pop1 > 0) {
printf("Unsupported art send in op6!\n");
@@ -287,8 +272,7 @@
overlay = currentScriptPtr->overlayNumber;
}
- removeObjectFromList(overlay, idx, &cellHead,
- currentActiveBackgroundPlane, 5);
+ removeCell(&cellHead, overlay, idx, 5, currentActiveBackgroundPlane);
return (0);
}
@@ -349,7 +333,7 @@
overlay = currentScriptPtr->overlayNumber;
}
- removeScript(overlay, idx, &scriptHandle2);
+ removeScript(overlay, idx, &procHead);
return (0);
}
@@ -423,10 +407,10 @@
int16 Op_62(void) {
if (currentScriptPtr->var1A == 20) {
changeScriptParamInList(currentScriptPtr->var18,
- currentScriptPtr->var16, &scriptHandle2, 9997, -1);
+ currentScriptPtr->var16, &procHead, 9997, -1);
} else if (currentScriptPtr->var1A == 30) {
changeScriptParamInList(currentScriptPtr->var18,
- currentScriptPtr->var16, &scriptHandle1, 9997, -1);
+ currentScriptPtr->var16, &relHead, 9997, -1);
}
return 0;
@@ -541,7 +525,7 @@
if (!ovlIdx)
ovlIdx = currentScriptPtr->overlayNumber;
- Op_InitializeStateSub(ovlIdx, objIdx, param1);
+ objInit(ovlIdx, objIdx, param1);
return (0);
}
@@ -613,38 +597,34 @@
}
int16 Op_AddCell(void) {
- int16 param1 = popVar();
- int16 param2 = popVar();
+ int16 objType = popVar();
+ int16 objIdx = popVar();
int16 overlayIdx = popVar();
if (!overlayIdx)
overlayIdx = currentScriptPtr->overlayNumber;
- addCell(overlayIdx, param2, &cellHead, currentScriptPtr->type,
- currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber,
- currentActiveBackgroundPlane, param1);
+ addCell(&cellHead, overlayIdx, objIdx, objType, currentActiveBackgroundPlane, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, currentScriptPtr->type);
return 0;
}
-int16 Op_2F(void) {
- int16 param1 = popVar();
- int16 param2 = popVar();
+int16 Op_AddBackgroundIncrust(void) {
+ int16 objType = popVar();
+ int16 objIdx = popVar();
int16 overlayIdx = popVar();
if (!overlayIdx)
overlayIdx = currentScriptPtr->overlayNumber;
- addBackgroundIncrust(overlayIdx, param2, &backgroundIncrustHead,
- currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber,
- currentActiveBackgroundPlane, param1);
+ addBackgroundIncrust(overlayIdx, objIdx, &backgroundIncrustHead, currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber, currentActiveBackgroundPlane, objType);
return 0;
}
int16 Op_RemoveCell(void) {
- var1 = popVar();
+ int objType = popVar();
int objectIdx = popVar();
int ovlNumber = popVar();
@@ -652,8 +632,7 @@
ovlNumber = currentScriptPtr->overlayNumber;
}
- removeObjectFromList(ovlNumber, objectIdx, &cellHead,
- currentActiveBackgroundPlane, var1);
+ removeCell(&cellHead, ovlNumber, objectIdx, objType, currentActiveBackgroundPlane);
return 0;
}
@@ -669,10 +648,10 @@
int16 Op_63(void) {
if (currentScriptPtr->var1A == 0x14) {
changeScriptParamInList(currentScriptPtr->var18,
- currentScriptPtr->var16, &scriptHandle2, 0, -1);
+ currentScriptPtr->var16, &procHead, 0, -1);
} else if (currentScriptPtr->var1A == 0x1E) {
changeScriptParamInList(currentScriptPtr->var18,
- currentScriptPtr->var16, &scriptHandle1, 0, -1);
+ currentScriptPtr->var16, &relHead, 0, -1);
}
return 0;
@@ -770,47 +749,39 @@
if (!overlay)
overlay = currentScriptPtr->overlayNumber;
- pObject =
- addCell(overlay, obj, &cellHead, currentScriptPtr->type,
- currentScriptPtr->scriptNumber, currentScriptPtr->overlayNumber,
- currentActiveBackgroundPlane, 4);
+ pObject = addCell(&cellHead, overlay, obj, 4, currentActiveBackgroundPlane, currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, currentScriptPtr->type);
if (!pObject)
return 0;
- pObject->field_2C = signal;
- pObject->field_30 = loop;
- pObject->nextAnimDelay = wait;
+ pObject->animSignal = signal;
+ pObject->animLoop = loop;
+ pObject->animWait = wait;
pObject->animStep = animStep;
- pObject->field_22 = end;
- pObject->field_20 = start;
- pObject->field_2A = type;
- pObject->field_28 = change;
+ pObject->animEnd = end;
+ pObject->animStart = start;
+ pObject->animType = type;
+ pObject->animChange = change;
if (type) {
- if (currentScriptPtr->type == 20) {
- changeScriptParamInList(currentScriptPtr->
- overlayNumber, currentScriptPtr->scriptNumber,
- &scriptHandle2, 9996, -1);
- } else if (currentScriptPtr->type == 30) {
- changeScriptParamInList(currentScriptPtr->
- overlayNumber, currentScriptPtr->scriptNumber,
- &scriptHandle1, 9996, -1);
+ if (currentScriptPtr->type == scriptType_PROC) {
+ changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &procHead, 9996, -1);
+ } else if (currentScriptPtr->type == scriptType_REL) {
+ changeScriptParamInList(currentScriptPtr->overlayNumber, currentScriptPtr->scriptNumber, &relHead, 9996, -1);
}
}
if (change == 5) {
- Op_InitializeStateSub(pObject->overlay, pObject->idx, start);
+ objInit(pObject->overlay, pObject->idx, start);
} else {
- setObjectPosition(pObject->overlay, pObject->idx,
- pObject->field_28, start);
+ setObjectPosition(pObject->overlay, pObject->idx, pObject->animChange, start);
}
if (wait < 0) {
objectParamsQuery params;
getMultipleObjectParam(overlay, obj, ¶ms);
- pObject->currentAnimDelay = params.var6 - 1;
+ pObject->animCounter = params.var6 - 1;
}
return 0;
@@ -927,7 +898,7 @@
}
}
-int16 Op_removeBackgroundIncrust(void) {
+int16 Op_RemoveBackgroundIncrust(void) {
int idx = popVar();
int overlay = popVar();
@@ -1178,11 +1149,11 @@
si->stepX = stepX;
si->stepY = stepY;
- int newFrame = ABS(actorTable1[direction].data[0]) - 1;
+ int newFrame = ABS(raoul_end[direction][0]) - 1;
int zoom = computeZoom(params.Y);
- if (actorTable1[direction].data[0] < 0) {
+ if (raoul_end[direction][0] < 0) {
zoom = -zoom;
}
@@ -1332,47 +1303,19 @@
return temp;
}
-void configureAllObjects(int overlayIdx, cellStruct * pObject, int _var4,
- int _var0, int _var1, int _var2, int _var3) {
- while (pObject) {
- if ((pObject->overlay == overlayIdx) || (overlayIdx == -1)) {
- if ((pObject->idx == _var4) || (_var4 == -1)) {
- if ((pObject->type == _var3) || (_var3 == -1)) {
- if ((pObject->backgroundPlane == _var2) || (_var2 == -1)) {
- if ((pObject->freeze == _var1) || (_var1 == -1)) {
- pObject->freeze = _var0;
- }
- }
- }
- }
- }
-
- pObject = pObject->next;
- }
-}
-
int16 Op_FreezeCell(void) {
- /*
- * int var0;
- * int var1;
- * int var2;
- * int var3;
- * int var4;
- * int var5;
- */
+ int newFreezz = popVar();
+ int oldFreeze = popVar();
+ int backgroundPlante = popVar();
+ int objType = popVar();
+ int objIdx = popVar();
+ int overlayIdx = popVar();
- var0 = popVar();
- var1 = popVar();
- var2 = popVar();
- var3 = popVar();
- var4 = popVar();
- var5 = popVar();
-
- if (!var5) {
- var5 = currentScriptPtr->overlayNumber;
+ if (!overlayIdx) {
+ overlayIdx = currentScriptPtr->overlayNumber;
}
- configureAllObjects(var5, &cellHead, var4, var0, var1, var2, var3);
+ freezeCell(&cellHead, overlayIdx, objIdx, objType, backgroundPlante, oldFreeze, newFreezz);
return 0;
}
@@ -1509,8 +1452,8 @@
opcodeTablePtr[0x2B] = Op_2B;
opcodeTablePtr[0x2C] = Op_2C;
opcodeTablePtr[0x2E] = Op_releaseOverlay;
- opcodeTablePtr[0x2F] = Op_2F;
- opcodeTablePtr[0x30] = Op_removeBackgroundIncrust;
+ opcodeTablePtr[0x2F] = Op_AddBackgroundIncrust;
+ opcodeTablePtr[0x30] = Op_RemoveBackgroundIncrust;
opcodeTablePtr[0x32] = Op_freeBackgroundInscrustList;
opcodeTablePtr[0x37] = Op_37;
opcodeTablePtr[0x38] = Op_removeBackground;
Modified: scummvm/trunk/engines/cruise/mainDraw.cpp
===================================================================
--- scummvm/trunk/engines/cruise/mainDraw.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/mainDraw.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -29,43 +29,55 @@
int currentTransparent;
-struct drawVar1Struct {
- struct drawVar1Struct *next;
- short int field_2;
- short int field_4;
- short int field_6;
- short int field_8;
- cellStruct *field_A;
+struct autoCellStruct {
+ struct autoCellStruct *next;
+ short int ovlIdx;
+ short int objIdx;
+ short int type;
+ short int newValue;
+ cellStruct *pCell;
};
-typedef struct drawVar1Struct drawVar1Struct;
+typedef struct autoCellStruct autoCellStruct;
-drawVar1Struct drawVar1;
+autoCellStruct autoCellHead;
-void mainDraw6(void) {
- drawVar1Struct *pCurrent = drawVar1.next;
+void addAutoCell(int overlayIdx, int idx, int type, int newVal, cellStruct *pObject) {
+ autoCellStruct *pNewEntry;
+ pNewEntry = new autoCellStruct;
+
+ pNewEntry->next = autoCellHead.next;
+ autoCellHead.next = pNewEntry;
+
+ pNewEntry->ovlIdx = overlayIdx;
+ pNewEntry->objIdx = idx;
+ pNewEntry->type = type;
+ pNewEntry->newValue = newVal;
+ pNewEntry->pCell = pObject;
+}
+
+void freeAutoCell(void) {
+ autoCellStruct *pCurrent = autoCellHead.next;
+
while (pCurrent) {
- drawVar1Struct *next = pCurrent->next;
+ autoCellStruct *next = pCurrent->next;
- if (pCurrent->field_6 == 5) {
- Op_InitializeStateSub(pCurrent->field_2,
- pCurrent->field_4, pCurrent->field_8);
+ if (pCurrent->type == 5) {
+ objInit(pCurrent->ovlIdx, pCurrent->objIdx, pCurrent->newValue);
} else {
- setObjectPosition(pCurrent->field_2, pCurrent->field_4,
- pCurrent->field_6, pCurrent->field_8);
+ setObjectPosition(pCurrent->ovlIdx, pCurrent->objIdx, pCurrent->type, pCurrent->newValue);
}
- if (pCurrent->field_A->nextAnimDelay < 0) {
+ if (pCurrent->pCell->animWait < 0) {
objectParamsQuery params;
- getMultipleObjectParam(pCurrent->field_2,
- pCurrent->field_4, ¶ms);
+ getMultipleObjectParam(pCurrent->ovlIdx, pCurrent->objIdx, ¶ms);
- pCurrent->field_A->currentAnimDelay = params.var6 - 1;
+ pCurrent->pCell->animCounter = params.var6 - 1;
}
- free(pCurrent);
+ delete pCurrent;
pCurrent = next;
}
@@ -683,22 +695,6 @@
}
}
-void mainDraw5(int overlayIdx, int idx, int field_28, cellStruct *pObject,
- int newVal) {
- drawVar1Struct *pNewEntry;
-
- pNewEntry = (drawVar1Struct *) malloc(sizeof(drawVar1Struct));
-
- pNewEntry->next = drawVar1.next;
- drawVar1.next = pNewEntry;
-
- pNewEntry->field_2 = overlayIdx;
- pNewEntry->field_4 = idx;
- pNewEntry->field_6 = field_28;
- pNewEntry->field_8 = newVal;
- pNewEntry->field_A = pObject;
-}
-
#ifdef _DEBUG
void drawCtp(void) {
int i;
@@ -875,7 +871,7 @@
(char *)gfxModuleData.pPage10);
}
- drawVar1.next = NULL;
+ autoCellHead.next = NULL;
currentObjPtr = cellHead.next;
@@ -926,8 +922,7 @@
objZ2 += objZ1;
}
- if ((params.var5 >= 0) && (objZ2 >= 0)
- && filesDatabase[objZ2].subData.ptr) {
+ if ((params.var5 >= 0) && (objZ2 >= 0) && filesDatabase[objZ2].subData.ptr) {
if (filesDatabase[objZ2].subData.resourceType == 8) // Poly
{
mainDrawPolygons(objZ2, currentObjPtr, objX2, params.scale, objY2, (char *)gfxModuleData.pPage10, (char *)filesDatabase[objZ2].subData.ptr); // poly
@@ -935,89 +930,45 @@
{
} else if (filesDatabase[objZ2].resType == 1) //(num plan == 1)
{
- } else if (filesDatabase[objZ2].subData.
- resourceType == 4) {
+ } else if (filesDatabase[objZ2].subData.resourceType == 4) {
objX1 = filesDatabase[objZ2].width; // width
spriteHeight = filesDatabase[objZ2].height; // height
if (filesDatabase[objZ2].subData.ptr) {
- currentTransparent =
- filesDatabase[objZ2].
- subData.transparency;
+ currentTransparent = filesDatabase[objZ2].subData.transparency;
- mainDrawSub4(objX1,
- spriteHeight,
- currentObjPtr,
- (char *)
- filesDatabase[objZ2].
- subData.ptr, objY2, objX2,
- (char *)gfxModuleData.
- pPage10,
- (char *)
- filesDatabase[objZ2].
- subData.ptr);
+ mainDrawSub4(objX1, spriteHeight, currentObjPtr, (char *)filesDatabase[objZ2].subData.ptr, objY2, objX2,(char *)gfxModuleData.pPage10,(char *)filesDatabase[objZ2].subData.ptr);
}
}
}
if ((currentObjPtr->animStep != 0) && (param == 0)) {
- if (currentObjPtr->currentAnimDelay <= 0) {
+ if (currentObjPtr->animCounter <= 0) {
int newVal;
bool change = true;
- newVal =
- getValueFromObjectQuerry(¶ms,
- currentObjPtr->field_28) +
- currentObjPtr->animStep;
+ newVal = getValueFromObjectQuerry(¶ms, currentObjPtr->animChange) + currentObjPtr->animStep;
if (currentObjPtr->animStep > 0) {
- if (newVal >
- currentObjPtr->field_22) {
- if (currentObjPtr->
- field_30) {
- newVal =
- currentObjPtr->
- field_20;
- currentObjPtr->
- field_30--;
+ if (newVal > currentObjPtr->animEnd) {
+ if (currentObjPtr->animLoop) {
+ newVal = currentObjPtr->animStart;
+ currentObjPtr->animLoop--;
} else {
int16 data2;
- data2 =
- currentObjPtr->
- field_20;
+ data2 = currentObjPtr->animStart;
change = false;
- currentObjPtr->
- animStep =
- 0;
+ currentObjPtr->animStep = 0;
- if (currentObjPtr->field_2A) // should we resume the script ?
+ if (currentObjPtr->animType) // should we resume the script ?
{
- if (currentObjPtr->field_1A == 20) {
- changeScriptParamInList
- (currentObjPtr->
- field_18,
- currentObjPtr->
- field_16,
- &scriptHandle2,
- 0,
- -1);
- } else
- if
- (currentObjPtr->
- field_1A
- ==
- 30)
- {
- changeScriptParamInList
- (currentObjPtr->
- field_18,
- currentObjPtr->
- field_16,
- &scriptHandle1,
- 0,
- -1);
+ if (currentObjPtr->parentType == 20) {
+ changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &procHead, 0, -1);
}
+ else if(currentObjPtr->parentType == 30) {
+ changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &relHead, 0, -1);
+ }
}
newVal = data2;
}
@@ -1029,50 +980,25 @@
* } */
}
- if (currentObjPtr->nextAnimDelay >= 0) {
- currentObjPtr->
- currentAnimDelay =
- currentObjPtr->
- nextAnimDelay;
+ if (currentObjPtr->animWait >= 0) {
+ currentObjPtr->animCounter = currentObjPtr->animWait;
}
- if ((currentObjPtr->field_2C >= 0)
- && (currentObjPtr->field_2C ==
- newVal)
- && (currentObjPtr->field_2A !=
- 0)) {
- if (currentObjPtr->field_1A ==
- 20) {
- changeScriptParamInList
- (currentObjPtr->
- field_18,
- currentObjPtr->
- field_16,
- &scriptHandle2, 0,
- -1);
- } else if (currentObjPtr->
- field_1A == 30) {
- changeScriptParamInList
- (currentObjPtr->
- field_18,
- currentObjPtr->
- field_16,
- &scriptHandle1, 0,
- -1);
+ if ((currentObjPtr->animSignal >= 0) && (currentObjPtr->animSignal == newVal) && (currentObjPtr->animType != 0)) {
+ if (currentObjPtr->parentType == 20) {
+ changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &procHead, 0, -1);
+ } else if (currentObjPtr->parentType == 30) {
+ changeScriptParamInList(currentObjPtr->parentOverlay, currentObjPtr->parent, &relHead, 0, -1);
}
- currentObjPtr->field_2A = 0;
+ currentObjPtr->animType = 0;
}
if (change) {
- mainDraw5(currentObjPtr->
- overlay,
- currentObjPtr->idx,
- currentObjPtr->field_28,
- currentObjPtr, newVal);
+ addAutoCell(currentObjPtr->overlay, currentObjPtr->idx, currentObjPtr->animChange, newVal, currentObjPtr);
}
} else {
- currentObjPtr->currentAnimDelay--;
+ currentObjPtr->animCounter--;
}
}
}
@@ -1082,7 +1008,7 @@
//----------------------------------------------------------------------------------------------------------------//
- mainDraw6();
+ freeAutoCell();
var20 = 0;
//-------------------------------------------------- DRAW OBJECTS TYPE 5 (MSG)-----------------------------------------//
@@ -1091,10 +1017,7 @@
while (currentObjPtr) {
if (currentObjPtr->type == 5 && currentObjPtr->freeze == 0) {
- mainSprite(currentObjPtr->field_A,
- currentObjPtr->field_C, currentObjPtr->gfxPtr,
- gfxModuleData.pPage10, currentObjPtr->color,
- currentObjPtr->spriteIdx);
+ mainSprite(currentObjPtr->x, currentObjPtr->field_C, currentObjPtr->gfxPtr, gfxModuleData.pPage10, currentObjPtr->color, currentObjPtr->spriteIdx);
var20 = 1;
}
currentObjPtr = currentObjPtr->next;
Modified: scummvm/trunk/engines/cruise/object.cpp
===================================================================
--- scummvm/trunk/engines/cruise/object.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/object.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -73,14 +73,14 @@
ovlData = overlayTable[overlayIdx].ovlData;
- switch (ptr->var1) {
+ switch (ptr->type) {
case 0:
{
ptr2 = &ovlData->objData2SourceTable[ptr->var5];
- var_14 = globalVars[*(int16 *) (&overlayTable[overlayIdx].field_14 + ptr->var6)];
+ var_14 = globalVars[*(int16 *) (&overlayTable[overlayIdx].state + ptr->stateTableIdx)];
- var_A = ptr2->var5;
+ var_A = ptr2->state;
break;
}
@@ -88,25 +88,25 @@
{
ptr2 = &ovlData->objData2WorkTable[ptr->var4];
- var_A = var_14 = ptr2->var5;
+ var_A = var_14 = ptr2->state;
size = var_A + ptr->var5;
if (ptr->var5 + var_14 <= ovlData->size8) {
- var_A = ovlData->objData2SourceTable[ptr->var5 + var_14].var5;
+ var_A = ovlData->objData2SourceTable[ptr->var5 + var_14].state;
}
break;
}
default:
{
- printf("unsupported case %d in getMultipleObjectParam\n", ptr->var1);
+ printf("unsupported case %d in getMultipleObjectParam\n", ptr->type);
exit(1);
}
}
returnParam->X = ptr2->X;
returnParam->Y = ptr2->Y;
- returnParam->baseFileIdx = ptr2->baseFileIdx;
- returnParam->fileIdx = ptr2->var3;
+ returnParam->baseFileIdx = ptr2->Z;
+ returnParam->fileIdx = ptr2->frame;
returnParam->scale = ptr2->scale;
returnParam->var5 = var_14;
returnParam->var6 = var_A;
@@ -115,11 +115,11 @@
return 0;
}
-void setObjectPosition(int16 param1, int16 objIdx, int16 param3, int16 param4) {
+void setObjectPosition(int16 ovlIdx, int16 objIdx, int16 param3, int16 param4) {
objDataStruct *ptr;
objectParams *ptr2;
- ptr = getObjectDataFromOverlay(param1, objIdx);
+ ptr = getObjectDataFromOverlay(ovlIdx, objIdx);
if (!ptr) {
return;
@@ -127,10 +127,10 @@
}
//overlayTable[param1].ovlData
- switch (ptr->var1) {
+ switch (ptr->type) {
case 1:
{
- ptr2 = &overlayTable[param1].ovlData->objData2WorkTable[ptr->var4];
+ ptr2 = &overlayTable[ovlIdx].ovlData->objData2WorkTable[ptr->var4];
switch (param3) {
case 0: // x
@@ -143,14 +143,15 @@
ptr2->Y = param4;
break;
}
- case 2: // base file
+ case 2: // z
{
- ptr2->baseFileIdx = param4;
+ ptr2->Z = param4;
+ sortCells(ovlIdx, objIdx, &cellHead);
break;
}
case 3:
{
- ptr2->var3 = param4;
+ ptr2->frame = param4;
break;
}
case 4: // scale
@@ -160,7 +161,7 @@
}
case 5: // box colision
{
- ptr2->var5 = param4;
+ ptr2->state = param4;
break;
}
default:
@@ -178,94 +179,7 @@
}
}
-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) {
+int16 objInit(int ovlIdx, int objIdx, int newState) {
objDataStruct *ptr;
// uint16 param;
ovlDataStruct *ovlData;
@@ -277,39 +191,38 @@
ovlData = overlayTable[ovlIdx].ovlData;
- switch (ptr->var1) {
- case 0:
+ switch (ptr->type) {
+ case THEME:
+ case MULTIPLE:
{
- globalVars[overlayTable[ovlIdx].field_14 + ptr->var6] =
- param2;
- Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+ globalVars[overlayTable[ovlIdx].state + ptr->stateTableIdx] = newState;
+ sortCells(ovlIdx, objIdx, &cellHead);
break;
}
- case 1:
+ case UNIQUE:
+ break;
+ case VARIABLE:
{
objectParams *destEntry;
objectParams *sourceEntry;
- if (ptr->var5 + param2 > ovlData->size8) {
+ if (ptr->var5 + newState > ovlData->size8) {
return 0;
}
destEntry = &ovlData->objData2WorkTable[ptr->var4];
- sourceEntry =
- &ovlData->objData2SourceTable[ptr->var5 + param2];
+ sourceEntry = &ovlData->objData2SourceTable[ptr->var5 + newState];
memcpy(destEntry, sourceEntry, sizeof(objectParams));
- destEntry->var5 = param2;
+ destEntry->state = newState;
- Op_InitializeStateSub1(ovlIdx, param2, &cellHead);
+ sortCells(ovlIdx, objIdx, &cellHead);
break;
}
default:
{
- printf
- ("Unsupported param = %d in Op_InitializeStateSub\n",
- ptr->var1);
+ printf("Unsupported param = %d in objInit\n", ptr->type);
// exit(1);
}
}
@@ -317,8 +230,7 @@
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;
@@ -332,11 +244,11 @@
ovlData = overlayTable[overlayIdx].ovlData;
- switch (ptr->var1) {
+ switch (ptr->type) {
case 0:
case 3:
{
- var_A = globalVars[ptr->var6];
+ var_A = globalVars[ptr->stateTableIdx];
ptr2 = &ovlData->objData2SourceTable[ptr->var5];
break;
@@ -345,13 +257,12 @@
{
ptr2 = &ovlData->objData2WorkTable[ptr->var4];
- var_A = ptr2->var5;
+ var_A = ptr2->state;
break;
}
default:
{
- printf("Unsupported case %d in getSingleObjectParam\n",
- ptr->var1);
+ printf("Unsupported case %d in getSingleObjectParam\n",ptr->type);
exit(1);
}
}
@@ -369,12 +280,12 @@
}
case 2:
{
- *returnParam = ptr2->baseFileIdx;
+ *returnParam = ptr2->Z;
break;
}
case 3:
{
- *returnParam = ptr2->var3;
+ *returnParam = ptr2->frame;
break;
}
case 4:
@@ -389,9 +300,7 @@
}
default:
{
- printf
- ("Unsupported case %d in getSingleObjectParam case 1\n",
- param3);
+ printf("Unsupported case %d in getSingleObjectParam case 1\n", param3);
exit(1);
}
}
Modified: scummvm/trunk/engines/cruise/object.h
===================================================================
--- scummvm/trunk/engines/cruise/object.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/object.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -53,10 +53,8 @@
typedef struct objectParamsQuery objectParamsQuery;
objDataStruct *getObjectDataFromOverlay(int ovlIdx, int objIdx);
-int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3,
- int16 * returnParam);
-int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx,
- objectParamsQuery * returnParam);
+int16 getSingleObjectParam(int16 overlayIdx, int16 param2, int16 param3, int16 * returnParam);
+int16 getMultipleObjectParam(int16 overlayIdx, int16 objectIdx, objectParamsQuery * returnParam);
} // End of namespace Cruise
Modified: scummvm/trunk/engines/cruise/overlay.cpp
===================================================================
--- scummvm/trunk/engines/cruise/overlay.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/overlay.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -420,9 +420,9 @@
scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var0);
- ovlData->objDataTable[i].var1 = *(int16 *) scriptPtr;
+ ovlData->objDataTable[i].type = *(int16 *) scriptPtr;
scriptPtr += 2;
- flipShort(&ovlData->objDataTable[i].var1);
+ flipShort(&ovlData->objDataTable[i].type);
ovlData->objDataTable[i].var2 = *(int16 *) scriptPtr;
scriptPtr += 2;
@@ -440,16 +440,16 @@
scriptPtr += 2;
flipShort(&ovlData->objDataTable[i].var5);
- ovlData->objDataTable[i].var6 = *(int16 *) scriptPtr;
+ ovlData->objDataTable[i].stateTableIdx = *(int16 *) scriptPtr;
scriptPtr += 2;
- flipShort(&ovlData->objDataTable[i].var6);
+ flipShort(&ovlData->objDataTable[i].stateTableIdx);
}
if (scriptNotLoadedBefore) {
//int var1;
//int var2;
- overlayTable[scriptIdx].field_14 = (char)setup1;
+ overlayTable[scriptIdx].state = (char)setup1;
var1 = loadScriptSub1(scriptIdx, 3);
var2 = loadScriptSub1(scriptIdx, 0);
@@ -733,11 +733,11 @@
overlayTable[overlayIdx].var16 = NULL;
} */
- removeScript(overlayIdx, -1, &scriptHandle2);
- removeScript(overlayIdx, -1, &scriptHandle2);
+ removeScript(overlayIdx, -1, &procHead);
+ removeScript(overlayIdx, -1, &procHead);
- removeScript(overlayIdx, -1, &scriptHandle1);
- removeScript(overlayIdx, -1, &scriptHandle1);
+ removeScript(overlayIdx, -1, &relHead);
+ removeScript(overlayIdx, -1, &relHead);
printf("releaseOverlay: finish !\n");
Modified: scummvm/trunk/engines/cruise/overlay.h
===================================================================
--- scummvm/trunk/engines/cruise/overlay.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/overlay.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -106,14 +106,19 @@
typedef struct importDataStruct importDataStruct;
+#define MULTIPLE 0
+#define VARIABLE 1
+#define UNIQUE 2
+#define THEME 3
+
struct objDataStruct {
int16 var0;
- int16 var1;
+ int16 type;
int16 var2;
int16 var3;
int16 var4;
int16 var5;
- int16 var6;
+ int16 stateTableIdx;
};
typedef struct objDataStruct objDataStruct;
@@ -121,10 +126,10 @@
struct objectParams {
int16 X;
int16 Y;
- int16 baseFileIdx;
- int16 var3;
+ int16 Z;
+ int16 frame;
int16 scale;
- int16 var5;
+ int16 state;
};
typedef struct objectParams objectParams;
@@ -169,7 +174,7 @@
char overlayName[14];
ovlDataStruct *ovlData;
short int alreadyLoaded;
- char field_14;
+ char state;
char field_15;
char field_16;
char field_17;
Modified: scummvm/trunk/engines/cruise/saveload.cpp
===================================================================
--- scummvm/trunk/engines/cruise/saveload.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/saveload.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -264,8 +264,8 @@
fread(mediumVar, 0x880, 1, fileHandle);
loadSavegameDataSub1(fileHandle);
- loadScriptsFromSave(fileHandle, &scriptHandle2);
- loadScriptsFromSave(fileHandle, &scriptHandle1);
+ loadScriptsFromSave(fileHandle, &procHead);
+ loadScriptsFromSave(fileHandle, &relHead);
loadSavegameDataSub2(fileHandle);
loadBackgroundIncrustFromSave(fileHandle);
Modified: scummvm/trunk/engines/cruise/script.cpp
===================================================================
--- scummvm/trunk/engines/cruise/script.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/script.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -26,8 +26,8 @@
namespace Cruise {
-scriptInstanceStruct scriptHandle1;
-scriptInstanceStruct scriptHandle2;
+scriptInstanceStruct relHead;
+scriptInstanceStruct procHead;
scriptInstanceStruct *currentScriptPtr;
Modified: scummvm/trunk/engines/cruise/script.h
===================================================================
--- scummvm/trunk/engines/cruise/script.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/script.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -28,10 +28,10 @@
namespace Cruise {
enum scriptTypeEnum {
- scriptType_Minus20 = -20,
+ scriptType_MinusPROC = -20,
scriptType_Minus30 = -30,
- scriptType_20 = 20,
- scriptType_30 = 30
+ scriptType_PROC = 20,
+ scriptType_REL = 30
};
typedef enum scriptTypeEnum scriptTypeEnum;
@@ -55,8 +55,8 @@
typedef struct scriptInstanceStruct scriptInstanceStruct;
-extern scriptInstanceStruct scriptHandle1;
-extern scriptInstanceStruct scriptHandle2;
+extern scriptInstanceStruct relHead;
+extern scriptInstanceStruct procHead;
extern scriptInstanceStruct *currentScriptPtr;
void setupFuncArray(void);
Modified: scummvm/trunk/engines/cruise/various.cpp
===================================================================
--- scummvm/trunk/engines/cruise/various.cpp 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/various.cpp 2007-04-28 22:31:55 UTC (rev 26666)
@@ -39,68 +39,6 @@
return temp;
}
-void freeObject(cellStruct *objPtr) {
- if (objPtr) {
- /* if(objPtr->next)
- * free(objPtr->next); */
-
- //free(objPtr);
- }
-}
-
-void removeObjectFromList(int ovlNumber, int objectIdx, cellStruct *objPtr,
- int backgroundPlane, int arg) {
- cellStruct *currentObj = objPtr->next;
- cellStruct *previous;
-
- while (currentObj) {
- cellStruct *si;
-
- si = currentObj;
-
- if ((si->overlay == ovlNumber || ovlNumber == -1) &&
- (si->idx == objectIdx || objectIdx == -1) &&
- (si->type == arg || arg == -1) &&
- (si->backgroundPlane == backgroundPlane
- || backgroundPlane == -1)) {
- si->type = -1;
- }
-
- currentObj = si->next;
- }
-
- previous = objPtr;
- currentObj = objPtr->next;
-
- while (currentObj) {
- cellStruct *si;
-
- si = currentObj;
-
- if (si->type == -1) {
- cellStruct *dx;
- previous->next = si->next;
-
- dx = si->next;
-
- if (!si->next) {
- dx = objPtr;
- }
-
- dx->prev = si->prev;
-
- freeObject(si);
-
- free(si);
-
- currentObj = dx;
- } else {
- currentObj = si->next;
- previous = si;
- }
- }
-}
-
char *getText(int textIndex, int overlayIndex) {
if (!overlayTable[overlayIndex].ovlData) {
return NULL;
@@ -114,57 +52,4 @@
string;
}
-void createTextObject(int overlayIdx, int oldVar8, cellStruct *pObject,
- int scriptNumber, int scriptOverlayNumber, int backgroundPlane,
- int16 color, int oldVar2, int oldVar4, int oldVar6) {
-
- char *ax;
- cellStruct *savePObject = pObject;
- cellStruct *cx;
-
- cellStruct *pNewElement;
- cellStruct *si = pObject->next;
- cellStruct *var_2;
-
- while (si) {
- pObject = si;
- si = si->next;
- }
-
- var_2 = si;
-
- pNewElement = (cellStruct *) malloc(sizeof(cellStruct));
-
- pNewElement->next = pObject->next;
- pObject->next = pNewElement;
-
- pNewElement->idx = oldVar8;
- pNewElement->type = 5;
- pNewElement->backgroundPlane = backgroundPlane;
- pNewElement->overlay = overlayIdx;
- pNewElement->field_A = oldVar6;
- pNewElement->field_C = oldVar4;
- pNewElement->spriteIdx = oldVar2;
- pNewElement->color = color;
- pNewElement->freeze = 0;
- pNewElement->field_16 = scriptNumber;
- pNewElement->field_18 = scriptOverlayNumber;
- pNewElement->gfxPtr = NULL;
-
- if (var_2) {
- cx = var_2;
- } else {
- cx = savePObject;
- }
-
- pNewElement->prev = cx->prev;
- cx->prev = pNewElement;
-
- ax = getText(oldVar8, overlayIdx);
-
- if (ax) {
- pNewElement->gfxPtr = renderText(oldVar2, (uint8 *) ax);
- }
-}
-
} // End of namespace Cruise
Modified: scummvm/trunk/engines/cruise/various.h
===================================================================
--- scummvm/trunk/engines/cruise/various.h 2007-04-28 21:16:13 UTC (rev 26665)
+++ scummvm/trunk/engines/cruise/various.h 2007-04-28 22:31:55 UTC (rev 26666)
@@ -35,13 +35,8 @@
int16 readB16(void *ptr);
-void createTextObject(int overlayIdx, int oldVar8, cellStruct * pObject,
- int scriptNumber, int scriptOverlayNumber, int backgroundPlane,
- int16 color, int oldVar2, int oldVar4, int oldVar6);
-void removeObjectFromList(int ovlNumber, int objectIdx, cellStruct * objPtr,
- int backgroundPlane, int arg);
-int16 Op_InitializeStateSub(int ovlIdx, int param1, int param2);
-
+int16 objInit(int ovlIdx, int param1, int param2);
+char *getText(int textIndex, int overlayIndex);
} // End of namespace Cruise
#endif
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list