mirror of
https://github.com/TombEngine/TombEngine.git
synced 2025-05-10 20:46:47 +03:00
Merge branch 'master' of https://github.com/MontyTRC89/TR5Main
This commit is contained in:
commit
dd5ca3cc32
20 changed files with 937 additions and 192 deletions
|
@ -1,15 +1,38 @@
|
|||
#include "camera.h"
|
||||
#include "Camera.h"
|
||||
#include <d3d9.h>
|
||||
#include <d3dx9.h>
|
||||
#include <stdio.h>
|
||||
#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);
|
||||
}
|
|
@ -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();
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
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);
|
|
@ -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);
|
||||
}*/
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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])
|
||||
|
|
|
@ -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--;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -105,4 +105,4 @@ ITEM_HIT_STATUS = 6
|
|||
ITEM_GRAVITY_STATUS = 7
|
||||
ITEM_COLLIDABLE = 8
|
||||
ITEM_POISONED = 9
|
||||
ITEM_ROOM_NUMBER = 10
|
||||
ITEM_roomNumber = 10
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue