Implement copy angle for sorcerer fireball

Also rename a few things
This commit is contained in:
Vincent Hamm 2024-08-17 21:43:11 -07:00
parent 2f77a8d791
commit 402ba78824
11 changed files with 295 additions and 286 deletions

View File

@ -101,7 +101,7 @@ void GereFrappe(void)
{
int touchedActor;
createFlow( 3,
InitSpecialObjet( 3,
currentProcessedActorPtr->roomX + currentProcessedActorPtr->hotPoint.x,
currentProcessedActorPtr->roomY + currentProcessedActorPtr->hotPoint.y,
currentProcessedActorPtr->roomZ + currentProcessedActorPtr->hotPoint.z,
@ -123,13 +123,13 @@ void GereFrappe(void)
if(touchedActor == -1) // no one has been touched
{
createFlow( 2, animMoveX, animMoveY, animMoveZ, currentProcessedActorPtr->stage, currentProcessedActorPtr->room, 0, -currentProcessedActorPtr->beta, 0, NULL );
InitSpecialObjet( 2, animMoveX, animMoveY, animMoveZ, currentProcessedActorPtr->stage, currentProcessedActorPtr->room, 0, -currentProcessedActorPtr->beta, 0, NULL );
currentProcessedActorPtr->animActionType = 0;
}
else
{
createFlow( 2, animMoveX, animMoveY, animMoveZ, currentProcessedActorPtr->stage, currentProcessedActorPtr->room, 0, -currentProcessedActorPtr->beta, 0, NULL );
InitSpecialObjet( 2, animMoveX, animMoveY, animMoveZ, currentProcessedActorPtr->stage, currentProcessedActorPtr->room, 0, -currentProcessedActorPtr->beta, 0, NULL );
currentProcessedActorPtr->hotPoint.x = animMoveX - currentProcessedActorPtr->roomX;
currentProcessedActorPtr->hotPoint.y = animMoveY - currentProcessedActorPtr->roomY;
@ -150,7 +150,7 @@ void GereFrappe(void)
{
int objIdx = currentProcessedActorPtr->animActionParam;
tWorldObject* objPtr = &worldObjects[objIdx];
tWorldObject* objPtr = &ListWorldObjets[objIdx];
int x = currentProcessedActorPtr->roomX + currentProcessedActorPtr->hotPoint.x + currentProcessedActorPtr->stepX;
int y = currentProcessedActorPtr->roomY + currentProcessedActorPtr->hotPoint.y + currentProcessedActorPtr->stepY;
@ -220,7 +220,7 @@ void GereFrappe(void)
objIdx = currentProcessedActorPtr->animActionParam;
actorIdx = worldObjects[objIdx].objIndex;
actorIdx = ListWorldObjets[objIdx].objIndex;
if(actorIdx == -1)
return;
@ -243,11 +243,11 @@ void GereFrappe(void)
actorPtr->_flags |= AF_ANIMATED;
actorPtr->_flags &= ~AF_BOXIFY;
worldObjects[objIdx].x = x;
worldObjects[objIdx].y = y;
worldObjects[objIdx].z = z;
ListWorldObjets[objIdx].x = x;
ListWorldObjets[objIdx].y = y;
ListWorldObjets[objIdx].z = z;
worldObjects[objIdx].alpha = currentProcessedActorPtr->indexInWorld; // original thrower
ListWorldObjets[objIdx].alpha = currentProcessedActorPtr->indexInWorld; // original thrower
actorPtr->dynFlags = 0;
actorPtr->animActionType = 9;
@ -266,7 +266,7 @@ void GereFrappe(void)
}
case 9: // during throw
{
tWorldObject* objPtr = &worldObjects[currentProcessedActorPtr->indexInWorld];
tWorldObject* objPtr = &ListWorldObjets[currentProcessedActorPtr->indexInWorld];
ZVStruct rangeZv;
ZVStruct rangeZv2;

View File

@ -172,7 +172,7 @@ void debugger_draw(void)
ImGui::End();
if(worldObjects.size())
if(ListWorldObjets.size())
{
ImGui::Begin("World objects");
@ -181,10 +181,10 @@ void debugger_draw(void)
ImGui::Separator();
if (selectedWorldObject > worldObjects.size())
selectedWorldObject = worldObjects.size() - 1;
if (selectedWorldObject > ListWorldObjets.size())
selectedWorldObject = ListWorldObjets.size() - 1;
tWorldObject* pWorldObject = &worldObjects[selectedWorldObject];
tWorldObject* pWorldObject = &ListWorldObjets[selectedWorldObject];
if(pWorldObject)
{

View File

@ -198,7 +198,7 @@ int evalVar(const char* name)
objectNumber = *(s16*)currentLifePtr;
actorIdx = worldObjects[objectNumber].objIndex;
actorIdx = ListWorldObjets[objectNumber].objIndex;
currentLifePtr+=2;
actorPtr = &objectTable[actorIdx];
@ -209,12 +209,12 @@ int evalVar(const char* name)
{
case 0x1F:
{
return(worldObjects[objectNumber].room);
return(ListWorldObjets[objectNumber].room);
break;
}
case 0x26:
{
return(worldObjects[objectNumber].stage);
return(ListWorldObjets[objectNumber].stage);
break;
}
default:
@ -334,7 +334,7 @@ int evalVar(const char* name)
}
case 0xE: // DIST
{
int actorNumber = worldObjects[*(s16*)currentLifePtr].objIndex;
int actorNumber = ListWorldObjets[*(s16*)currentLifePtr].objIndex;
currentLifePtr+=2;
if(actorNumber == -1)
@ -362,7 +362,7 @@ int evalVar(const char* name)
}
case 0x10: // found
{
if(worldObjects[evalVar()].flags2 & 0x8000)
if(ListWorldObjets[evalVar()].flags2 & 0x8000)
{
return(1);
}
@ -385,12 +385,12 @@ int evalVar(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].objIndex == -1)
if(ListWorldObjets[objNum].objIndex == -1)
{
return 0;
}
return (getPosRel(actorPtr, &objectTable[worldObjects[objNum].objIndex]));
return (getPosRel(actorPtr, &objectTable[ListWorldObjets[objNum].objIndex]));
break;
}
@ -485,7 +485,7 @@ int evalVar(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].flags2 & 0xC000)
if(ListWorldObjets[objNum].flags2 & 0xC000)
{
return(1);
}
@ -539,7 +539,7 @@ int evalVar(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].flags2 & 0x1000)
if(ListWorldObjets[objNum].flags2 & 0x1000)
{
return 1;
}
@ -601,7 +601,7 @@ int evalVar2(const char* name)
objectNumber = *(s16*)currentLifePtr;
actorIdx = worldObjects[objectNumber].objIndex;
actorIdx = ListWorldObjets[objectNumber].objIndex;
currentLifePtr+=2;
actorPtr = &objectTable[actorIdx];
@ -616,7 +616,7 @@ int evalVar2(const char* name)
appendFormated("%s:", name);
appendFormated("worldObjects[%d].room, ", objectNumber);
return(worldObjects[objectNumber].room);
return(ListWorldObjets[objectNumber].room);
break;
}
case 0x24:
@ -625,7 +625,7 @@ int evalVar2(const char* name)
appendFormated("%s:", name);
appendFormated("worldObjects[%d].stage, ", objectNumber);
return(worldObjects[objectNumber].stage);
return(ListWorldObjets[objectNumber].stage);
break;
}
default:
@ -763,7 +763,7 @@ int evalVar2(const char* name)
int worldObjectIdx = *(s16*)currentLifePtr;
currentLifePtr+=2;
int objectIdx = worldObjects[worldObjectIdx].objIndex;
int objectIdx = ListWorldObjets[worldObjectIdx].objIndex;
int tempX;
int tempY;
@ -771,11 +771,11 @@ int evalVar2(const char* name)
if(objectIdx == -1)
{
if(worldObjects[worldObjectIdx].room == currentRoom)
if(ListWorldObjets[worldObjectIdx].room == currentRoom)
{
tempX = worldObjects[worldObjectIdx].x;
tempY = worldObjects[worldObjectIdx].y;
tempZ = worldObjects[worldObjectIdx].z;
tempX = ListWorldObjets[worldObjectIdx].x;
tempY = ListWorldObjets[worldObjectIdx].y;
tempZ = ListWorldObjets[worldObjectIdx].z;
}
else
{
@ -803,7 +803,7 @@ int evalVar2(const char* name)
}
case 0x10: // found
{
if(worldObjects[evalVar()].flags2 & 0x8000)
if(ListWorldObjets[evalVar()].flags2 & 0x8000)
{
return(1);
}
@ -826,12 +826,12 @@ int evalVar2(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].objIndex == -1)
if(ListWorldObjets[objNum].objIndex == -1)
{
return 0;
}
return (getPosRel(actorPtr, &objectTable[worldObjects[objNum].objIndex]));
return (getPosRel(actorPtr, &objectTable[ListWorldObjets[objNum].objIndex]));
break;
}
@ -926,7 +926,7 @@ int evalVar2(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].flags2 & 0xC000)
if(ListWorldObjets[objNum].flags2 & 0xC000)
{
return(1);
}
@ -961,7 +961,7 @@ int evalVar2(const char* name)
objNum = *(s16*)currentLifePtr;
currentLifePtr+=2;
if(worldObjects[objNum].flags2 & 0x1000)
if(ListWorldObjets[objNum].flags2 & 0x1000)
{
return 1;
}
@ -982,7 +982,7 @@ int evalVar2(const char* name)
param2 = *(s16*)currentLifePtr;
currentLifePtr+=2;
return getMatrix(param1,actorIdx,worldObjects[param2].objIndex);
return getMatrix(param1,actorIdx,ListWorldObjets[param2].objIndex);
break;
}
case 0x26: // hard_mat

