diff --git a/TR5Main/Game/camera.cpp b/TR5Main/Game/camera.cpp index bd7249597..900248e41 100644 --- a/TR5Main/Game/camera.cpp +++ b/TR5Main/Game/camera.cpp @@ -1,15 +1,38 @@ -#include "camera.h" +#include "Camera.h" #include #include #include #include "draw.h" +#include "lara.h" +#include "effects.h" +#include "effect2.h" +#include "debris.h" + +struct OLD_CAMERA +{ + short currentAnimState; + short goalAnimState; + int targetDistance; + short actualElevation; + short targetElevation; + short actualAngle; + PHD_3DPOS pos; + PHD_3DPOS pos2; + PHD_VECTOR target; +}; #define LfAspectCorrection VAR_U_(0x0055DA30, float) +#define LastTarget VAR_U_(0x00EEFA30, GAME_VECTOR) extern int KeyTriggerActive; PHD_VECTOR CurrentCameraPosition; SVECTOR CurrentCameraRotation; +GAME_VECTOR LastIdeal; +GAME_VECTOR Ideals[5]; +OLD_CAMERA OldCam; +int CameraSnaps = 0; +int TargetSnaps = 0; void ActivateCamera() { @@ -57,7 +80,7 @@ void AlterFOV(int value) { CurrentFOV = value; PhdPerspective = PhdWidth / 2 * COS(CurrentFOV / 2) / SIN(CurrentFOV / 2); - LfAspectCorrection = 1; // 1.3333334f / (float)(PhdWidth / PhdHeight); + LfAspectCorrection = 1.3333334f / (float)(PhdWidth / PhdHeight); } int mgLOS(GAME_VECTOR* start, GAME_VECTOR* target, int push) @@ -129,6 +152,721 @@ int mgLOS(GAME_VECTOR* start, GAME_VECTOR* target, int push) return flag == 0; } +void InitialiseCamera() +{ + Camera.shift = LaraItem->pos.yPos - 1024; + + LastTarget.x = LaraItem->pos.xPos; + LastTarget.y = Camera.shift; + LastTarget.z = LaraItem->pos.zPos; + LastTarget.roomNumber = LaraItem->roomNumber; + + Camera.target.x = LastTarget.x; + Camera.target.y = Camera.shift; + Camera.target.z = LastTarget.z; + Camera.target.roomNumber = LaraItem->roomNumber; + + Camera.pos.x = LastTarget.x; + Camera.pos.y = Camera.shift; + Camera.pos.z = LastTarget.z - 100; + Camera.pos.roomNumber = LaraItem->roomNumber; + + Camera.targetDistance = 1536; + Camera.item = NULL; + Camera.numberFrames = 1; + Camera.type = CHASE_CAMERA; + Camera.speed = 1; + Camera.flags = CF_FOLLOW_CENTER; + Camera.bounce = 0; + Camera.number = -1; + Camera.fixedCamera = 0; + + AlterFOV(14560); + + UseForcedFixedCamera = 0; + CalculateCamera(); +} + +void MoveCamera(GAME_VECTOR* ideal, int speed) +{ + GAME_VECTOR from, to; + + if (BinocularOn < 0) + { + speed = 1; + BinocularOn++; + } + + if (OldCam.pos.xRot != LaraItem->pos.xRot + || OldCam.pos.yRot != LaraItem->pos.yRot + || OldCam.pos.zRot != LaraItem->pos.zRot + || OldCam.pos2.xRot != Lara.headXrot + || OldCam.pos2.yRot != Lara.headYrot + || OldCam.pos2.xPos != Lara.torsoXrot + || OldCam.pos2.yPos != Lara.torsoYrot + || OldCam.pos.xPos != LaraItem->pos.xPos + || OldCam.pos.yPos != LaraItem->pos.yPos + || OldCam.pos.zPos != LaraItem->pos.zPos + || OldCam.currentAnimState != LaraItem->currentAnimState + || OldCam.goalAnimState != LaraItem->goalAnimState + || OldCam.targetDistance != Camera.targetDistance + || OldCam.targetElevation != Camera.targetElevation + || OldCam.actualElevation != Camera.actualElevation + || OldCam.actualAngle != Camera.actualAngle + || OldCam.target.x != Camera.target.x + || OldCam.target.y != Camera.target.y + || OldCam.target.z != Camera.target.z + || Camera.oldType != Camera.type + || SniperOverlay + || BinocularOn < 0) + { + OldCam.pos.xRot = LaraItem->pos.xRot; + OldCam.pos.yRot = LaraItem->pos.yRot; + OldCam.pos.zRot = LaraItem->pos.zRot; + OldCam.pos2.xRot = Lara.headXrot; + OldCam.pos2.yRot = Lara.headYrot; + OldCam.pos2.xPos = Lara.torsoXrot; + OldCam.pos2.yPos = Lara.torsoYrot; + OldCam.pos.xPos = LaraItem->pos.xPos; + OldCam.pos.yPos = LaraItem->pos.yPos; + OldCam.pos.zPos = LaraItem->pos.zPos; + OldCam.currentAnimState = LaraItem->currentAnimState; + OldCam.goalAnimState = LaraItem->goalAnimState; + OldCam.targetDistance = Camera.targetDistance; + OldCam.targetElevation = Camera.targetElevation; + OldCam.actualElevation = Camera.actualElevation; + OldCam.actualAngle = Camera.actualAngle; + OldCam.target.x = Camera.target.x; + OldCam.target.y = Camera.target.y; + OldCam.target.z = Camera.target.z; + LastIdeal.x = ideal->x; + LastIdeal.y = ideal->y; + LastIdeal.z = ideal->z; + LastIdeal.roomNumber = ideal->roomNumber; + } + else + { + ideal->x = LastIdeal.x; + ideal->y = LastIdeal.y; + ideal->z = LastIdeal.z; + ideal->roomNumber = LastIdeal.roomNumber; + } + + Camera.pos.x += (ideal->x - Camera.pos.x) / speed; + Camera.pos.y += (ideal->y - Camera.pos.y) / speed; + Camera.pos.z += (ideal->z - Camera.pos.z) / speed; + Camera.pos.roomNumber = ideal->roomNumber; + + if (Camera.bounce) + { + if (Camera.bounce <= 0) + { + int bounce = -Camera.bounce; + int bounce2 = -Camera.bounce >> 2; + Camera.target.x += GetRandomControl() % bounce - bounce2; + Camera.target.y += GetRandomControl() % bounce - bounce2; + Camera.target.z += GetRandomControl() % bounce - bounce2; + Camera.bounce += 5; + } + else + { + Camera.pos.y += Camera.bounce; + Camera.target.y += Camera.bounce; + Camera.bounce = 0; + } + } + + short roomNumber = Camera.pos.roomNumber; + FLOOR_INFO* floor = GetFloor(Camera.pos.x, Camera.pos.y, Camera.pos.z, &roomNumber); + int height = GetFloorHeight(floor, Camera.pos.x, Camera.pos.y, Camera.pos.z); + + if (Camera.pos.y < GetCeiling(floor, Camera.pos.x, Camera.pos.y, Camera.pos.z) || Camera.pos.y > height) + { + mgLOS(&Camera.target, &Camera.pos, 0); + + if (abs(Camera.pos.x - ideal->x) < 768 + && abs(Camera.pos.y - ideal->y) < 768 + && abs(Camera.pos.z - ideal->z) < 768) + { + to.x = Camera.pos.x; + to.y = Camera.pos.y; + to.z = Camera.pos.z; + to.roomNumber = Camera.pos.roomNumber; + + from.x = ideal->x; + from.y = ideal->y; + from.z = ideal->z; + from.roomNumber = ideal->roomNumber; + + if (!mgLOS(&from, &to, 0) && ++CameraSnaps >= 8) + { + Camera.pos.x = ideal->x; + Camera.pos.y = ideal->y; + Camera.pos.z = ideal->z; + Camera.pos.roomNumber = ideal->roomNumber; + CameraSnaps = 0; + } + } + } + + roomNumber = Camera.pos.roomNumber; + floor = GetFloor(Camera.pos.x, Camera.pos.y, Camera.pos.z, &roomNumber); + height = GetFloorHeight(floor, Camera.pos.x, Camera.pos.y, Camera.pos.z); + int ceiling = GetCeiling(floor, Camera.pos.x, Camera.pos.y, Camera.pos.z); + + if (Camera.pos.y - 255 < ceiling && Camera.pos.y + 255 > height && ceiling < height && ceiling != NO_HEIGHT && height != NO_HEIGHT) + Camera.pos.y = (height + ceiling) >> 1; + else if (Camera.pos.y + 255 > height && ceiling < height && ceiling != NO_HEIGHT && height != NO_HEIGHT) + Camera.pos.y = height - 255; + else if (Camera.pos.y - 255 < ceiling && ceiling < height && ceiling != NO_HEIGHT && height != NO_HEIGHT) + Camera.pos.y = ceiling + 255; + else if (ceiling >= height || height == NO_HEIGHT || ceiling == NO_HEIGHT) + { + Camera.pos.x = ideal->x; + Camera.pos.y = ideal->y; + Camera.pos.z = ideal->z; + Camera.pos.roomNumber = ideal->roomNumber; + } + + GetFloor(Camera.pos.x, Camera.pos.y, Camera.pos.z, &Camera.pos.roomNumber); + LookAt(Camera.pos.x, Camera.pos.y, Camera.pos.z, Camera.target.x, Camera.target.y, Camera.target.z, 0); + + if (Camera.mikeAtLara) + { + Camera.mikePos.x = LaraItem->pos.xPos; + Camera.mikePos.y = LaraItem->pos.yPos; + Camera.mikePos.z = LaraItem->pos.zPos; + Camera.oldType = Camera.type; + } + else + { + short angle = ATAN(Camera.target.z - Camera.pos.z, Camera.target.x - Camera.pos.x); + Camera.mikePos.x += PhdPerspective * SIN(angle) >> W2V_SHIFT; + Camera.mikePos.y = Camera.pos.y; + Camera.mikePos.z += PhdPerspective * COS(angle) >> W2V_SHIFT; + Camera.oldType = Camera.type; + } +} + +void ChaseCamera(ITEM_INFO* item) +{ + if (!Camera.targetElevation) + { + Camera.targetElevation = -ANGLE(10); + } + + Camera.targetElevation += item->pos.xRot; + UpdateCameraElevation(); + + if (Camera.actualElevation > ANGLE(85)) + Camera.actualElevation = ANGLE(85); + else if (Camera.actualElevation < -ANGLE(85)) + Camera.actualElevation = -ANGLE(85); + + int distance = Camera.targetDistance * COS(Camera.actualElevation) >> W2V_SHIFT; + + GetFloor(Camera.target.x, Camera.target.y, Camera.target.z, &Camera.target.roomNumber); + if (Rooms[Camera.target.roomNumber].flags & ENV_FLAG_SWAMP) + Camera.target.y = Rooms[Camera.target.roomNumber].y - 256; + + int wx = Camera.target.x; + int wy = Camera.target.y; + int wz = Camera.target.z; + + short roomNumber = Camera.target.roomNumber; + FLOOR_INFO* floor = GetFloor(wx, wy, wz, &roomNumber); + int h = GetFloorHeight(floor, wx, wy, wz); + int c = GetCeiling(floor, wx, wy, wz); + + if ((((wy < c) || (h < wy)) || (h <= c)) || ((h == NO_HEIGHT || (c == NO_HEIGHT)))) + { + TargetSnaps++; + Camera.target.x = LastTarget.x; + Camera.target.y = LastTarget.y; + Camera.target.z = LastTarget.z; + Camera.target.roomNumber = LastTarget.roomNumber; + } + else + { + TargetSnaps = 0; + } + + for (int i = 0; i < 5; i++) + { + Ideals[i].y = Camera.target.y + (Camera.targetDistance * SIN(Camera.actualElevation) >> W2V_SHIFT); + } + + int farthest = 0x7FFFFFFF; + int farthestnum = 0; + GAME_VECTOR temp[2]; + + for (int i = 0; i < 5; i++) + { + short angle; + + if (i == 0) + { + angle = Camera.actualAngle; + } + else + { + angle = (i - 1) * ANGLE(90); + } + + Ideals[i].x = Camera.target.x - ((distance * SIN(angle)) >> W2V_SHIFT); + Ideals[i].z = Camera.target.z - ((distance * COS(angle)) >> W2V_SHIFT); + Ideals[i].roomNumber = Camera.target.roomNumber; + + if (mgLOS(&Camera.target, &Ideals[i], 200)) + { + temp[0].x = Ideals[i].x; + temp[0].y = Ideals[i].y; + temp[0].z = Ideals[i].z; + temp[0].roomNumber = Ideals[i].roomNumber; + + temp[1].x = Camera.pos.x; + temp[1].y = Camera.pos.y; + temp[1].z = Camera.pos.z; + temp[1].roomNumber = Camera.pos.roomNumber; + + if (i == 0 || mgLOS(&temp[0], &temp[1], 0)) + { + if (i == 0) + { + farthestnum = 0; + break; + } + + int dx = (Camera.pos.x - Ideals[i].x) * (Camera.pos.x - Ideals[i].x); + dx += (Camera.pos.z - Ideals[i].z) * (Camera.pos.z - Ideals[i].z); + if (dx < farthest) + { + farthest = dx; + farthestnum = i; + } + } + } + else if (i == 0) + { + temp[0].x = Ideals[i].x; + temp[0].y = Ideals[i].y; + temp[0].z = Ideals[i].z; + temp[0].roomNumber = Ideals[i].roomNumber; + + temp[1].x = Camera.pos.x; + temp[1].y = Camera.pos.y; + temp[1].z = Camera.pos.z; + temp[1].roomNumber = Camera.pos.roomNumber; + + if (i == 0 || mgLOS(&temp[0], &temp[1], 0)) + { + int dx = (Camera.target.x - Ideals[i].x) * (Camera.target.x - Ideals[i].x); + int dz = (Camera.target.z - Ideals[i].z) * (Camera.target.z - Ideals[i].z); + + if ((dx + dz) > 0x90000) + { + farthestnum = 0; + break; + } + } + } + } + + GAME_VECTOR ideal; + ideal.x = Ideals[farthestnum].x; + ideal.y = Ideals[farthestnum].y; + ideal.z = Ideals[farthestnum].z; + ideal.roomNumber = Ideals[farthestnum].roomNumber; + + CameraCollisionBounds(&ideal, 384, 1); + + if (Camera.oldType == FIXED_CAMERA) + { + Camera.speed = 1; + } + + MoveCamera(&ideal, Camera.speed); +} + +void UpdateCameraElevation() +{ + PHD_VECTOR pos; + PHD_VECTOR pos1; + + if (Camera.laraNode != -1) + { + pos.z = 0; + pos.y = 0; + pos.x = 0; + GetLaraJointPosition(&pos, Camera.laraNode); + + pos1.x = 0; + pos1.y = -256; + pos1.z = 2048; + GetLaraJointPosition(&pos1, Camera.laraNode); + + pos.z = pos1.z - pos.z; + pos.x = pos1.x - pos.x; + Camera.actualAngle = Camera.targetAngle + ATAN(pos.z, pos.x); + } + else + { + Camera.actualAngle = LaraItem->pos.yRot + Camera.targetAngle; + } + + Camera.actualElevation += (Camera.targetElevation - Camera.actualElevation) >> 3; +} + +void CombatCamera(ITEM_INFO* item) +{ + Camera.target.x = item->pos.xPos; + Camera.target.z = item->pos.zPos; + + if (Lara.target) + { + Camera.targetAngle = Lara.targetAngles[0]; + Camera.targetElevation = Lara.targetAngles[1] + item->pos.xRot; + } + else + { + Camera.targetAngle = Lara.headYrot + Lara.torsoYrot; + Camera.targetElevation = Lara.headXrot + Lara.torsoXrot + item->pos.xRot - ANGLE(15); + } + + FLOOR_INFO* floor = GetFloor(Camera.target.x, Camera.target.y, Camera.target.z, &Camera.target.roomNumber); + int h = GetFloorHeight(floor, Camera.target.x, Camera.target.y, Camera.target.z); + int c = GetCeiling(floor, Camera.target.x, Camera.target.y, Camera.target.z); + + if (c + 64 > h - 64 && h != NO_HEIGHT && c != NO_HEIGHT) + { + Camera.target.y = (c + h) >> 1; + Camera.targetElevation = 0; + } + else if (Camera.target.y > h - 64 && h != NO_HEIGHT) + { + Camera.target.y = h - 64; + Camera.targetElevation = 0; + } + else if (Camera.target.y < c + 64 && c != NO_HEIGHT) + { + Camera.target.y = c + 64; + Camera.targetElevation = 0; + } + + GetFloor(Camera.target.x, Camera.target.y, Camera.target.z, &Camera.target.roomNumber); + + int wx = Camera.target.x; + int wy = Camera.target.y; + int wz = Camera.target.z; + + short roomNumber = Camera.target.roomNumber; + floor = GetFloor(Camera.target.x, Camera.target.y, Camera.target.z, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz); + c = GetCeiling(floor, wx, wy, wz); + + if (wy < c || wy > h || c >= h || h == NO_HEIGHT || c == NO_HEIGHT) + { + TargetSnaps++; + Camera.target.x = LastTarget.x; + Camera.target.y = LastTarget.y; + Camera.target.z = LastTarget.z; + Camera.target.roomNumber = LastTarget.roomNumber; + } + else + { + TargetSnaps = 0; + } + + UpdateCameraElevation(); + + Camera.targetDistance = 1536; + int distance = Camera.targetDistance * COS(Camera.actualElevation) >> W2V_SHIFT; + + for (int i = 0; i < 5; i++) + { + Ideals[i].y = Camera.target.y + (Camera.targetDistance * SIN(Camera.actualElevation) >> W2V_SHIFT); + } + + int farthest = 0x7FFFFFFF; + int farthestnum = 0; + GAME_VECTOR temp[2]; + + for (int i = 0; i < 5; i++) + { + short angle; + + if (i == 0) + { + angle = Camera.actualAngle; + } + else + { + angle = (i - 1) * ANGLE(90); + } + + Ideals[i].x = Camera.target.x - ((distance * SIN(angle)) >> W2V_SHIFT); + Ideals[i].z = Camera.target.z - ((distance * COS(angle)) >> W2V_SHIFT); + Ideals[i].roomNumber = Camera.target.roomNumber; + + if (mgLOS(&Camera.target, &Ideals[i], 200)) + { + temp[0].x = Ideals[i].x; + temp[0].y = Ideals[i].y; + temp[0].z = Ideals[i].z; + temp[0].roomNumber = Ideals[i].roomNumber; + + temp[1].x = Camera.pos.x; + temp[1].y = Camera.pos.y; + temp[1].z = Camera.pos.z; + temp[1].roomNumber = Camera.pos.roomNumber; + + if (i == 0 || mgLOS(&temp[0], &temp[1], 0)) + { + if (i == 0) + { + farthestnum = 0; + break; + } + + int dx = (Camera.pos.x - Ideals[i].x) * (Camera.pos.x - Ideals[i].x); + dx += (Camera.pos.z - Ideals[i].z) * (Camera.pos.z - Ideals[i].z); + if (dx < farthest) + { + farthest = dx; + farthestnum = i; + } + } + } + else if (i == 0) + { + temp[0].x = Ideals[i].x; + temp[0].y = Ideals[i].y; + temp[0].z = Ideals[i].z; + temp[0].roomNumber = Ideals[i].roomNumber; + + temp[1].x = Camera.pos.x; + temp[1].y = Camera.pos.y; + temp[1].z = Camera.pos.z; + temp[1].roomNumber = Camera.pos.roomNumber; + + if (i == 0 || mgLOS(&temp[0], &temp[1], 0)) + { + int dx = (Camera.target.x - Ideals[i].x) * (Camera.target.x - Ideals[i].x); + int dz = (Camera.target.z - Ideals[i].z) * (Camera.target.z - Ideals[i].z); + + if ((dx + dz) > 0x90000) + { + farthestnum = 0; + break; + } + } + } + } + + GAME_VECTOR ideal; + ideal.x = Ideals[farthestnum].x; + ideal.y = Ideals[farthestnum].y; + ideal.z = Ideals[farthestnum].z; + ideal.roomNumber = Ideals[farthestnum].roomNumber; + + CameraCollisionBounds(&ideal, 384, 1); + + if (Camera.oldType == FIXED_CAMERA) + { + Camera.speed = 1; + } + + MoveCamera(&ideal, Camera.speed); +} + +int CameraCollisionBounds(GAME_VECTOR* ideal, int push, int yFirst) +{ + int wx = ideal->x; + int wy = ideal->y; + int wz = ideal->z; + + short roomNumber; + FLOOR_INFO* floor; + int h; + int c; + + if (yFirst) + { + roomNumber = ideal->roomNumber; + floor = GetFloor(wx, wy, wz, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz); + c = GetCeiling(floor, wx, wy, wz); + + if (wy - 255 < c && wy + 255 > h && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = (h + c) >> 1; + else if (wy + 255 > h && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = h - 255; + else if (wy - 255 < c && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = c + 255; + } + + roomNumber = ideal->roomNumber; + floor = GetFloor(wx - push, wy, wz, &roomNumber); + h = GetFloorHeight(floor, wx - push, wy, wz); + c = GetCeiling(floor, wx - push, wy, wz); + if (wy > h || h == NO_HEIGHT || c == NO_HEIGHT || c >= h || wy < c) + wx = (wx & (~1023)) + push; + + roomNumber = ideal->roomNumber; + floor = GetFloor(wx, wy, wz - push, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz - push); + c = GetCeiling(floor, wx, wy, wz - push); + if (wy > h || h == NO_HEIGHT || c == NO_HEIGHT || c >= h || wy < c) + wz = (wz & (~1023)) + push; + + roomNumber = ideal->roomNumber; + floor = GetFloor(wx + push, wy, wz, &roomNumber); + h = GetFloorHeight(floor, wx + push, wy, wz); + c = GetCeiling(floor, wx + push, wy, wz); + if (wy > h || h == NO_HEIGHT || c == NO_HEIGHT || c >= h || wy < c) + wx = (wx | 1023) - push; + + roomNumber = ideal->roomNumber; + floor = GetFloor(wx, wy, wz + push, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz + push); + c = GetCeiling(floor, wx, wy, wz + push); + if (wy > h || h == NO_HEIGHT || c == NO_HEIGHT || c >= h || wy < c) + wz = (wz | 1023) - push; + + if (!yFirst) + { + roomNumber = ideal->roomNumber; + floor = GetFloor(wx, wy, wz, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz); + c = GetCeiling(floor, wx, wy, wz); + + if (wy - 255 < c && wy + 255 > h && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = (h + c) >> 1; + else if (wy + 255 > h && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = h - 255; + else if (wy - 255 < c && c < h && c != NO_HEIGHT && h != NO_HEIGHT) + wy = c + 255; + } + + roomNumber = ideal->roomNumber; + floor = GetFloor(wx, wy, wz, &roomNumber); + h = GetFloorHeight(floor, wx, wy, wz); + c = GetCeiling(floor, wx, wy, wz); + if (wy > h || wy < c || h == NO_HEIGHT || c == NO_HEIGHT || c >= h) + return 1; + + floor = GetFloor(wx, wy, wz, &ideal->roomNumber); + ideal->x = wx; + ideal->y = wy; + ideal->z = wz; + + return 0; +} + +void FixedCamera() +{ + GAME_VECTOR from, to; + + if (UseForcedFixedCamera) + { + from.x = ForcedFixedCamera.x; + from.y = ForcedFixedCamera.y; + from.z = ForcedFixedCamera.z; + from.roomNumber = ForcedFixedCamera.roomNumber; + } + else + { + OBJECT_VECTOR* camera = &Cameras[Camera.number]; + + from.x = camera->x; + from.y = camera->y; + from.z = camera->z; + from.roomNumber = camera->data; + + if (camera->flags & 2) + { + if (FlashFader > 2) + { + FlashFader = (FlashFader >> 1) & 0xFE; + } + + SniperOverlay = 1; + + Camera.target.x = (Camera.target.x + 2 * LastTarget.x) / 3; + Camera.target.y = (Camera.target.y + 2 * LastTarget.y) / 3; + Camera.target.z = (Camera.target.z + 2 * LastTarget.z) / 3; + + if (SniperCount) + { + SniperCount--; + } + else + { + to.x = Camera.target.x + ((Camera.target.x - Camera.pos.x) >> 1); + to.y = Camera.target.y + ((Camera.target.y - Camera.pos.y) >> 1); + to.z = Camera.target.z + ((Camera.target.z - Camera.pos.z) >> 1); + + int los = LOS(&from, &to); + GetLaraOnLOS = 1; + + PHD_VECTOR pos; + int objLos = ObjectOnLOS2(&from, &to, &pos, &CollidedMeshes[0]); + objLos = (objLos != 999 && objLos >= 0 && Items[objLos].objectNumber != ID_LARA); + + if (!(GetRandomControl() & 0x3F) + || !(GlobalCounter & 0x3F) + || objLos && !(GlobalCounter & 0xF) && GetRandomControl() & 1) + { + SoundEffect(SFX_EXPLOSION1, 0, 83886084); + SoundEffect(SFX_HK_FIRE, 0, 0); + + FlashFadeR = 192; + FlashFadeB = 0; + FlashFader = 24; + FlashFadeG = (GetRandomControl() & 0x1F) + 160; + + SniperCount = 15; + + if (objLos && GetRandomControl() & 3) + { + DoBloodSplat(pos.x, pos.y, pos.z, (GetRandomControl() & 3) + 3, 2 * GetRandomControl(), LaraItem->roomNumber); + LaraItem->hitPoints -= 100; + GetLaraOnLOS = 0; + } + else if (objLos < 0) + { + MESH_INFO* mesh = CollidedMeshes[0]; + if (mesh->staticNumber >= 50 && mesh->staticNumber < 58) + { + ShatterObject(0, mesh, 128, to.roomNumber, 0); + mesh->Flags &= ~1; + SoundEffect(ShatterSounds[CurrentLevel - 5][mesh->staticNumber], (PHD_3DPOS*)mesh, 0); + } + TriggerRicochetSpark(&to, 2 * GetRandomControl(), 3, 0); + TriggerRicochetSpark(&to, 2 * GetRandomControl(), 3, 0); + GetLaraOnLOS = 0; + } + else if (!los) + { + TriggerRicochetSpark(&to, 2 * GetRandomControl(), 3, 0); + } + } + GetLaraOnLOS = 0; + } + } + } + + Camera.fixedCamera = 1; + + MoveCamera(&from, 1); + + if (Camera.timer) + { + if (!--Camera.timer) + Camera.timer = -1; + } +} + void BounceCamera(ITEM_INFO* item, short bounce, short maxDistance) { int distance; @@ -156,4 +894,11 @@ void Inject_Camera() INJECT(0x0048EDC0, AlterFOV); INJECT(0x0048F760, LookAt); INJECT(0x0040FA70, mgLOS); + INJECT(0x0040C7A0, MoveCamera); + INJECT(0x0040C690, InitialiseCamera); + INJECT(0x004107C0, UpdateCameraElevation); + INJECT(0x0040D150, ChaseCamera); + INJECT(0x0040D640, CombatCamera); + INJECT(0x0040F5C0, CameraCollisionBounds); + INJECT(0x0040E890, FixedCamera); } \ No newline at end of file diff --git a/TR5Main/Game/camera.h b/TR5Main/Game/camera.h index c0714b5b5..c6055f3b6 100644 --- a/TR5Main/Game/camera.h +++ b/TR5Main/Game/camera.h @@ -8,16 +8,16 @@ #define ForcedFixedCamera VAR_U_(0x00EEFA20, GAME_VECTOR) #define UseForcedFixedCamera VAR_U_(0x00EEFA50, char) -#define InitialiseCamera ((void (__cdecl*)()) 0x0040C690) -#define MoveCamera ((int(__cdecl*)(GAME_VECTOR*,int)) 0x0040C7A0) -#define ChaseCamera ((int(__cdecl*)(ITEM_INFO*)) 0x0040D150) -#define CombatCamera ((int(__cdecl*)(ITEM_INFO*)) 0x0040D640) +//#define InitialiseCamera ((void (__cdecl*)()) 0x0040C690) +//#define MoveCamera ((int(__cdecl*)(GAME_VECTOR*,int)) 0x0040C7A0) +//#define ChaseCamera ((int(__cdecl*)(ITEM_INFO*)) 0x0040D150) +//#define CombatCamera ((int(__cdecl*)(ITEM_INFO*)) 0x0040D640) #define LookCamera ((void(__cdecl*)(ITEM_INFO*)) 0x0040DC10) -#define FixedCamera ((void(__cdecl*)()) 0x0040E890) +//#define FixedCamera ((void(__cdecl*)()) 0x0040E890) #define CalculateCamera ((void(__cdecl*)()) 0x0040ED30) #define BinocularCamera ((void(__cdecl*)()) 0x0040FC20) //#define RefreshCamera ((void(__cdecl*)(short,short*)) 0x004165E0) -#define CameraCollisionBounds ((int (__cdecl*)(GAME_VECTOR*,int,int)) 0x0040F5C0) +//#define CameraCollisionBounds ((int (__cdecl*)(GAME_VECTOR*,int,int)) 0x0040F5C0) #define do_new_cutscene_camera ((void(__cdecl*)()) 0x00421480) #define SaveD3DCameraMatrix ((void(__cdecl*)()) 0x00497280) #define UnknownCamera ((void(__cdecl*)()) 0x004975D0) @@ -28,6 +28,13 @@ void ActivateCamera(); void LookAt(int posX, int posY, int posZ, int targetX, int targetY, int targetZ, short roll); void AlterFOV(int value); int mgLOS(GAME_VECTOR* start, GAME_VECTOR* target, int push); +void InitialiseCamera(); +void MoveCamera(GAME_VECTOR* ideal, int speed); +void ChaseCamera(ITEM_INFO* item); +void UpdateCameraElevation(); +void CombatCamera(ITEM_INFO* item); +int CameraCollisionBounds(GAME_VECTOR* ideal, int push, int yFirst); +void FixedCamera(); void BounceCamera(ITEM_INFO* item, short bounce, short maxDistance); void Inject_Camera(); \ No newline at end of file diff --git a/TR5Main/Game/lara2gun.cpp b/TR5Main/Game/lara2gun.cpp index 7faa14526..4fd834b82 100644 --- a/TR5Main/Game/lara2gun.cpp +++ b/TR5Main/Game/lara2gun.cpp @@ -290,7 +290,7 @@ void PistolHandler(int weaponType) pos.z = (byte)GetRandomControl() - 128; GetLaraJointPosition(&pos, Lara.leftArm.flash_gun != 0 ? LJ_LHAND : LJ_RHAND); - /*if (gfLevelFlags & 0x2000 && LaraItem->room_number == gfMirrorRoom) + /*if (gfLevelFlags & 0x2000 && LaraItem->roomNumber == gfMirrorRoom) { v8 = GetRandomControl() & 0x3F; v9 = (GetRandomControl() & 0x1F) + 128; diff --git a/TR5Main/Game/missile.cpp b/TR5Main/Game/missile.cpp index 5ecdf87d7..efee141b9 100644 --- a/TR5Main/Game/missile.cpp +++ b/TR5Main/Game/missile.cpp @@ -134,7 +134,7 @@ void ControlNatlaGun(short fx_number) FX_INFO* fx, *newfx; OBJECT_INFO* object; FLOOR_INFO* floor; - short room_number; + short roomNumber; int x, y, z; fx = &Effects[fx_number]; @@ -149,14 +149,14 @@ void ControlNatlaGun(short fx_number) z = fx->pos.zPos + (fx->speed * COS(fx->pos.yRot) >> W2V_SHIFT); x = fx->pos.xPos + (fx->speed * SIN(fx->pos.yRot) >> W2V_SHIFT); y = fx->pos.yPos; - room_number = fx->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = fx->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); /* Don't create one if hit a wall */ if (y >= GetFloorHeight(floor, x, y, z) || y <= GetCeiling(floor, x, y, z)) return; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { newfx = &Effects[fx_number]; @@ -164,7 +164,7 @@ void ControlNatlaGun(short fx_number) newfx->pos.yPos = y; newfx->pos.zPos = z; newfx->pos.yRot = fx->pos.yRot; - newfx->roomNumber = room_number; + newfx->roomNumber = roomNumber; newfx->speed = fx->speed; newfx->frameNumber = 0; newfx->objectNumber = ID_PROJ_NATLA; @@ -172,19 +172,19 @@ void ControlNatlaGun(short fx_number) } } -short ShardGun(int x, int y, int z, short speed, short yrot, short room_number) +short ShardGun(int x, int y, int z, short speed, short yrot, short roomNumber) { short fx_number; FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; fx->pos.xRot = fx->pos.zRot = 0; fx->pos.yRot = yrot; fx->speed = SHARD_SPEED; @@ -197,19 +197,19 @@ short ShardGun(int x, int y, int z, short speed, short yrot, short room_number) return (fx_number); } -short BombGun(int x, int y, int z, short speed, short yrot, short room_number) +short BombGun(int x, int y, int z, short speed, short yrot, short roomNumber) { short fx_number; FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; fx->pos.xRot = fx->pos.zRot = 0; fx->pos.yRot = yrot; fx->speed = ROCKET_SPEED; @@ -222,19 +222,19 @@ short BombGun(int x, int y, int z, short speed, short yrot, short room_number) return (fx_number); } -short NatlaGun(int x, int y, int z, short speed, short yrot, short room_number) +short NatlaGun(int x, int y, int z, short speed, short yrot, short roomNumber) { short fx_number; FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; fx->pos.xRot = fx->pos.zRot = 0; fx->pos.yRot = yrot; fx->speed = NATLAGUN_SPEED; diff --git a/TR5Main/Game/missile.h b/TR5Main/Game/missile.h index d9e3034a4..6bb88fd9d 100644 --- a/TR5Main/Game/missile.h +++ b/TR5Main/Game/missile.h @@ -9,6 +9,6 @@ void ShootAtLara(FX_INFO* fx); void ControlMissile(short fxNumber); void ControlNatlaGun(short fx_number); -short ShardGun(int x, int y, int z, short speed, short yrot, short room_number); -short BombGun(int x, int y, int z, short speed, short yrot, short room_number); // RocketGun = BombGun -short NatlaGun(int x, int y, int z, short speed, short yrot, short room_number); \ No newline at end of file +short ShardGun(int x, int y, int z, short speed, short yrot, short roomNumber); +short BombGun(int x, int y, int z, short speed, short yrot, short roomNumber); // RocketGun = BombGun +short NatlaGun(int x, int y, int z, short speed, short yrot, short roomNumber); \ No newline at end of file diff --git a/TR5Main/Game/tomb4fx.cpp b/TR5Main/Game/tomb4fx.cpp index 3d44d2619..7cb5df987 100644 --- a/TR5Main/Game/tomb4fx.cpp +++ b/TR5Main/Game/tomb4fx.cpp @@ -574,7 +574,7 @@ void TriggerGunSmoke(int x, int y, int z, short xv, short yv, short zv, byte ini spark->dSize = size; } - /*if (gfLevelFlags & 0x20 && LaraItem->room_number == gfMirrorRoom) // 0x20 = GF_MIRROR_ENABLED + /*if (gfLevelFlags & 0x20 && LaraItem->roomNumber == gfMirrorRoom) // 0x20 = GF_MIRROR_ENABLED { spark->mirror = 1; } @@ -1765,7 +1765,7 @@ void TriggerExplosionBubble(int x, int y, int z, short roomNum)// (F) pos.x = item->pos.x_pos; pos.y = item->pos.y_pos; pos.z = item->pos.z_pos; - pos.room_number = item->room_number; + pos.roomNumber = item->roomNumber; SetUpLensFlare(0, 0, 0, &pos); }*/ diff --git a/TR5Main/Objects/TR2/tr2_dragon.cpp b/TR5Main/Objects/TR2/tr2_dragon.cpp index 7c55c56a1..c214972fd 100644 --- a/TR5Main/Objects/TR2/tr2_dragon.cpp +++ b/TR5Main/Objects/TR2/tr2_dragon.cpp @@ -69,20 +69,20 @@ void createBartoliLight(short ItemIndex, int type) TriggerDynamicLight(item->pos.xPos, item->pos.yPos - STEP_SIZE, item->pos.zPos, (GetRandomControl() & 20) + 25, (GetRandomControl() & 30) + 200, (GetRandomControl() & 25) + 50, (GetRandomControl() & 20) + 0); } -short dragonFire(int x, int y, int z, short speed, short yrot, short room_number) +short dragonFire(int x, int y, int z, short speed, short yrot, short roomNumber) { short fx_number = NO_ITEM; /* FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; fx->pos.xRot = fx->pos.zRot = 0; fx->pos.yRot = yrot; fx->speed = 200; diff --git a/TR5Main/Objects/TR2/tr2_knifethrower.cpp b/TR5Main/Objects/TR2/tr2_knifethrower.cpp index ac4ce6e7e..d834ef69c 100644 --- a/TR5Main/Objects/TR2/tr2_knifethrower.cpp +++ b/TR5Main/Objects/TR2/tr2_knifethrower.cpp @@ -70,20 +70,20 @@ void KnifeControl(short fxNum) } } -short ThrowKnife(int x, int y, int z, short speed, short yrot, short room_number) +short ThrowKnife(int x, int y, int z, short speed, short yrot, short roomNumber) { short fx_number = 0; /* FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; fx->pos.xRot = fx->pos.zRot = 0; fx->pos.yRot = yrot; fx->speed = 150; diff --git a/TR5Main/Objects/TR2/tr2_worker_flamethrower.cpp b/TR5Main/Objects/TR2/tr2_worker_flamethrower.cpp index a4616e538..6f9a60677 100644 --- a/TR5Main/Objects/TR2/tr2_worker_flamethrower.cpp +++ b/TR5Main/Objects/TR2/tr2_worker_flamethrower.cpp @@ -10,20 +10,20 @@ BITE_INFO workerFlameThrower = { 0, 250, 32, 9 }; -void Flame(DWORD x, int y, DWORD z, int speed, WORD yrot, WORD room_number) +void Flame(DWORD x, int y, DWORD z, int speed, WORD yrot, WORD roomNumber) { short fx_number; short cam_rot; FX_INFO* fx; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; fx->pos.xPos = x; fx->pos.yPos = y; fx->pos.zPos = z; - fx->roomNumber = room_number; + fx->roomNumber = roomNumber; //phd_GetVectorAngles(fx->pos.xPos - Camera.pos.x, // fx->pos.yPos - Camera.pos.y, // fx->pos.zPos - Camera.pos.z, &cam_rot); diff --git a/TR5Main/Objects/TR3/tr3_shiva.cpp b/TR5Main/Objects/TR3/tr3_shiva.cpp index a8017a0e2..b5bd686a6 100644 --- a/TR5Main/Objects/TR3/tr3_shiva.cpp +++ b/TR5Main/Objects/TR3/tr3_shiva.cpp @@ -144,7 +144,7 @@ void ShivaControl(short itemNum) ITEM_INFO* item; CREATURE_INFO* shiva; - short angle, head_x, head_y, torso_x, torso_y, tilt, room_number; + short angle, head_x, head_y, torso_x, torso_y, tilt, roomNumber; int x, z; int random, lara_alive; AI_INFO info; @@ -235,10 +235,10 @@ void ShivaControl(short itemNum) if (shiva->mood == ESCAPE_MOOD) { - room_number = item->roomNumber; + roomNumber = item->roomNumber; x = item->pos.xPos + (WALL_SIZE * SIN(item->pos.yRot + 0x8000) >> W2V_SHIFT); z = item->pos.zPos + (WALL_SIZE * COS(item->pos.yRot + 0x8000) >> W2V_SHIFT); - floor = GetFloor(x, item->pos.yPos, z, &room_number); + floor = GetFloor(x, item->pos.yPos, z, &roomNumber); if (!shiva->flags && floor->box != NO_BOX && !(Boxes[floor->box].overlapIndex & BLOCKABLE)) item->goalAnimState = 8; diff --git a/TR5Main/Objects/TR3/tr3_sophia.cpp b/TR5Main/Objects/TR3/tr3_sophia.cpp index 4b599f55f..f210d2543 100644 --- a/TR5Main/Objects/TR3/tr3_sophia.cpp +++ b/TR5Main/Objects/TR3/tr3_sophia.cpp @@ -244,7 +244,7 @@ static void TriggerPlasmaBallFlame(short fx_number, long type, long xv, long yv, sptr->gravity = sptr->maxYvel = 0; } -static void TriggerPlasmaBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, short room_number, short angle) +static void TriggerPlasmaBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, short roomNumber, short angle) { FX_INFO* fx; PHD_VECTOR pos; @@ -258,7 +258,7 @@ static void TriggerPlasmaBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, shor angles[0] = angle + GetRandomControl() + 0x4000; angles[1] = 0x2000; - fx_number = CreateNewEffect(room_number); + fx_number = CreateNewEffect(roomNumber); if (fx_number != NO_ITEM) { fx = &Effects[fx_number]; @@ -420,7 +420,7 @@ void ControlLaserBolts(short item_number) ITEM_INFO* item; PHD_VECTOR oldpos; long g, b, rad; - short room_number, oldroom, hitlara; + short roomNumber, oldroom, hitlara; int speed; item = &Items[item_number]; @@ -447,11 +447,11 @@ void ControlLaserBolts(short item_number) } } - room_number = item->roomNumber; - floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room_number); + roomNumber = item->roomNumber; + floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber); - if (item->roomNumber != room_number) - ItemNewRoom(item_number, room_number); + if (item->roomNumber != roomNumber) + ItemNewRoom(item_number, roomNumber); if (!item->itemFlags[2]) { @@ -536,7 +536,7 @@ void ControlLondBossPlasmaBall(short fx_number) long speed; long rnd, r, g, b, old_y; byte radtab[2] = { 13,7 }; - short room_number; + short roomNumber; fx = &Effects[fx_number]; old_y = fx->pos.yPos; @@ -554,8 +554,8 @@ void ControlLondBossPlasmaBall(short fx_number) if ((Wibble & 15) == 0) TriggerPlasmaBallFlame(fx_number, 0, 0, abs(old_y - fx->pos.yPos) << 3, 0); - room_number = fx->roomNumber; - floor = GetFloor(fx->pos.xPos, fx->pos.yPos, fx->pos.zPos, &room_number); + roomNumber = fx->roomNumber; + floor = GetFloor(fx->pos.xPos, fx->pos.yPos, fx->pos.zPos, &roomNumber); if (fx->pos.yPos >= GetFloorHeight(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos) || fx->pos.yPos < GetCeiling(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos)) { @@ -563,7 +563,7 @@ void ControlLondBossPlasmaBall(short fx_number) return; } - if (Rooms[room_number].flags & ENV_FLAG_WATER) + if (Rooms[roomNumber].flags & ENV_FLAG_WATER) { KillEffect(fx_number); return; @@ -577,7 +577,7 @@ void ControlLondBossPlasmaBall(short fx_number) return; } - if (room_number != fx->roomNumber) + if (roomNumber != fx->roomNumber) EffectNewRoom(fx_number, LaraItem->roomNumber); rnd = GetRandomControl(); diff --git a/TR5Main/Objects/TR3/tr3_tony.cpp b/TR5Main/Objects/TR3/tr3_tony.cpp index f133d517d..546a2ae96 100644 --- a/TR5Main/Objects/TR3/tr3_tony.cpp +++ b/TR5Main/Objects/TR3/tr3_tony.cpp @@ -207,7 +207,7 @@ void TriggerFireBallFlame(short fxNumber, long type, long xv, long yv, long zv) } } -void TriggerFireBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, short room_number, short angle, long zdspeed) +void TriggerFireBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, short roomNumber, short angle, long zdspeed) { FX_INFO* fx; PHD_VECTOR pos; @@ -273,7 +273,7 @@ void TriggerFireBall(ITEM_INFO* item, long type, PHD_VECTOR* pos1, short room_nu fallspeed = -(GetRandomControl() & 31) - 32; } - fxNumber = CreateNewEffect(room_number); + fxNumber = CreateNewEffect(roomNumber); if (fxNumber != NO_ITEM) { fx = &Effects[fxNumber]; @@ -300,7 +300,7 @@ void TonyFireBallControl(short fxNumber) long old_x, old_y, old_z, x; long rnd, r, g, b; unsigned char radtab[7] = { 16,0,14,9,7,7,7 }; - short room_number; + short roomNumber; fx = &Effects[fxNumber]; @@ -341,8 +341,8 @@ void TonyFireBallControl(short fxNumber) TriggerFireBallFlame(fxNumber, fx->flag1, (old_x - fx->pos.xPos) << 3, (old_y - fx->pos.yPos) << 3, (old_z - fx->pos.zPos) << 3); } - room_number = fx->roomNumber; - floor = GetFloor(fx->pos.xPos, fx->pos.yPos, fx->pos.zPos, &room_number); + roomNumber = fx->roomNumber; + floor = GetFloor(fx->pos.xPos, fx->pos.yPos, fx->pos.zPos, &roomNumber); if (fx->pos.yPos >= GetFloorHeight(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos) || fx->pos.yPos < GetCeiling(floor, fx->pos.xPos, fx->pos.yPos, fx->pos.zPos)) { if (fx->flag1 == ROCKZAPPL || fx->flag1 == ROCKZAPPR || fx->flag1 == ZAPP || fx->flag1 == DROPPER) @@ -374,20 +374,20 @@ void TonyFireBallControl(short fxNumber) if (fx->flag1 == ROCKZAPPL || fx->flag1 == ROCKZAPPR) { - room_number = LaraItem->roomNumber; - floor = GetFloor(LaraItem->pos.xPos, LaraItem->pos.yPos, LaraItem->pos.zPos, &room_number); + roomNumber = LaraItem->roomNumber; + floor = GetFloor(LaraItem->pos.xPos, LaraItem->pos.yPos, LaraItem->pos.zPos, &roomNumber); pos.y = GetCeiling(floor, LaraItem->pos.xPos, LaraItem->pos.yPos, LaraItem->pos.zPos) + 256; pos.x = LaraItem->pos.xPos + (GetRandomControl() & 1023) - 512; pos.z = LaraItem->pos.zPos + (GetRandomControl() & 1023) - 512; - TriggerExplosionSparks(pos.x, pos.y, pos.z, 3, -2, 0, room_number); // -2 = Set off a dynamic light controller. - TriggerFireBall((ITEM_INFO*)NULL, DROPPER, &pos, room_number, 0, 0); + TriggerExplosionSparks(pos.x, pos.y, pos.z, 3, -2, 0, roomNumber); // -2 = Set off a dynamic light controller. + TriggerFireBall((ITEM_INFO*)NULL, DROPPER, &pos, roomNumber, 0, 0); } } KillEffect(fxNumber); return; } - if (Rooms[room_number].flags & ENV_FLAG_WATER) + if (Rooms[roomNumber].flags & ENV_FLAG_WATER) { KillEffect(fxNumber); return; @@ -403,7 +403,7 @@ void TonyFireBallControl(short fxNumber) } } - if (room_number != fx->roomNumber) + if (roomNumber != fx->roomNumber) EffectNewRoom(fxNumber, LaraItem->roomNumber); if (radtab[fx->flag1]) diff --git a/TR5Main/Objects/TR5/tr5_particle_enemies.cpp b/TR5Main/Objects/TR5/tr5_particle_enemies.cpp index 340b24153..6f966e241 100644 --- a/TR5Main/Objects/TR5/tr5_particle_enemies.cpp +++ b/TR5Main/Objects/TR5/tr5_particle_enemies.cpp @@ -515,13 +515,6 @@ void UpdateRats() else angle = (short)ATAN(dz, dx) - rat->pos.yRot; - if (i == 0) - { - printf("xRot: %d, yRot: %d, fallspeed: %d, speed: %d, angle: %d, flags: %d, dx: %d, dz: %d, Y: %d\n", - rat->pos.xRot, rat->pos.yRot, rat->fallspeed, rat->speed, angle, rat->flags, dx, dz, rat->pos.yPos); - } - - if (abs(dx) < 85 && abs(dy) < 85 && abs(dz) < 85) { LaraItem->hitPoints--; diff --git a/TR5Main/Objects/Vehicles/boat.cpp b/TR5Main/Objects/Vehicles/boat.cpp index 22c3588bb..33877c94b 100644 --- a/TR5Main/Objects/Vehicles/boat.cpp +++ b/TR5Main/Objects/Vehicles/boat.cpp @@ -68,7 +68,7 @@ void GetBoatGetOff(ITEM_INFO* boat) /* Wait for last frame of getoff anims before returning to normal Lara control */ if ((LaraItem->currentAnimState == BOAT_JUMPR || LaraItem->currentAnimState == BOAT_JUMPL) && LaraItem->frameNumber == Anims[LaraItem->animNumber].frameEnd) { - short room_number; + short roomNumber; int x, y, z; FLOOR_INFO* floor; @@ -86,17 +86,17 @@ void GetBoatGetOff(ITEM_INFO* boat) LaraItem->pos.xRot = LaraItem->pos.zRot = 0; g_LaraExtra.Vehicle = NO_ITEM; - room_number = LaraItem->roomNumber; + roomNumber = LaraItem->roomNumber; x = LaraItem->pos.xPos + (360 * SIN(LaraItem->pos.yRot) >> W2V_SHIFT); y = LaraItem->pos.yPos - 90; z = LaraItem->pos.zPos + (360 * COS(LaraItem->pos.yRot) >> W2V_SHIFT); - floor = GetFloor(x, y, z, &room_number); + floor = GetFloor(x, y, z, &roomNumber); if (GetFloorHeight(floor, x, y, z) >= y - STEP_SIZE) { LaraItem->pos.xPos = x; LaraItem->pos.zPos = z; - if (room_number != LaraItem->roomNumber) - ItemNewRoom(Lara.itemNumber, room_number); + if (roomNumber != LaraItem->roomNumber) + ItemNewRoom(Lara.itemNumber, roomNumber); } LaraItem->pos.yPos = y; @@ -110,7 +110,7 @@ int CanGetOff(int direction) { ITEM_INFO* v; FLOOR_INFO* floor; - short room_number, angle; + short roomNumber, angle; int x, y, z, height, ceiling; v = &Items[g_LaraExtra.Vehicle]; @@ -124,8 +124,8 @@ int CanGetOff(int direction) y = v->pos.yPos; z = v->pos.zPos + (GETOFF_DIST * COS(angle) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); height = GetFloorHeight(floor, x, y, z); if ((height - v->pos.yPos) < -(WALL_SIZE / 2)) @@ -207,7 +207,7 @@ int TestWaterHeight(ITEM_INFO* item, int z_off, int x_off, PHD_VECTOR* pos) Moves the vector in 'pos' to the required test position too */ FLOOR_INFO* floor; int s, c, height; - short room_number; + short roomNumber; /* Get y pos correctly, but don't bother changing z_off and x_off using x_rot and z_rot */ pos->y = item->pos.yPos - (z_off * SIN(item->pos.xRot) >> W2V_SHIFT) + @@ -220,12 +220,12 @@ int TestWaterHeight(ITEM_INFO* item, int z_off, int x_off, PHD_VECTOR* pos) pos->x = item->pos.xPos + ((z_off * s + x_off * c) >> W2V_SHIFT); /* Try to get water height; if none get ground height instead */ - room_number = item->roomNumber; - GetFloor(pos->x, pos->y, pos->z, &room_number); // get correct room (as GetWaterHeight doesn't) - height = GetWaterHeight(pos->x, pos->y, pos->z, room_number); + roomNumber = item->roomNumber; + GetFloor(pos->x, pos->y, pos->z, &roomNumber); // get correct room (as GetWaterHeight doesn't) + height = GetWaterHeight(pos->x, pos->y, pos->z, roomNumber); if (height == NO_HEIGHT) { - floor = GetFloor(pos->x, pos->y, pos->z, &room_number); + floor = GetFloor(pos->x, pos->y, pos->z, &roomNumber); height = GetFloorHeight(floor, pos->x, pos->y, pos->z); if (height == NO_HEIGHT) return height; @@ -322,14 +322,14 @@ short DoBoatShift(ITEM_INFO* skidoo, PHD_VECTOR* pos, PHD_VECTOR* old) else { /* A diagonal hit; means a barrage of tests needed to determine best shift */ - short room_number; + short roomNumber; FLOOR_INFO* floor; int height; x = z = 0; - room_number = skidoo->roomNumber; - floor = GetFloor(old->x, pos->y, pos->z, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(old->x, pos->y, pos->z, &roomNumber); height = GetFloorHeight(floor, old->x, pos->y, pos->z); if (height < old->y - STEP_SIZE) { @@ -339,8 +339,8 @@ short DoBoatShift(ITEM_INFO* skidoo, PHD_VECTOR* pos, PHD_VECTOR* old) z = WALL_SIZE - shift_z; } - room_number = skidoo->roomNumber; - floor = GetFloor(pos->x, pos->y, old->z, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(pos->x, pos->y, old->z, &roomNumber); height = GetFloorHeight(floor, pos->x, pos->y, old->z); if (height < old->y - STEP_SIZE) { @@ -454,7 +454,7 @@ int BoatDynamics(short itemNum) int hfr_old, hfl_old, hbr_old, hbl_old, hf_old; FLOOR_INFO* floor; int height, slip, collide; - short room_number, rot; + short roomNumber, rot; int newspeed; boat = &Items[itemNum]; @@ -541,9 +541,9 @@ int BoatDynamics(short itemNum) DoBoatShift(boat, &f, &f_old); } - room_number = boat->roomNumber; - floor = GetFloor(boat->pos.xPos, boat->pos.yPos, boat->pos.zPos, &room_number); - height = GetWaterHeight(boat->pos.xPos, boat->pos.yPos - 5, boat->pos.zPos, room_number); + roomNumber = boat->roomNumber; + floor = GetFloor(boat->pos.xPos, boat->pos.yPos, boat->pos.zPos, &roomNumber); + height = GetWaterHeight(boat->pos.xPos, boat->pos.yPos - 5, boat->pos.zPos, roomNumber); if (height == NO_HEIGHT) height = GetFloorHeight(floor, boat->pos.xPos, boat->pos.yPos - 5, boat->pos.zPos); diff --git a/TR5Main/Objects/Vehicles/kayak.cpp b/TR5Main/Objects/Vehicles/kayak.cpp index 1bad54257..593680526 100644 --- a/TR5Main/Objects/Vehicles/kayak.cpp +++ b/TR5Main/Objects/Vehicles/kayak.cpp @@ -66,7 +66,7 @@ void DoKayakRipple(ITEM_INFO* v, short xoff, short zoff) RIPPLE_STRUCT* r; int s, c, x, z; FLOOR_INFO* floor; - short room_number; + short roomNumber; c = COS(v->pos.yRot); s = SIN(v->pos.yRot); @@ -74,10 +74,10 @@ void DoKayakRipple(ITEM_INFO* v, short xoff, short zoff) x = v->pos.xPos + (((zoff * s) + (xoff * c)) >> W2V_SHIFT); z = v->pos.zPos + (((zoff * c) - (xoff * s)) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(x, v->pos.yPos, z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(x, v->pos.yPos, z, &roomNumber); - if (GetWaterHeight(x, v->pos.yPos, z, room_number) != NO_HEIGHT) + if (GetWaterHeight(x, v->pos.yPos, z, roomNumber) != NO_HEIGHT) { SetupRipple(x, v->pos.yPos, z, -2 - (GetRandomControl() & 1), 0); } @@ -164,7 +164,7 @@ int GetInKayak(short item_number, COLL_INFO* coll) int x, z; ITEM_INFO* kayak; FLOOR_INFO* floor; - short room_number; + short roomNumber; if (!(TrInput & IN_ACTION) || Lara.gunStatus != LG_NO_ARMS || LaraItem->gravityStatus) return 0; @@ -185,8 +185,8 @@ int GetInKayak(short item_number, COLL_INFO* coll) * SONY BUG FIX 10000001: If player stops in exactly right place and buries * skidoo in avalanche, then they can get on it and crash the game */ - room_number = kayak->roomNumber; - floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &room_number); + roomNumber = kayak->roomNumber; + floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &roomNumber); if (GetFloorHeight(floor, kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos) > -32000) { short ang; @@ -352,7 +352,7 @@ int TestKayakHeight(ITEM_INFO* item, int x, int z, PHD_VECTOR* pos) { int h; FLOOR_INFO* floor; - short room_number; + short roomNumber; phd_PushUnitMatrix(); MatrixPtr[M03] = item->pos.xPos; @@ -364,13 +364,13 @@ int TestKayakHeight(ITEM_INFO* item, int x, int z, PHD_VECTOR* pos) pos->y = (MatrixPtr[M13] >> W2V_SHIFT); pos->z = (MatrixPtr[M23] >> W2V_SHIFT); - room_number = item->roomNumber; - GetFloor(pos->x, pos->y, pos->z, &room_number); + roomNumber = item->roomNumber; + GetFloor(pos->x, pos->y, pos->z, &roomNumber); - if ((h = GetWaterHeight(pos->x, pos->y, pos->z, room_number)) == NO_HEIGHT) + if ((h = GetWaterHeight(pos->x, pos->y, pos->z, roomNumber)) == NO_HEIGHT) { - room_number = item->roomNumber; - floor = GetFloor(pos->x, pos->y, pos->z, &room_number); + roomNumber = item->roomNumber; + floor = GetFloor(pos->x, pos->y, pos->z, &roomNumber); if ((h = GetFloorHeight(floor, pos->x, pos->y, pos->z)) == NO_HEIGHT) return h; } @@ -398,7 +398,7 @@ int DoKayakShift(ITEM_INFO* v, PHD_VECTOR* pos, PHD_VECTOR* old) int shift_x, shift_z; int height; FLOOR_INFO* floor; - short room_number; + short roomNumber; x = pos->x >> WALL_SHIFT; z = pos->z >> WALL_SHIFT; @@ -455,8 +455,8 @@ int DoKayakShift(ITEM_INFO* v, PHD_VECTOR* pos, PHD_VECTOR* old) x = 0; z = 0; - room_number = v->roomNumber; - floor = GetFloor(old->x, pos->y, pos->z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(old->x, pos->y, pos->z, &roomNumber); height = GetFloorHeight(floor, old->x, pos->y, pos->z); if (height < old->y - STEP_SIZE) { @@ -466,8 +466,8 @@ int DoKayakShift(ITEM_INFO* v, PHD_VECTOR* pos, PHD_VECTOR* old) z = WALL_SIZE - shift_z; } - room_number = v->roomNumber; - floor = GetFloor(pos->x, pos->y, old->z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(pos->x, pos->y, old->z, &roomNumber); height = GetFloorHeight(floor, pos->x, pos->y, old->z); if (height < old->y - STEP_SIZE) { @@ -519,7 +519,7 @@ void KayakToBackground(ITEM_INFO* kayak, KAYAK_INFO* kinfo) PHD_VECTOR pos; int collide, oldx, oldz; FLOOR_INFO* floor; - short room_number; + short roomNumber; int height[8]; PHD_VECTOR oldpos[9]; int x, z; @@ -607,9 +607,9 @@ void KayakToBackground(ITEM_INFO* kayak, KAYAK_INFO* kinfo) /* -------- update the vehicle's actual position */ - room_number = kayak->roomNumber; - floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &room_number); - h = GetWaterHeight(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, room_number); + roomNumber = kayak->roomNumber; + floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &roomNumber); + h = GetWaterHeight(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, roomNumber); if (h == NO_HEIGHT) h = GetFloorHeight(floor, kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos); @@ -618,9 +618,9 @@ void KayakToBackground(ITEM_INFO* kayak, KAYAK_INFO* kinfo) DoKayakShift(kayak, (PHD_VECTOR*)&kayak->pos, &oldpos[8]); /* -------- if position is still invalid - find somewhere decent */ - room_number = kayak->roomNumber; - floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &room_number); - h = GetWaterHeight(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, room_number); + roomNumber = kayak->roomNumber; + floor = GetFloor(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, &roomNumber); + h = GetWaterHeight(kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos, roomNumber); if (h == NO_HEIGHT) h = GetFloorHeight(floor, kayak->pos.xPos, kayak->pos.yPos, kayak->pos.zPos); @@ -1255,7 +1255,7 @@ int KayakControl() ITEM_INFO* v, * l; FLOOR_INFO* floor; int ofs, water, lp; - short room_number; + short roomNumber; l = LaraItem; v = &Items[g_LaraExtra.Vehicle]; @@ -1270,12 +1270,12 @@ int KayakControl() KayakToBackground(v, Kayak); /* -------- determine water level */ - room_number = v->roomNumber; - floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber); h = GetFloorHeight(floor, v->pos.xPos, v->pos.yPos, v->pos.zPos); TestTriggers(TriggerIndex, 0, 0); - Kayak->Water = water = GetWaterHeight(v->pos.xPos, v->pos.yPos, v->pos.zPos, room_number); + Kayak->Water = water = GetWaterHeight(v->pos.xPos, v->pos.yPos, v->pos.zPos, roomNumber); if (water == NO_HEIGHT) { Kayak->Water = water = h; @@ -1300,10 +1300,10 @@ int KayakControl() /* -------- move Lara to Kayak pos */ if (g_LaraExtra.Vehicle != NO_ITEM) { - if (v->roomNumber != room_number) + if (v->roomNumber != roomNumber) { - ItemNewRoom(g_LaraExtra.Vehicle, room_number); - ItemNewRoom(Lara.itemNumber, room_number); + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); + ItemNewRoom(Lara.itemNumber, roomNumber); } l->pos.xPos = v->pos.xPos; diff --git a/TR5Main/Objects/Vehicles/minecart.cpp b/TR5Main/Objects/Vehicles/minecart.cpp index d1a44c800..a1a18194f 100644 --- a/TR5Main/Objects/Vehicles/minecart.cpp +++ b/TR5Main/Objects/Vehicles/minecart.cpp @@ -71,7 +71,7 @@ static int TestHeight(ITEM_INFO* v, int x, int z) PHD_VECTOR pos; FLOOR_INFO* floor; int s, c; - short room_number; + short roomNumber; c = COS(v->pos.yRot); s = SIN(v->pos.yRot); @@ -80,8 +80,8 @@ static int TestHeight(ITEM_INFO* v, int x, int z) pos.y = v->pos.yPos - (z * SIN(v->pos.xRot) >> W2V_SHIFT) + (x * SIN(v->pos.zRot) >> W2V_SHIFT); pos.z = v->pos.zPos + (((z * c) - (x * s)) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(pos.x, pos.y, pos.z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(pos.x, pos.y, pos.z, &roomNumber); return GetFloorHeight(floor, pos.x, pos.y, pos.z); } @@ -89,14 +89,14 @@ static short GetCollision(ITEM_INFO* v, short ang, int dist, short* ceiling) { FLOOR_INFO* floor; int x, y, z, height, cheight; - short room_number; + short roomNumber; x = v->pos.xPos + ((SIN(ang) * dist) >> W2V_SHIFT); y = v->pos.yPos - LARA_HITE; z = v->pos.zPos + ((COS(ang) * dist) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); height = GetFloorHeight(floor, x, y, z); cheight = GetCeiling(floor, x, y, z); @@ -113,7 +113,7 @@ static bool GetInMineCart(ITEM_INFO* v, ITEM_INFO* l, COLL_INFO* coll) int dist; int x, z; FLOOR_INFO* floor; - short room_number; + short roomNumber; if (!(TrInput & IN_ACTION) || Lara.gunStatus != LG_NO_ARMS || l->gravityStatus) return 0; @@ -133,8 +133,8 @@ static bool GetInMineCart(ITEM_INFO* v, ITEM_INFO* l, COLL_INFO* coll) if (dist > SQUARE(WALL_SIZE/2)) return false; - room_number = v->roomNumber; - floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber); if (GetFloorHeight(floor, v->pos.xPos, v->pos.yPos, v->pos.zPos) < -32000) return false; @@ -145,7 +145,7 @@ static bool CanGetOut(int direction) { ITEM_INFO* v; FLOOR_INFO* floor; - short room_number, angle; + short roomNumber, angle; int x, y, z, height, ceiling; v = &Items[g_LaraExtra.Vehicle]; @@ -160,8 +160,8 @@ static bool CanGetOut(int direction) y = v->pos.yPos; z = v->pos.zPos - (GETOFF_DIST * COS(angle) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); height = GetFloorHeight(floor, x, y, z); if ((HeightType == BIG_SLOPE) || (HeightType == DIAGONAL) || (height == NO_HEIGHT)) @@ -220,7 +220,7 @@ static void CartToBaddieCollision(ITEM_INFO* v) if ((item->frameNumber == Anims[item->animNumber].frameBase) && (LaraItem->currentAnimState == CART_USE) && (LaraItem->animNumber == Objects[ID_MINECART_LARA_ANIMS].animIndex + 6)) { FLOOR_INFO* floor; - short frame, room_number; + short frame, roomNumber; frame = LaraItem->frameNumber - Anims[LaraItem->animNumber].frameBase; @@ -228,8 +228,8 @@ static void CartToBaddieCollision(ITEM_INFO* v) { SoundEffect(220, &item->pos, 2); - room_number = item->roomNumber; - floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &room_number); + roomNumber = item->roomNumber; + floor = GetFloor(item->pos.xPos, item->pos.yPos, item->pos.zPos, &roomNumber); TestTriggers(TriggerIndex, TRUE, 0); // heavytrigger enabled item->frameNumber++; @@ -874,7 +874,7 @@ int MineCartControl() CART_INFO* cart; ITEM_INFO* v; FLOOR_INFO* floor; - short room_number; + short roomNumber; v = &Items[g_LaraExtra.Vehicle]; if (v->data == NULL) { printf("v->data is nullptr !"); return 0; } @@ -896,13 +896,13 @@ int MineCartControl() LaraItem->pos.zRot = v->pos.zRot; } - room_number = v->roomNumber; - floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber); - if (room_number != v->roomNumber) + if (roomNumber != v->roomNumber) { - ItemNewRoom(g_LaraExtra.Vehicle, room_number); - ItemNewRoom(Lara.itemNumber, room_number); + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); + ItemNewRoom(Lara.itemNumber, roomNumber); } TestTriggers(TriggerIndex, FALSE, 0); diff --git a/TR5Main/Objects/Vehicles/snowmobile.cpp b/TR5Main/Objects/Vehicles/snowmobile.cpp index 82419c8b2..e3e11831c 100644 --- a/TR5Main/Objects/Vehicles/snowmobile.cpp +++ b/TR5Main/Objects/Vehicles/snowmobile.cpp @@ -203,7 +203,7 @@ int SkidooCheckGetOffOK(int direction) { /* Check if getting off skidoo here is possible in the direction required by player */ int x, y, z, height, ceiling; - short room_number, angle; + short roomNumber, angle; ITEM_INFO* skidoo; FLOOR_INFO* floor; @@ -218,8 +218,8 @@ int SkidooCheckGetOffOK(int direction) y = skidoo->pos.yPos; z = skidoo->pos.zPos - (SKIDOO_GETOFF_DIST * COS(angle) >> W2V_SHIFT); - room_number = skidoo->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); height = GetFloorHeight(floor, x, y, z); @@ -329,7 +329,7 @@ void DoSnowEffect(ITEM_INFO* skidoo) else fx->fallspeed = 0; //*(phd_mxptr + M23) = 0; // no depthQ - //S_CalculateLight(fx->pos.x_pos, fx->pos.y_pos, fx->pos.z_pos, fx->room_number); + //S_CalculateLight(fx->pos.x_pos, fx->pos.y_pos, fx->pos.z_pos, fx->roomNumber); //fx->shade = ls_adder - 0x200; //if (fx->shade < 0) // fx->shade = 0; @@ -585,7 +585,7 @@ int DoSkidooDynamics(int height, int fallspeed, int* y) int SkidooCheckGetOn(short itemNum, COLL_INFO* coll) { int geton; - short rot, room_number; + short rot, roomNumber; ITEM_INFO* skidoo; FLOOR_INFO* floor; @@ -609,8 +609,8 @@ int SkidooCheckGetOn(short itemNum, COLL_INFO* coll) if (!TestCollision(skidoo, LaraItem)) return 0; - room_number = skidoo->roomNumber; - floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &roomNumber); if (GetFloorHeight(floor, skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos) < -32000) return 0; @@ -739,14 +739,14 @@ short DoSkidooShift(ITEM_INFO* skidoo, PHD_VECTOR* pos, PHD_VECTOR* old) else { /* A diagonal hit; means a barrage of tests needed to determine best shift */ - short room_number; + short roomNumber; FLOOR_INFO* floor; int height; x = z = 0; - room_number = skidoo->roomNumber; - floor = GetFloor(old->x, pos->y, pos->z, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(old->x, pos->y, pos->z, &roomNumber); height = GetFloorHeight(floor, old->x, pos->y, pos->z); if (height < old->y - STEP_SIZE) { @@ -756,8 +756,8 @@ short DoSkidooShift(ITEM_INFO* skidoo, PHD_VECTOR* pos, PHD_VECTOR* old) z = WALL_SIZE - shift_z; } - room_number = skidoo->roomNumber; - floor = GetFloor(pos->x, pos->y, old->z, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(pos->x, pos->y, old->z, &roomNumber); height = GetFloorHeight(floor, pos->x, pos->y, old->z); if (height < old->y - STEP_SIZE) { @@ -814,7 +814,7 @@ int SkidooDynamics(ITEM_INFO* skidoo) int hfr_old, hfl_old, hbr_old, hbl_old; FLOOR_INFO* floor; int height, slip, collide; - short room_number, rot; + short roomNumber, rot; int newspeed; skinfo = (SKIDOO_INFO*)skidoo->data; @@ -922,8 +922,8 @@ int SkidooDynamics(ITEM_INFO* skidoo) if (hfr < fr_old.y - STEP_SIZE) rot += DoSkidooShift(skidoo, &fr, &fr_old); - room_number = skidoo->roomNumber; - floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &roomNumber); height = GetFloorHeight(floor, skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos); if (height < skidoo->pos.yPos - STEP_SIZE) DoSkidooShift(skidoo, (PHD_VECTOR*)&skidoo->pos, &old); @@ -964,7 +964,7 @@ int SkidooControl() int hfl, hfr; FLOOR_INFO* floor; int height, collide, drive; - short room_number, x_rot, z_rot, bandit_skidoo; + short roomNumber, x_rot, z_rot, bandit_skidoo; int pitch, dead = 0; skidoo = &Items[g_LaraExtra.Vehicle]; @@ -976,8 +976,8 @@ int SkidooControl() hfl = TestSkidooHeight(skidoo, SKIDOO_FRONT, -SKIDOO_SIDE, &fl); hfr = TestSkidooHeight(skidoo, SKIDOO_FRONT, SKIDOO_SIDE, &fr); - room_number = skidoo->roomNumber; - floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &room_number); + roomNumber = skidoo->roomNumber; + floor = GetFloor(skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos, &roomNumber); height = GetFloorHeight(floor, skidoo->pos.xPos, skidoo->pos.yPos, skidoo->pos.zPos); TestTriggers(TriggerIndex, 0, 0); @@ -1059,10 +1059,10 @@ int SkidooControl() if (skidoo->flags & ONESHOT) { /* This is a falling skidoo - Lara is elsewhere */ - if (room_number != skidoo->roomNumber) + if (roomNumber != skidoo->roomNumber) { - ItemNewRoom(g_LaraExtra.Vehicle, room_number); - ItemNewRoom(Lara.itemNumber, room_number); + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); + ItemNewRoom(Lara.itemNumber, roomNumber); } AnimateItem(LaraItem); @@ -1075,10 +1075,10 @@ int SkidooControl() SkidooAnimation(skidoo, collide, dead); - if (room_number != skidoo->roomNumber) + if (roomNumber != skidoo->roomNumber) { - ItemNewRoom(g_LaraExtra.Vehicle, room_number); - ItemNewRoom(Lara.itemNumber, room_number); + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); + ItemNewRoom(Lara.itemNumber, roomNumber); } /* Move Lara to the skidoo position */ diff --git a/TR5Main/Objects/Vehicles/upv.cpp b/TR5Main/Objects/Vehicles/upv.cpp index 07734fcd0..579e2a276 100644 --- a/TR5Main/Objects/Vehicles/upv.cpp +++ b/TR5Main/Objects/Vehicles/upv.cpp @@ -215,14 +215,14 @@ void SubEffects(short item_number) if ((GetRandomControl() & 1) == 0) { PHD_3DPOS pos3d; - short room_number; + short roomNumber; pos3d.xPos = pos.x + (GetRandomControl() & 63) - 32; pos3d.yPos = pos.y + SUB_DRAW_SHIFT; pos3d.zPos = pos.z + (GetRandomControl() & 63) - 32; - room_number = v->roomNumber; - GetFloor(pos3d.xPos, pos3d.yPos, pos3d.zPos, &room_number); - CreateBubble((PHD_VECTOR*)&pos3d, room_number, 4, 8, 0, 0, 0, 0); // CHECK + roomNumber = v->roomNumber; + GetFloor(pos3d.xPos, pos3d.yPos, pos3d.zPos, &roomNumber); + CreateBubble((PHD_VECTOR*)&pos3d, roomNumber, 4, 8, 0, 0, 0, 0); // CHECK } } } @@ -269,7 +269,7 @@ void SubEffects(short item_number) static int CanGetOff(ITEM_INFO* v) { FLOOR_INFO* floor; - short room_number; + short roomNumber; int x, y, z, height, ceiling, speed; short yangle; @@ -282,8 +282,8 @@ static int CanGetOff(ITEM_INFO* v) z = v->pos.zPos + (speed * COS(yangle) >> W2V_SHIFT); y = v->pos.yPos - ((GETOFF_DIST * SIN(-v->pos.xRot)) >> W2V_SHIFT); - room_number = v->roomNumber; - floor = GetFloor(x, y, z, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(x, y, z, &roomNumber); height = GetFloorHeight(floor, x, y, z); if (height == NO_HEIGHT || y > height) @@ -303,7 +303,7 @@ int GetOnSub(short item_number, COLL_INFO* coll) int x, y, z; ITEM_INFO* v, * l; FLOOR_INFO* floor; - short room_number, ang; + short roomNumber, ang; unsigned short tempang; l = LaraItem; @@ -323,8 +323,8 @@ int GetOnSub(short item_number, COLL_INFO* coll) if (dist > SQUARE(512)) return 0; - room_number = v->roomNumber; - floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber); if (GetFloorHeight(floor, v->pos.xPos, v->pos.yPos, v->pos.zPos) < -32000) return 0; @@ -841,7 +841,7 @@ int SubControl() SUB_INFO* sub; ITEM_INFO* v, * l; FLOOR_INFO* floor; - short room_number; + short roomNumber; l = LaraItem; v = &Items[g_LaraExtra.Vehicle]; @@ -869,13 +869,13 @@ int SubControl() } /* -------- determine if vehicle is near the surface */ - room_number = v->roomNumber; - floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &room_number); + roomNumber = v->roomNumber; + floor = GetFloor(v->pos.xPos, v->pos.yPos, v->pos.zPos, &roomNumber); v->floor = GetFloorHeight(floor, v->pos.xPos, v->pos.yPos, v->pos.zPos); if ((sub->Flags & UPV_CONTROL) && (!(sub->Flags & UPV_DEAD))) { - h = GetWaterHeight(v->pos.xPos, v->pos.yPos, v->pos.zPos, room_number); + h = GetWaterHeight(v->pos.xPos, v->pos.yPos, v->pos.zPos, roomNumber); if ((h != NO_HEIGHT) && (!(Rooms[v->roomNumber].flags & ENV_FLAG_WATER))) { @@ -947,10 +947,10 @@ int SubControl() sub->WeaponTimer = HARPOON_RELOAD; } - if (room_number != v->roomNumber) + if (roomNumber != v->roomNumber) { - ItemNewRoom(g_LaraExtra.Vehicle, room_number); - ItemNewRoom(Lara.itemNumber, room_number); + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); + ItemNewRoom(Lara.itemNumber, roomNumber); } l->pos.xPos = v->pos.xPos; @@ -980,8 +980,8 @@ int SubControl() { AnimateItem(l); - if (room_number != v->roomNumber) - ItemNewRoom(g_LaraExtra.Vehicle, room_number); + if (roomNumber != v->roomNumber) + ItemNewRoom(g_LaraExtra.Vehicle, roomNumber); BackgroundCollision(v, l, sub); diff --git a/TR5Main/Scripting/GameLogicScript.h b/TR5Main/Scripting/GameLogicScript.h index 23017112c..1ce1ffd84 100644 --- a/TR5Main/Scripting/GameLogicScript.h +++ b/TR5Main/Scripting/GameLogicScript.h @@ -25,7 +25,7 @@ using namespace std; #define ITEM_PARAM_GRAVITY_STATUS 7 #define ITEM_PARAM_COLLIDABLE 8 #define ITEM_PARAM_POISONED 9 -#define ITEM_PARAM_ROOM_NUMBER 10 +#define ITEM_PARAM_roomNumber 10 #define LUA_VARIABLE_TYPE_INT 0 #define LUA_VARIABLE_TYPE_BOOL 1 @@ -78,7 +78,7 @@ typedef struct GameScriptItem { return NativeItem->collidable; case ITEM_PARAM_POISONED: return NativeItem->poisoned; - case ITEM_PARAM_ROOM_NUMBER: + case ITEM_PARAM_roomNumber: return NativeItem->roomNumber; default: return 0; @@ -114,7 +114,7 @@ typedef struct GameScriptItem { NativeItem->collidable = value; break; case ITEM_PARAM_POISONED: NativeItem->poisoned = value; break; - case ITEM_PARAM_ROOM_NUMBER: + case ITEM_PARAM_roomNumber: NativeItem->roomNumber = value; break; default: break; diff --git a/TR5Main/Scripting/Scripts/Constants.lua b/TR5Main/Scripting/Scripts/Constants.lua index 76026dd07..e2a45999c 100644 --- a/TR5Main/Scripting/Scripts/Constants.lua +++ b/TR5Main/Scripting/Scripts/Constants.lua @@ -105,4 +105,4 @@ ITEM_HIT_STATUS = 6 ITEM_GRAVITY_STATUS = 7 ITEM_COLLIDABLE = 8 ITEM_POISONED = 9 -ITEM_ROOM_NUMBER = 10 \ No newline at end of file +ITEM_roomNumber = 10