TombEngine/TR5Main/Objects/newobjects.h

433 lines
13 KiB
C
Raw Normal View History

#pragma once
#include "../Global/global.h"
typedef struct QUAD_INFO {
int velocity;
short frontRot;
short rearRot;
int revs;
int engineRevs;
short trackMesh;
int skidooTurn;
int leftFallspeed;
int rightFallspeed;
short momentumAngle;
short extraRotation;
int pitch;
char flags;
};
typedef struct JEEP_INFO {
short rot1;
short rot2;
short rot3;
short rot4;
int velocity;
int revs;
short engineRevs;
short trackMesh;
int jeepTurn;
int fallSpeed;
short momentumAngle;
short extraRotation;
short unknown0;
int pitch;
short flags;
short unknown1;
short unknown2;
};
typedef struct SUB_INFO {
int Vel;
int Rot;
int RotX;
short FanRot;
char Flags;
char WeaponTimer;
};
typedef struct CART_INFO {
int Speed;
int MidPos;
int FrontPos;
int TurnX;
int TurnZ;
short TurnLen;
short TurnRot;
short YVel;
short Gradient;
char Flags;
char StopDelay;
};
typedef struct FISH_INFO
{
short x;
short y;
short z;
int angle;
short destY;
short angAdd;
byte speed;
byte acc;
byte swim;
};
typedef struct FISH_LEADER_INFO
{
short angle;
byte speed;
byte on;
short angleTime;
short speedTime;
short xRange, yRange, zRange;
};
typedef struct BOAT_INFO
{
int boat_turn;
int left_fallspeed;
int right_fallspeed;
int water;
int pitch;
short tilt_angle;
short extra_rotation;
short prop_rot;
};
typedef struct SKIDOO_INFO
{
short track_mesh;
int skidoo_turn;
int left_fallspeed, right_fallspeed;
short momentum_angle, extra_rotation;
int pitch;
bool already_cd_played;
bool armed;
int flash_timer;
};
typedef struct KAYAK_INFO {
int Vel;
int Rot;
int FallSpeedF;
int FallSpeedL;
int FallSpeedR;
int Water;
PHD_3DPOS OldPos;
char Turn;
char Forward;
char TrueWater;
char Flags;
};
typedef struct BOSS_STRUCT
{
short attack_count;
short death_count;
byte attack_flag;
byte attack_type;
byte attack_head_count;
byte ring_count;
short explode_count;
short lizman_item, lizman_room;
short hp_counter;
short dropped_icon;
byte charged;
byte dead;
PHD_VECTOR BeamTarget;
};
typedef struct SHIELD_POINTS
{
short x;
short y;
short z;
byte rsub;
byte gsub;
byte bsub;
byte pad[3];
long rgb;
};
typedef struct EXPLOSION_VERTS
{
short x;
short z;
long rgb;
};
typedef struct EXPLOSION_RING
{
short on;
short life; // 0 - 32.
short speed;
short radius; // Width is 1/4 of radius.
short xrot;
short zrot;
int x;
int y;
int z;
EXPLOSION_VERTS verts[16];
};
void ClampRotation(PHD_3DPOS *pos, short angle, short rot);
// TR1 objects
void InitialiseWolf(short itemNum);
void WolfControl(short itemNum);
void BearControl(short itemNum);
void Tr1RaptorControl(short itemNum);
void Tr1LarsonControl(short itemNum);
void Tr1PierreControl(short itemNum);
void ApeControl(short itemNum);
void InitialiseEvilLara(short itemNum);
void LaraEvilControl(short itemNum);
void DrawEvilLara(ITEM_INFO* item);
void NatlaControl(short itemNum);
void NatlaEvilControl(short itemNum);
// TR2 objects
void BarracudaControl(short itemNum);
void SharkControl(short itemNum);
void InitialiseSpinningBlade(short itemNum);
void SpinningBlade(short itemNum);
void InitialiseKillerStatue(short itemNum);
void KillerStatueControl(short itemNum);
void SpringBoardControl(short itemNum);
void RatControl(short itemNum);
void SilencerControl(short itemNum);
void InitialiseYeti(short itemNum);
void YetiControl(short itemNum);
void WorkerShotgunControl(short itemNum);
void InitialiseWorkerShotgun(short itemNum);
void WorkerMachineGunControl(short itemNum);
void InitialiseWorkerMachineGun(short itemNum);
void SmallSpiderControl(short itemNum);
void BigSpiderControl(short itemNum);
void WorkerDualGunControl(short itemNum);
void BirdMonsterControl(short itemNum);
void WorkerFlamethrower(short itemNum);
void InitialiseWorkerFlamethrower(short itemNum);
void KnifethrowerControl(short itemNum);
void KnifeControl(short fxNum);
void MercenaryUziControl(short itemNum);
void MercenaryAutoPistolControl(short itemNum);
void MonkControl(short itemNum);
void DrawStatue(ITEM_INFO* item); // compatible with all statue :)
void InitialiseSwordGuardian(short itemNum);
void SwordGuardianFly(ITEM_INFO* item); // only effect to fly
void SwordGuardianControl(short itemNum);
void InitialiseSpearGuardian(short itemNum);
void SpearGuardianControl(short itemNum);
void DragonCollision(short itemNum, ITEM_INFO* laraitem, COLL_INFO* coll);
void DragonControl(short backNum);
void InitialiseBartoli(short itemNum);
void BartoliControl(short itemNum);
void InitialiseSkidman(short itemNum);
void SkidManCollision(short itemNum, ITEM_INFO* laraitem, COLL_INFO* coll);
void SkidManControl(short riderNum);
// TR3 objects
void TigerControl(short itemNum);
void InitialiseCobra(short itemNum);
void CobraControl(short itemNum);
void Tr3RaptorControl(short itemNum);
void ShootHarpoon(ITEM_INFO* frogman, int x, int y, int z, short speed, short yRot, short roomNumber);
void HarpoonControl(short itemNum);
void ScubaControl(short itemNumber);
void InitialiseEagle(short itemNum);
void EagleControl(short itemNum);
void TribemanAxeControl(short itemNum);
void TribesmanShotDart(ITEM_INFO* item);
void TribesmanDartsControl(short itemNum);
void ControlSpikyWall(short itemNum);
void LaraTyrannosaurDeath(ITEM_INFO* item);
void TyrannosaurControl(short itemNum);
void TriggerFlamethrowerFlame(int x, int y, int z, int xv, int yv, int zv, int fxnum);
void TriggerPilotFlame(int itemnum);
short TriggerFlameThrower(ITEM_INFO* item, BITE_INFO* bite, short speed);
void FlameThrowerControl(short itemNumber);
void ControlSpikyCeiling(short itemNumber);
void InitialiseMonkey(short itemNumber);
void MonkeyControl(short itemNumber);
void MPGunControl(short itemNumber);
void InitialiseMPStick(short itemNumber);
void MPStickControl(short itemNumber);
void SetupShoal(int shoalNumber);
void SetupFish(int leader, ITEM_INFO* item);
void ControlFish(short itemNumber);
bool FishNearLara(PHD_3DPOS* pos, int distance, ITEM_INFO* item);
void InitialiseTony(short itemNum);
void TonyControl(short itemNum);
void DrawTony(ITEM_INFO* item);
void TonyFireBallControl(short fxNumber);
void InitialiseShiva(short itemNum);
void ShivaControl(short itemNum);
void ControlLaserBolts(short item_number);
void ControlLondBossPlasmaBall(short fx_number);
void InitialiseLondonBoss(short item_number);
void LondonBossControl(short item_number);
void S_DrawLondonBoss(ITEM_INFO* item);
// TR4 object
void InitialiseWildBoar(short itemNum);
void WildBoarControl(short itemNum);
void InitialiseSmallScorpion(short itemNum);
void SmallScorpionControl(short itemNum);
void InitialiseBat(short itemNum);
void BatControl(short itemNum);
void InitialiseBaddy(short itemNum);
void BaddyControl(short itemNum);
void InitialiseSas(short itemNum);
void SasControl(short itemNum);
void InitialiseMummy(short itemNum);
void MummyControl(short itemNum);
void InitialiseSkeleton(short itemNum);
void SkeletonControl(short itemNum);
void WakeUpSkeleton(ITEM_INFO* item);
void FourBladesControl(short itemNum);
void BirdBladeControl(short itemNum);
void CatwalkBlaldeControl(short itemNum);
void PlinthBladeControl(short itemNum);
void InitialiseSethBlade(short itemNum);
void SethBladeControl(short itemNum);
void ChainControl(short itemNum);
void PloughControl(short itemNum);
void CogControl(short itemNum);
void SpikeballControl(short itemNum);
void InitialiseKnightTemplar(short itemNum);
void KnightTemplarControl(short itemNum);
void StargateControl(short itemNum);
void StargateCollision(short itemNum, ITEM_INFO* item, COLL_INFO* coll);
void InitialiseSlicerDicer(short itemNum);
void SlicerDicerControl(short itemNum);
void BladeCollision(short itemNum, ITEM_INFO* item, COLL_INFO* coll);
void SarcophagusCollision(short itemNum, ITEM_INFO* item, COLL_INFO* coll);
void InitialiseScorpion(short itemNum);
void ScorpionControl(short itemNum);
void InitialiseLaraDouble(short itemNum);
void LaraDoubleControl(short itemNum);
void InitialiseDemigod(short itemNum);
void DemigodControl(short itemNum);
void DemigodThrowEnergyAttack(PHD_3DPOS* pos, short roomNumber, int something);
void DemigodEnergyAttack(short itemNum);
void DemigodHammerAttack(int x, int y, int z, int something);
void InitialiseMine(short itemNum);
void MineControl(short itemNum);
void MineCollision(short itemNum, ITEM_INFO* item, COLL_INFO* coll);
void InitialiseSentryGun(short itemNum);
void SentryGunControl(short itemNum);
void SentryGunThrowFire(ITEM_INFO* item);
void InitialiseJeanYves(short itemNum);
void JeanYvesControl(short itemNum);
void ScalesControl(short itemNum);
void ScalesCollision(short itemNum, ITEM_INFO* item, COLL_INFO* coll);
int RespawnAhmet(short itemNum);
void InitialiseLittleBeetle(short itemNum);
void LittleBeetleControl(short itemNum);
void InitialiseTroops(short itemNum);
void TroopsControl(short itemNum);
void InitialiseHarpy(short itemNum);
void HarpyControl(short itemNum);
void HarpyBubbles(PHD_3DPOS* pos, short roomNumber, int count);
void HarpyAttack(ITEM_INFO* item, short itemNum);
void HarpySparks1(short itemNum, byte num, int size);
void HarpySparks2(int x, int y, int z, int xv, int yv, int zv);
void InitialiseGuide(short itemNum);
void GuideControl(short itemNum);
void InitialiseCrocodile(short itemNum);
void CrocodileControl(short itemNum);
void InitialiseSphinx(short itemNum);
void SphinxControl(short itemNum);
void InitialiseBurningFloor(short itemNum);
void BurningFloorControl(short itemNum);
void InitialiseHorse(short itemNum);
void InitialiseHorseman(short itemNum);
void HorsemanControl(short itemNum);
void HorsemanSparks(PHD_3DPOS* pos, int param1, int num);
void BubblesControl(short fxNum);
int BubblesShatterFunction(FX_INFO* fx, int param1, int param2);
void BubblesEffect1(short fxNum, short xVel, short yVel, short zVel);
void BubblesEffect2(short fxNum, short xVel, short yVel, short zVel);
void BubblesEffect3(short fxNum, short xVel, short yVel, short zVel);
void BubblesEffect4(short fxNum, short xVel, short yVel, short zVel);
2019-11-22 13:25:13 +01:00
/* Vehicles: */
// TODO: the boat is bugged, need to be fixed !
void InitialiseBoat(short itemNum);
void BoatCollision(short itemNum, ITEM_INFO* litem, COLL_INFO* coll);
void BoatControl(short itemNumber);
2019-11-22 13:25:13 +01:00
void InitialiseSkidoo(short itemNum);
void SkidooCollision(short itemNum, ITEM_INFO* litem, COLL_INFO* coll);
int SkidooControl();
void DrawSkidoo(ITEM_INFO* item);
void DoSnowEffect(ITEM_INFO* skidoo);
2019-11-22 13:25:13 +01:00
void QuadbikeExplode(ITEM_INFO* item);
int CanQuadbikeGetOff(int direction);
int QuadCheckGetOff();
int GetOnQuadBike(short itemNumber, COLL_INFO* coll);
void QuadBaddieCollision(ITEM_INFO* quad);
int GetQuadCollisionAnim(ITEM_INFO* item, PHD_VECTOR* p);
int TestQuadHeight(ITEM_INFO* item, int dz, int dx, PHD_VECTOR* pos);
int DoQuadShift(ITEM_INFO* quad, PHD_VECTOR* pos, PHD_VECTOR* old);
int DoQuadDynamics(int height, int fallspeed, int* y);
int QuadDynamics(ITEM_INFO* item);
void AnimateQuadBike(ITEM_INFO* item, int collide, int dead);
int QuadUserControl(ITEM_INFO* item, int height, int* pitch);
void TriggerQuadExhaustSmoke(int x, int y, int z, short angle, int speed, int moving);
void InitialiseQuadBike(short itemNumber);
void QuadBikeCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
int QuadBikeControl();
2019-11-22 13:25:13 +01:00
// TODO: the kayak is bugged, need to be fixed !
void InitialiseKayak(short item_number);
void DrawKayak(ITEM_INFO* kayak);
void KayakCollision(short item_number, ITEM_INFO* l, COLL_INFO* coll);
int KayakControl();
/// Underwater Propeller
void SubInitialise(short itemNum);
void SubCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
int SubControl();
void InitialiseMineCart(short itemNum);
void MineCartCollision(short itemNum, ITEM_INFO* l, COLL_INFO* coll);
int MineCartControl();
int TestJeepHeight(ITEM_INFO* item, int dz, int dx, PHD_VECTOR* pos);
int DoJeepShift(ITEM_INFO* jeep, PHD_VECTOR* pos, PHD_VECTOR* old);
int DoJeepDynamics(int height, int speed, int* y, int flags);
int JeepCanGetOff();
void TriggerJeepExhaustSmoke(int x, int y, int z, short angle, short speed, int moving);
int JeepCheckGetOff();
int GetOnJeep(int itemNumber);
int GetJeepCollisionAnim(ITEM_INFO* item, PHD_VECTOR* p);
void JeepBaddieCollision(ITEM_INFO* jeep);
void JeepExplode(ITEM_INFO* item);
int JeepDynamics(ITEM_INFO* item);
int JeepUserControl(ITEM_INFO* item, int height, int* pitch);
void AnimateJeep(ITEM_INFO* item, int collide, int dead);
void InitialiseJeep(short itemNum);
int JeepControl();
void JeepCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
void InitialiseMotorbike(short itemNum);
int MotorbikeControl();
int MotorbikeCheckGetOff();
int MotorbikeDynamics(ITEM_INFO* item);
int MotorbikeUserControl(ITEM_INFO* item, int height, int* pitch);
void AnimateMotorbike(ITEM_INFO* item, int collide, int dead);
void MotorbikeExplode(ITEM_INFO* item);
int MotorbikeCanGetOff();
int DoMotorbikeDynamics(int height, int speed, int* y, int flags);
void TriggerMotorbikeExhaustSmoke(int x, int y, int z, short angle, short speed, int moving);
int GetOnMotorbike(int itemNumber);
void MotorbikeCollision(short itemNumber, ITEM_INFO* l, COLL_INFO* coll);
int GetOnMotorbike(int itemNumber);
int GetMotorbikeCollisionAnim(ITEM_INFO* item, PHD_VECTOR* p);
void MotorbikeBaddieCollision(ITEM_INFO* bike);