View File

@ -47,7 +47,7 @@ int DrawListObjets(int startIdx, int selectIdx, int selectColor)
currentObj = inventoryTable[currentInventory][startIdx];
objPtr = &worldObjects[currentObj];
objPtr = &ListWorldObjets[currentObj];
if(startIdx == selectIdx)
{
@ -321,11 +321,11 @@ void processInventory(void)
{
selectedWorldObjectIdx = DrawListObjets(firstObjectDisplayedIdx,selectedObjectIdx,15);
currentFoundBodyIdx = worldObjects[selectedWorldObjectIdx].foundBody;
currentFoundBodyIdx = ListWorldObjets[selectedWorldObjectIdx].foundBody;
currentFoundBody = HQR_Get(listBody,currentFoundBodyIdx);
var_C = worldObjects[selectedWorldObjectIdx].flags2;
var_C = ListWorldObjets[selectedWorldObjectIdx].flags2;
numInventoryActions = 0;
numActionForObject = 0;
@ -406,7 +406,7 @@ void processInventory(void)
}
}
}
renderInventoryObject(worldObjects[selectedWorldObjectIdx].floorLife);
renderInventoryObject(ListWorldObjets[selectedWorldObjectIdx].floorLife);
if(firstTime)
{

View File

@ -27,16 +27,16 @@ void throwObj(int animThrow, int frameThrow, int arg_4, int objToThrowIdx, int t
if (!throwRotated)
{
worldObjects[objToThrowIdx].gamma -= 0x100;
ListWorldObjets[objToThrowIdx].gamma -= 0x100;
}
worldObjects[objToThrowIdx].flags2 |= 0x1000;
ListWorldObjets[objToThrowIdx].flags2 |= 0x1000;
}
}
void put(int x, int y, int z, int room, int stage, int alpha, int beta, int gamma, int idx)
{
tWorldObject* objPtr = &worldObjects[idx];
tWorldObject* objPtr = &ListWorldObjets[idx];
objPtr->x = x;
objPtr->y = y;
@ -81,7 +81,7 @@ int randRange(int min, int max)
return((rand() % (max - min)) + min);
}
int createFlow(int mode, int X, int Y, int Z, int stage, int room, int alpha, int beta, int gamma, ZVStruct* zvPtr)
int InitSpecialObjet(int mode, int X, int Y, int Z, int stage, int room, int alpha, int beta, int gamma, ZVStruct* zvPtr)
{
s16 localSpecialTable[4];
tObject* currentActorPtr;
@ -137,7 +137,7 @@ int createFlow(int mode, int X, int Y, int Z, int stage, int room, int alpha, in
switch (mode)
{
case 0:
case 0: // evaporate
{
char* flowPtr;
int j;
@ -513,7 +513,7 @@ void processLife(int lifeNum, bool callFoundLife)
}
else
{
currentProcessedActorIdx = worldObjects[var_6].objIndex;
currentProcessedActorIdx = ListWorldObjets[var_6].objIndex;
if (currentProcessedActorIdx != -1)
{
@ -539,13 +539,13 @@ void processLife(int lifeNum, bool callFoundLife)
////////////////////////////////////////////////////////////////////////
case LM_BODY:
{
worldObjects[var_6].body = evalVar();
ListWorldObjets[var_6].body = evalVar();
break;
}
case LM_BODY_RESET:
{
worldObjects[var_6].body = evalVar();
worldObjects[var_6].anim = evalVar();
ListWorldObjets[var_6].body = evalVar();
ListWorldObjets[var_6].anim = evalVar();
break;
}
case LM_TYPE:
@ -553,100 +553,100 @@ void processLife(int lifeNum, bool callFoundLife)
lifeTempVar1 = (*(s16*)(currentLifePtr)) & TYPE_MASK;
currentLifePtr += 2;
lifeTempVar2 = worldObjects[var_6].flags;
lifeTempVar2 = ListWorldObjets[var_6].flags;
worldObjects[var_6].flags = (worldObjects[var_6].flags & (~TYPE_MASK)) + lifeTempVar1;
ListWorldObjets[var_6].flags = (ListWorldObjets[var_6].flags & (~TYPE_MASK)) + lifeTempVar1;
break;
}
////////////////////////////////////////////////////////////////////////
case LM_ANIM_ONCE:
{
worldObjects[var_6].anim = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].anim = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animInfo = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].animInfo = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animType = ANIM_ONCE;
ListWorldObjets[var_6].animType = ANIM_ONCE;
if (g_gameId >= JACK)
worldObjects[var_6].frame = 0;
ListWorldObjets[var_6].frame = 0;
break;
}
case LM_ANIM_REPEAT:
{
worldObjects[var_6].anim = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].anim = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animInfo = -1;
worldObjects[var_6].animType = ANIM_REPEAT;
ListWorldObjets[var_6].animInfo = -1;
ListWorldObjets[var_6].animType = ANIM_REPEAT;
if (g_gameId >= JACK)
worldObjects[var_6].frame = 0;
ListWorldObjets[var_6].frame = 0;
break;
}
case LM_ANIM_ALL_ONCE:
{
worldObjects[var_6].anim = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].anim = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animInfo = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].animInfo = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animType = ANIM_ONCE | ANIM_UNINTERRUPTABLE;
ListWorldObjets[var_6].animType = ANIM_ONCE | ANIM_UNINTERRUPTABLE;
if (g_gameId >= JACK)
worldObjects[var_6].frame = 0;
ListWorldObjets[var_6].frame = 0;
break;
}
case LM_ANIM_RESET:
{
ASSERT(g_gameId >= JACK);
worldObjects[var_6].anim = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].anim = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animInfo = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].animInfo = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].animType = ANIM_ONCE | ANIM_RESET;
worldObjects[var_6].frame = 0;
ListWorldObjets[var_6].animType = ANIM_ONCE | ANIM_RESET;
ListWorldObjets[var_6].frame = 0;
break;
}
////////////////////////////////////////////////////////////////////////
case LM_MOVE: // MOVE
{
worldObjects[var_6].trackMode = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].trackMode = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].trackNumber = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].trackNumber = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].positionInTrack = 0;
ListWorldObjets[var_6].positionInTrack = 0;
if (g_gameId > AITD1)
{
worldObjects[var_6].mark = -1;
ListWorldObjets[var_6].mark = -1;
}
break;
}
case LM_ANGLE:
{
worldObjects[var_6].alpha = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].alpha = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].beta = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].beta = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].gamma = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].gamma = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
case LM_STAGE: // stage
{
worldObjects[var_6].stage = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].stage = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].room = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].room = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].x = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].x = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].y = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].y = *(s16*)(currentLifePtr);
currentLifePtr += 2;
worldObjects[var_6].z = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].z = *(s16*)(currentLifePtr);
currentLifePtr += 2;
//FlagGenereActiveList = 1;
@ -657,11 +657,11 @@ void processLife(int lifeNum, bool callFoundLife)
{
if (*(s16*)(currentLifePtr))
{
worldObjects[var_6].flags |= 0x20;
ListWorldObjets[var_6].flags |= 0x20;
}
else
{
worldObjects[var_6].flags &= 0xFFDF;
ListWorldObjets[var_6].flags &= 0xFFDF;
}
currentLifePtr += 2;
@ -671,7 +671,7 @@ void processLife(int lifeNum, bool callFoundLife)
////////////////////////////////////////////////////////////////////////
case LM_LIFE:
{
worldObjects[var_6].life = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].life = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
@ -681,38 +681,38 @@ void processLife(int lifeNum, bool callFoundLife)
currentLifePtr += 2;
if (lifeTempVar1 != worldObjects[var_6].lifeMode)
if (lifeTempVar1 != ListWorldObjets[var_6].lifeMode)
{
worldObjects[var_6].lifeMode = lifeTempVar1;
ListWorldObjets[var_6].lifeMode = lifeTempVar1;
//FlagGenereActiveList = 1;
}
break;
}
case LM_FOUND_NAME: // FOUND_NAME
{
worldObjects[var_6].foundName = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].foundName = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
case LM_FOUND_BODY: // FOUND_BODY
{
worldObjects[var_6].foundBody = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].foundBody = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
case LM_FOUND_FLAG: // FOUND_FLAG
{
worldObjects[var_6].flags2 &= 0xE000;
worldObjects[var_6].flags2 |= *(s16*)(currentLifePtr);
ListWorldObjets[var_6].flags2 &= 0xE000;
ListWorldObjets[var_6].flags2 |= *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
case LM_FOUND_WEIGHT:
{
worldObjects[var_6].positionInTrack = *(s16*)(currentLifePtr);
ListWorldObjets[var_6].positionInTrack = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
@ -752,7 +752,7 @@ void processLife(int lifeNum, bool callFoundLife)
{
lifeTempVar1 = evalVar();
worldObjects[currentProcessedActorPtr->indexInWorld].body = lifeTempVar1;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].body = lifeTempVar1;
if (currentProcessedActorPtr->bodyNum != lifeTempVar1)
{
@ -797,8 +797,8 @@ void processLife(int lifeNum, bool callFoundLife)
int param1 = evalVar("body");
int param2 = evalVar("anim");
worldObjects[currentProcessedActorPtr->indexInWorld].body = param1;
worldObjects[currentProcessedActorPtr->indexInWorld].anim = param2;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].body = param1;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].anim = param2;
currentProcessedActorPtr->bodyNum = param1;
@ -1252,9 +1252,18 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_COPY_ANGLE:
{
appendFormated("LM_COPY_ANGLE ");
// TODO !
printf("LM_COPY_ANGLE\n");
currentLifePtr += 2;
int object = readNextArgument("object");
int localObjectIndex = ListWorldObjets[object].objIndex;
if (localObjectIndex == -1) {
currentProcessedActorPtr->alpha = ListWorldObjets[object].alpha;
currentProcessedActorPtr->beta = ListWorldObjets[object].beta;
currentProcessedActorPtr->gamma = ListWorldObjets[object].gamma;
}
else {
currentProcessedActorPtr->alpha = objectTable[localObjectIndex].alpha;
currentProcessedActorPtr->beta = objectTable[localObjectIndex].beta;
currentProcessedActorPtr->gamma = objectTable[localObjectIndex].gamma;
}
break;
}
case LM_STAGE: // STAGE
@ -1302,7 +1311,7 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_STAGE_LIFE:
{
appendFormated("LM_STAGE_LIFE ");
worldObjects[currentProcessedActorPtr->indexInWorld].floorLife = readNextArgument("stageLife");
ListWorldObjets[currentProcessedActorPtr->indexInWorld].floorLife = readNextArgument("stageLife");
break;
}
case LM_LIFE_MODE: // LIFE_MODE
@ -1341,13 +1350,13 @@ void processLife(int lifeNum, bool callFoundLife)
deleteObject(lifeTempVar1);
if (worldObjects[lifeTempVar1].foundBody != -1)
if (ListWorldObjets[lifeTempVar1].foundBody != -1)
{
if (g_gameId == AITD1) // TODO: check, really usefull ?
if (g_gameId == AITD1) // TODO: check, really useful ?
{
worldObjects[lifeTempVar1].flags2 &= 0x7FFF;
ListWorldObjets[lifeTempVar1].flags2 &= 0x7FFF;
}
worldObjects[lifeTempVar1].flags2 |= 0x4000;
ListWorldObjets[lifeTempVar1].flags2 |= 0x4000;
}
break;
@ -1359,9 +1368,9 @@ void processLife(int lifeNum, bool callFoundLife)
switch (lifeTempVar1)
{
case 0:
case 0: // evaporate
{
createFlow(0,
InitSpecialObjet(0,
currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX,
currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY,
currentProcessedActorPtr->roomZ + currentProcessedActorPtr->stepZ,
@ -1373,11 +1382,11 @@ void processLife(int lifeNum, bool callFoundLife)
&currentProcessedActorPtr->zv);
break;
}
case 1:
case 1: // flow
{
currentProcessedActorPtr = &objectTable[currentProcessedActorPtr->HIT_BY];
createFlow(1,
InitSpecialObjet(1,
currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX + currentProcessedActorPtr->hotPoint.x,
currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY + currentProcessedActorPtr->hotPoint.y,
currentProcessedActorPtr->roomZ + currentProcessedActorPtr->stepZ + currentProcessedActorPtr->hotPoint.z,
@ -1393,9 +1402,9 @@ void processLife(int lifeNum, bool callFoundLife)
break;
}
case 4:
case 4: // cigar smoke
{
createFlow(4,
InitSpecialObjet(4,
currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX,
currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY,
currentProcessedActorPtr->roomZ + currentProcessedActorPtr->stepZ,
@ -1547,7 +1556,7 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_FOUND_NAME: // FOUND_NAME
{
appendFormated("LM_FOUND_NAME ");
worldObjects[currentProcessedActorPtr->indexInWorld].foundName = *(s16*)(currentLifePtr);
ListWorldObjets[currentProcessedActorPtr->indexInWorld].foundName = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
@ -1555,7 +1564,7 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_FOUND_BODY: // FOUND_BODY
{
appendFormated("LM_FOUND_BODY ");
worldObjects[currentProcessedActorPtr->indexInWorld].foundBody = *(s16*)(currentLifePtr);
ListWorldObjets[currentProcessedActorPtr->indexInWorld].foundBody = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
@ -1563,15 +1572,15 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_FOUND_FLAG: // FOUND_FLAG
{
appendFormated("LM_FOUND_FLAG ");
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 &= 0xE000;
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 |= *(s16*)(currentLifePtr);
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 &= 0xE000;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 |= *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
}
case LM_FOUND_WEIGHT: // FOUND_WEIGHT
{
appendFormated("LM_FOUND_WEIGHT ");
worldObjects[currentProcessedActorPtr->indexInWorld].positionInTrack = *(s16*)(currentLifePtr);
ListWorldObjets[currentProcessedActorPtr->indexInWorld].positionInTrack = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
@ -1579,7 +1588,7 @@ void processLife(int lifeNum, bool callFoundLife)
case LM_FOUND_LIFE: // FOUND_LIFE
{
appendFormated("LM_FOUND_LIFE ");
worldObjects[currentProcessedActorPtr->indexInWorld].foundLife = *(s16*)(currentLifePtr);
ListWorldObjets[currentProcessedActorPtr->indexInWorld].foundLife = *(s16*)(currentLifePtr);
currentLifePtr += 2;
break;
@ -1905,7 +1914,7 @@ void processLife(int lifeNum, bool callFoundLife)
if (lifeTempVar1 != currentWorldTarget) // same target
{
lifeTempVar2 = worldObjects[lifeTempVar1].objIndex;
lifeTempVar2 = ListWorldObjets[lifeTempVar1].objIndex;
if (lifeTempVar2 != -1)
{
@ -1951,18 +1960,18 @@ void processLife(int lifeNum, bool callFoundLife)
else // different stage
{
currentWorldTarget = lifeTempVar1;
if (worldObjects[lifeTempVar1].stage != g_currentFloor)
if (ListWorldObjets[lifeTempVar1].stage != g_currentFloor)
{
changeFloor = 1;
newFloor = worldObjects[lifeTempVar1].stage;
newRoom = worldObjects[lifeTempVar1].room;
newFloor = ListWorldObjets[lifeTempVar1].stage;
newRoom = ListWorldObjets[lifeTempVar1].room;
}
else
{
if (currentRoom != worldObjects[lifeTempVar1].room)
if (currentRoom != ListWorldObjets[lifeTempVar1].room)
{
needChangeRoom = 1;
newRoom = worldObjects[lifeTempVar1].room;
newRoom = ListWorldObjets[lifeTempVar1].room;
}
}
}

View File

@ -138,7 +138,7 @@ extern enumLifeMacro AITD1LifeMacroTable[];
extern enumLifeMacro AITD2LifeMacroTable[];
void processLife(int lifeNum, bool callFoundLife);
int createFlow( int mode, int X, int Y, int Z, int stage, int room, int alpha, int beta, int gamma, ZVStruct* zvPtr);
int InitSpecialObjet( int mode, int X, int Y, int Z, int stage, int room, int alpha, int beta, int gamma, ZVStruct* zvPtr);
void animMove(int a,int b,int c,int d,int e,int f,int g);
void doRealZv(tObject* actorPtr);
void setStage(int newStage, int newRoomLocal, int X, int Y, int Z);

View File

@ -172,9 +172,9 @@ void executeFoundLife(int objIdx)
if(objIdx == -1)
return;
foundLife = worldObjects[objIdx].foundLife;
foundLife = ListWorldObjets[objIdx].foundLife;
if(worldObjects[objIdx].foundLife == -1)
if(ListWorldObjets[objIdx].foundLife == -1)
return;
currentActorPtr = currentProcessedActorPtr;
@ -190,7 +190,7 @@ void executeFoundLife(int objIdx)
var_2 = 0;
actorIdx = worldObjects[objIdx].objIndex;
actorIdx = ListWorldObjets[objIdx].objIndex;
if(actorIdx==-1)
{
@ -1058,94 +1058,94 @@ void initEngine(void)
maxObjects = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects.resize(maxObjects);
ListWorldObjets.resize(maxObjects);
for(i=0;i<maxObjects;i++)
{
worldObjects[i].objIndex = READ_LE_U16(pObjectData);
ListWorldObjets[i].objIndex = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].body = READ_LE_U16(pObjectData);
ListWorldObjets[i].body = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].flags = READ_LE_U16(pObjectData);
ListWorldObjets[i].flags = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].typeZV = READ_LE_U16(pObjectData);
ListWorldObjets[i].typeZV = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].foundBody = READ_LE_U16(pObjectData);
ListWorldObjets[i].foundBody = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].foundName = READ_LE_U16(pObjectData);
ListWorldObjets[i].foundName = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].flags2 = READ_LE_U16(pObjectData);
ListWorldObjets[i].flags2 = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].foundLife = READ_LE_U16(pObjectData);
ListWorldObjets[i].foundLife = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].x = READ_LE_U16(pObjectData);
ListWorldObjets[i].x = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].y = READ_LE_U16(pObjectData);
ListWorldObjets[i].y = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].z = READ_LE_U16(pObjectData);
ListWorldObjets[i].z = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].alpha = READ_LE_U16(pObjectData);
ListWorldObjets[i].alpha = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].beta = READ_LE_U16(pObjectData);
ListWorldObjets[i].beta = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].gamma = READ_LE_U16(pObjectData);
ListWorldObjets[i].gamma = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].stage = READ_LE_U16(pObjectData);
ListWorldObjets[i].stage = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].room = READ_LE_U16(pObjectData);
ListWorldObjets[i].room = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].lifeMode = READ_LE_U16(pObjectData);
ListWorldObjets[i].lifeMode = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].life = READ_LE_U16(pObjectData);
ListWorldObjets[i].life = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].floorLife = READ_LE_U16(pObjectData);
ListWorldObjets[i].floorLife = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].anim = READ_LE_U16(pObjectData);
ListWorldObjets[i].anim = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].frame = READ_LE_U16(pObjectData);
ListWorldObjets[i].frame = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].animType = READ_LE_U16(pObjectData);
ListWorldObjets[i].animType = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].animInfo = READ_LE_U16(pObjectData);
ListWorldObjets[i].animInfo = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].trackMode = READ_LE_U16(pObjectData);
ListWorldObjets[i].trackMode = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].trackNumber = READ_LE_U16(pObjectData);
ListWorldObjets[i].trackNumber = READ_LE_U16(pObjectData);
pObjectData+=2;
worldObjects[i].positionInTrack = READ_LE_U16(pObjectData);
ListWorldObjets[i].positionInTrack = READ_LE_U16(pObjectData);
pObjectData+=2;
if(g_gameId >= JACK)
{
worldObjects[i].mark = READ_LE_U16(pObjectData);
ListWorldObjets[i].mark = READ_LE_U16(pObjectData);
pObjectData+=2;
}
worldObjects[i].flags |= 0x20;
ListWorldObjets[i].flags |= 0x20;
}
free(pObjectDataBackup);
@ -1692,7 +1692,7 @@ void DeleteObjet(int index) // remove actor
{
if(actorPtr->indexInWorld >= 0)
{
tWorldObject* objectPtr = &worldObjects[actorPtr->indexInWorld];
tWorldObject* objectPtr = &ListWorldObjets[actorPtr->indexInWorld];
objectPtr->objIndex = -1;
actorPtr->indexInWorld = -1;
@ -2034,7 +2034,7 @@ void updateAllActorAndObjectsAITD2()
for(int i=0;i<maxObjects;i++)
{
tWorldObject* currentObject = &worldObjects[i];
tWorldObject* currentObject = &ListWorldObjets[i];
if(currentObject->objIndex != -1)
{
@ -2241,7 +2241,7 @@ void updateAllActorAndObjects()
currentActor++;
}
currentObject = &worldObjects[0];
currentObject = &ListWorldObjets[0];
for(i=0;i<maxObjects;i++)
{
@ -2579,7 +2579,7 @@ void DeleteInventoryObjet(int objIdx)
numObjInInventoryTable[currentInventory]--;
}
worldObjects[objIdx].flags2 &= 0x7FFF;
ListWorldObjets[objIdx].flags2 &= 0x7FFF;
}
void deleteObject(int objIdx)
@ -2588,7 +2588,7 @@ void deleteObject(int objIdx)
int actorIdx;
tObject* actorPtr;
objPtr = &worldObjects[objIdx];
objPtr = &ListWorldObjets[objIdx];
actorIdx = objPtr->objIndex;
if(actorIdx != -1)
@ -3573,7 +3573,7 @@ void drawFoundObect(int menuState,int objectName,int zoomFactor)
void take(int objIdx)
{
tWorldObject* objPtr = &worldObjects[objIdx];
tWorldObject* objPtr = &ListWorldObjets[objIdx];
if(numObjInInventoryTable[currentInventory] == 0)
{
@ -3626,7 +3626,7 @@ void foundObject(int objIdx, int param)
printf("foundObject with param == 2\n");
}
objPtr = &worldObjects[objIdx];
objPtr = &ListWorldObjets[objIdx];
if( param != 0 && (objPtr->flags2 & 0xC000))
{
@ -3647,7 +3647,7 @@ void foundObject(int objIdx, int param)
int weight = 0;
for(i=0;i<numObjInInventoryTable[currentInventory];i++)
{
weight += worldObjects[inventoryTable[currentInventory][i]].positionInTrack;
weight += ListWorldObjets[inventoryTable[currentInventory][i]].positionInTrack;
}
if(objPtr->positionInTrack + weight > CVars[getCVarsIdx(MAX_WEIGHT_LOADABLE)] || numObjInInventoryTable[currentInventory] +1 == 30)
@ -4268,7 +4268,7 @@ void processActor2()
{
int life;
life = worldObjects[currentProcessedActorPtr->indexInWorld].floorLife;
life = ListWorldObjets[currentProcessedActorPtr->indexInWorld].floorLife;
if(life==-1)
return;
@ -4382,8 +4382,8 @@ int checkLineProjectionWithActors( int actorIdx, int X, int Y, int Z, int beta,
void PutAtObjet(int objIdx, int objIdxToPutAt)
{
tWorldObject* objPtr = &worldObjects[objIdx];
tWorldObject* objPtrToPutAt = &worldObjects[objIdxToPutAt];
tWorldObject* objPtr = &ListWorldObjets[objIdx];
tWorldObject* objPtrToPutAt = &ListWorldObjets[objIdxToPutAt];
if(objPtrToPutAt->objIndex != -1)
{
@ -4419,8 +4419,8 @@ void PutAtObjet(int objIdx, int objIdxToPutAt)
currentProcessedActorPtr->beta = actorToPutAtPtr->beta;
currentProcessedActorPtr->gamma = actorToPutAtPtr->gamma;
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
worldObjects[currentProcessedActorPtr->indexInWorld].flags |= 0x80;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags |= 0x80;
// FlagGenereActiveList = 1;
// FlagRefreshAux2 = 1;
@ -4459,8 +4459,8 @@ void PutAtObjet(int objIdx, int objIdxToPutAt)
currentProcessedActorPtr->beta = objPtrToPutAt->beta;
currentProcessedActorPtr->gamma = objPtrToPutAt->gamma;
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
worldObjects[currentProcessedActorPtr->indexInWorld].flags |= 0x80;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags |= 0x80;
// FlagGenereActiveList = 1;
// FlagRefreshAux2 = 1;
@ -4561,8 +4561,8 @@ void throwStoppedAt(int x, int z)
currentProcessedActorPtr->zv.ZVZ1 += z2;
currentProcessedActorPtr->zv.ZVZ2 += z2;
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
worldObjects[currentProcessedActorPtr->indexInWorld].flags2 &= 0xEFFF;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 |= 0x4000;
ListWorldObjets[currentProcessedActorPtr->indexInWorld].flags2 &= 0xEFFF;
addActorToBgInscrust(currentProcessedActorIdx);
}

View File

@ -98,83 +98,83 @@ int loadSave(int saveNumber)
for(i=0;i<maxObjects;i++)
{
ASSERT(sizeof(worldObjects[i].objIndex) == 2);
fread(&worldObjects[i].objIndex,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].objIndex) == 2);
fread(&ListWorldObjets[i].objIndex,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].body) == 2);
fread(&worldObjects[i].body,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].body) == 2);
fread(&ListWorldObjets[i].body,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].flags) == 2);
fread(&worldObjects[i].flags,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].flags) == 2);
fread(&ListWorldObjets[i].flags,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].typeZV) == 2);
fread(&worldObjects[i].typeZV,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].typeZV) == 2);
fread(&ListWorldObjets[i].typeZV,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundBody) == 2);
fread(&worldObjects[i].foundBody,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundBody) == 2);
fread(&ListWorldObjets[i].foundBody,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundName) == 2);
fread(&worldObjects[i].foundName,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundName) == 2);
fread(&ListWorldObjets[i].foundName,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].flags2) == 2);
fread(&worldObjects[i].flags2,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].flags2) == 2);
fread(&ListWorldObjets[i].flags2,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundLife) == 2);
fread(&worldObjects[i].foundLife,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundLife) == 2);
fread(&ListWorldObjets[i].foundLife,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].x) == 2);
fread(&worldObjects[i].x,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].x) == 2);
fread(&ListWorldObjets[i].x,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].y) == 2);
fread(&worldObjects[i].y,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].y) == 2);
fread(&ListWorldObjets[i].y,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].z) == 2);
fread(&worldObjects[i].z,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].z) == 2);
fread(&ListWorldObjets[i].z,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].alpha) == 2);
fread(&worldObjects[i].alpha,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].alpha) == 2);
fread(&ListWorldObjets[i].alpha,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].beta) == 2);
fread(&worldObjects[i].beta,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].beta) == 2);
fread(&ListWorldObjets[i].beta,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].gamma) == 2);
fread(&worldObjects[i].gamma,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].gamma) == 2);
fread(&ListWorldObjets[i].gamma,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].stage) == 2);
fread(&worldObjects[i].stage,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].stage) == 2);
fread(&ListWorldObjets[i].stage,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].room) == 2);
fread(&worldObjects[i].room,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].room) == 2);
fread(&ListWorldObjets[i].room,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].lifeMode) == 2);
fread(&worldObjects[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].lifeMode) == 2);
fread(&ListWorldObjets[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].life) == 2);
fread(&worldObjects[i].life,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].life) == 2);
fread(&ListWorldObjets[i].life,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].floorLife) == 2);
fread(&worldObjects[i].floorLife,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].floorLife) == 2);
fread(&ListWorldObjets[i].floorLife,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].anim) == 2);
fread(&worldObjects[i].anim,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].anim) == 2);
fread(&ListWorldObjets[i].anim,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].frame) == 2);
fread(&worldObjects[i].frame,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].frame) == 2);
fread(&ListWorldObjets[i].frame,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].animType) == 2);
fread(&worldObjects[i].animType,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].animType) == 2);
fread(&ListWorldObjets[i].animType,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].animInfo) == 2);
fread(&worldObjects[i].animInfo,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].animInfo) == 2);
fread(&ListWorldObjets[i].animInfo,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].trackMode) == 2);
fread(&worldObjects[i].trackMode,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].trackMode) == 2);
fread(&ListWorldObjets[i].trackMode,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].trackNumber) == 2);
fread(&worldObjects[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].trackNumber) == 2);
fread(&ListWorldObjets[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].positionInTrack) == 2);
fread(&worldObjects[i].positionInTrack,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].positionInTrack) == 2);
fread(&ListWorldObjets[i].positionInTrack,2,1,fHandle);
}
if(g_gameId == AITD1)
@ -609,83 +609,83 @@ int makeSaveFile(int entry)
for(i=0;i<maxObjects;i++)
{
ASSERT(sizeof(worldObjects[i].objIndex) == 2);
fwrite(&worldObjects[i].objIndex,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].objIndex) == 2);
fwrite(&ListWorldObjets[i].objIndex,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].body) == 2);
fwrite(&worldObjects[i].body,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].body) == 2);
fwrite(&ListWorldObjets[i].body,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].flags) == 2);
fwrite(&worldObjects[i].flags,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].flags) == 2);
fwrite(&ListWorldObjets[i].flags,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].typeZV) == 2);
fwrite(&worldObjects[i].typeZV,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].typeZV) == 2);
fwrite(&ListWorldObjets[i].typeZV,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundBody) == 2);
fwrite(&worldObjects[i].foundBody,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundBody) == 2);
fwrite(&ListWorldObjets[i].foundBody,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundName) == 2);
fwrite(&worldObjects[i].foundName,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundName) == 2);
fwrite(&ListWorldObjets[i].foundName,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].flags2) == 2);
fwrite(&worldObjects[i].flags2,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].flags2) == 2);
fwrite(&ListWorldObjets[i].flags2,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].foundLife) == 2);
fwrite(&worldObjects[i].foundLife,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].foundLife) == 2);
fwrite(&ListWorldObjets[i].foundLife,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].x) == 2);
fwrite(&worldObjects[i].x,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].x) == 2);
fwrite(&ListWorldObjets[i].x,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].y) == 2);
fwrite(&worldObjects[i].y,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].y) == 2);
fwrite(&ListWorldObjets[i].y,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].z) == 2);
fwrite(&worldObjects[i].z,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].z) == 2);
fwrite(&ListWorldObjets[i].z,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].alpha) == 2);
fwrite(&worldObjects[i].alpha,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].alpha) == 2);
fwrite(&ListWorldObjets[i].alpha,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].beta) == 2);
fwrite(&worldObjects[i].beta,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].beta) == 2);
fwrite(&ListWorldObjets[i].beta,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].gamma) == 2);
fwrite(&worldObjects[i].gamma,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].gamma) == 2);
fwrite(&ListWorldObjets[i].gamma,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].stage) == 2);
fwrite(&worldObjects[i].stage,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].stage) == 2);
fwrite(&ListWorldObjets[i].stage,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].room) == 2);
fwrite(&worldObjects[i].room,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].room) == 2);
fwrite(&ListWorldObjets[i].room,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].lifeMode) == 2);
fwrite(&worldObjects[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].lifeMode) == 2);
fwrite(&ListWorldObjets[i].lifeMode,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].life) == 2);
fwrite(&worldObjects[i].life,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].life) == 2);
fwrite(&ListWorldObjets[i].life,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].floorLife) == 2);
fwrite(&worldObjects[i].floorLife,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].floorLife) == 2);
fwrite(&ListWorldObjets[i].floorLife,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].anim) == 2);
fwrite(&worldObjects[i].anim,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].anim) == 2);
fwrite(&ListWorldObjets[i].anim,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].frame) == 2);
fwrite(&worldObjects[i].frame,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].frame) == 2);
fwrite(&ListWorldObjets[i].frame,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].animType) == 2);
fwrite(&worldObjects[i].animType,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].animType) == 2);
fwrite(&ListWorldObjets[i].animType,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].animInfo) == 2);
fwrite(&worldObjects[i].animInfo,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].animInfo) == 2);
fwrite(&ListWorldObjets[i].animInfo,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].trackMode) == 2);
fwrite(&worldObjects[i].trackMode,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].trackMode) == 2);
fwrite(&ListWorldObjets[i].trackMode,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].trackNumber) == 2);
fwrite(&worldObjects[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].trackNumber) == 2);
fwrite(&ListWorldObjets[i].trackNumber,2,1,fHandle);
ASSERT(sizeof(worldObjects[i].positionInTrack) == 2);
fwrite(&worldObjects[i].positionInTrack,2,1,fHandle);
ASSERT(sizeof(ListWorldObjets[i].positionInTrack) == 2);
fwrite(&ListWorldObjets[i].positionInTrack,2,1,fHandle);
}
if(g_gameId == AITD1)

View File

@ -217,7 +217,7 @@ void processTrack(void)
}
case 2: // follow
{
int followedActorIdx = worldObjects[currentProcessedActorPtr->trackNumber].objIndex;
int followedActorIdx = ListWorldObjets[currentProcessedActorPtr->trackNumber].objIndex;
if(followedActorIdx == -1)
{
@ -547,9 +547,9 @@ void processTrack(void)
{
int objNum = currentProcessedActorPtr->indexInWorld;
worldObjects[objNum].x = currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX;
worldObjects[objNum].y = currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY;
worldObjects[objNum].z = currentProcessedActorPtr->roomZ + currentProcessedActorPtr->stepZ;
ListWorldObjets[objNum].x = currentProcessedActorPtr->roomX + currentProcessedActorPtr->stepX;
ListWorldObjets[objNum].y = currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY;
ListWorldObjets[objNum].z = currentProcessedActorPtr->roomZ + currentProcessedActorPtr->stepZ;
currentProcessedActorPtr->positionInTrack++;
@ -571,9 +571,9 @@ void processTrack(void)
z = *(s16*)(trackPtr);
trackPtr += 2;
objX = worldObjects[currentProcessedActorPtr->indexInWorld].x;
objY = worldObjects[currentProcessedActorPtr->indexInWorld].y;
objZ = worldObjects[currentProcessedActorPtr->indexInWorld].z;
objX = ListWorldObjets[currentProcessedActorPtr->indexInWorld].x;
objY = ListWorldObjets[currentProcessedActorPtr->indexInWorld].y;
objZ = ListWorldObjets[currentProcessedActorPtr->indexInWorld].z;
if( currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY < y - 100
|| currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY > y + 100)
@ -641,9 +641,9 @@ void processTrack(void)
z = *(s16*)(trackPtr);
trackPtr += 2;
objX = worldObjects[currentProcessedActorPtr->indexInWorld].x;
objY = worldObjects[currentProcessedActorPtr->indexInWorld].y;
objZ = worldObjects[currentProcessedActorPtr->indexInWorld].z;
objX = ListWorldObjets[currentProcessedActorPtr->indexInWorld].x;
objY = ListWorldObjets[currentProcessedActorPtr->indexInWorld].y;
objZ = ListWorldObjets[currentProcessedActorPtr->indexInWorld].z;
if( currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY < y - 100
|| currentProcessedActorPtr->roomY + currentProcessedActorPtr->stepY > y + 100)
@ -772,7 +772,7 @@ void processTrack2(void)
}
case 2: // follow
{
int followedActorIdx = worldObjects[currentProcessedActorPtr->trackNumber].objIndex;
int followedActorIdx = ListWorldObjets[currentProcessedActorPtr->trackNumber].objIndex;
if(followedActorIdx == -1)
{

View File

@ -90,7 +90,7 @@ hqrEntryStruct* listMatrix;
s16 maxObjects;
std::vector<tWorldObject> worldObjects;
std::vector<tWorldObject> ListWorldObjets;
s16* vars;

View File

@ -339,7 +339,7 @@ extern hqrEntryStruct* listMatrix;
extern s16 maxObjects;
extern std::vector<tWorldObject> worldObjects; // may be less
extern std::vector<tWorldObject> ListWorldObjets; // may be less
extern s16* vars;