TombEngine/TR5Main/Game/tomb4fx.h

262 lines
5.6 KiB
C
Raw Normal View History

2018-08-19 09:46:58 +02:00
#pragma once
#include "phd_global.h"
#include "items.h"
2018-08-19 09:46:58 +02:00
typedef struct ENERGY_ARC
{
PHD_VECTOR pos1;
PHD_VECTOR pos2;
PHD_VECTOR pos3;
PHD_VECTOR pos4;
byte r;
byte g;
byte b;
short sLife;
short life;
2020-03-18 20:22:58 +01:00
short amplitude;
short segmentSize;
short sAmplitude;
byte type;
byte flags;
signed char direction;
short rotation;
short filler;
};
typedef struct SMOKE_SPARKS
{
int x;
int y;
int z;
short xVel;
short yVel;
short zVel;
short gravity;
short rotAng;
short flags;
byte sSize;
byte dSize;
byte size;
byte friction;
byte scalar;
byte def;
signed char rotAdd;
signed char maxYvel;
byte on;
byte sShade;
byte dShade;
byte shade;
byte colFadeSpeed;
byte fadeToBlack;
signed char sLife;
signed char life;
byte transType;
byte fxObj;
byte nodeNumber;
byte mirror;
};
typedef struct GUNFLASH_STRUCT
{
MATRIX3D matrix;
short on;
};
typedef struct SHOCKWAVE_STRUCT
{
int x;
int y;
int z;
short innerRad;
short outerRad;
short xRot;
short flags;
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char life;
short speed;
short temp;
};
typedef struct GUNSHELL_STRUCT
{
PHD_3DPOS pos;
short fallspeed;
short roomNumber;
short speed;
short counter;
short dirXrot;
short objectNumber;
};
typedef struct DRIP_STRUCT
{
int x;
int y;
int z;
byte on;
byte r;
byte g;
byte b;
short yVel;
byte gravity;
byte life;
short roomNumber;
byte outside;
byte pad;
};
typedef struct FIRE_LIST
{
int x;
int y;
int z;
byte on;
byte size;
short roomNumber;
};
typedef struct FIRE_SPARKS
{
short x;
short y;
short z;
short xVel;
short yVel;
short zVel;
short gravity;
short rotAng;
short flags;
unsigned char sSize;
unsigned char dSize;
unsigned char size;
unsigned char friction;
unsigned char scalar;
unsigned char def;
signed char rotAdd;
signed char maxYvel;
unsigned char on;
unsigned char sR;
unsigned char sG;
unsigned char sB;
unsigned char dR;
unsigned char dG;
unsigned char dB;
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char colFadeSpeed;
unsigned char fadeToBlack;
unsigned char sLife;
unsigned char life;
};
typedef struct BLOOD_STRUCT
{
int x;
int y;
int z;
short xVel;
short yVel;
short zVel;
short gravity;
short rotAng;
unsigned char sSize;
unsigned char dSize;
unsigned char size;
unsigned char friction;
byte rotAdd;
unsigned char on;
unsigned char sShade;
unsigned char dShade;
unsigned char shade;
unsigned char colFadeSpeed;
unsigned char fadeToBlack;
byte sLife;
byte life;
byte pad;
};
#define ENERGY_ARC_STRAIGHT_LINE 0
#define ENERGY_ARC_CIRCLE 1
2020-03-22 12:27:12 +01:00
#define ENERGY_ARC_NO_RANDOMIZE 1
extern int LaserSightX;
extern int LaserSightY;
extern int LaserSightZ;
extern char LaserSightActive;
extern char LaserSightCol;
extern int NextFireSpark;
extern int NextSmokeSpark;
extern int NextBubble;
extern int NextDrip;
extern int NextBlood;
extern int NextSpider;
extern int NextGunShell;
#define MAX_SPARKS_FIRE 20
#define MAX_FIRE_LIST 32
#define MAX_SPARKS_SMOKE 32
#define MAX_SPARKS_BLOOD 32
#define MAX_GUNFLASH 4
#define MAX_GUNSHELL 24
#define MAX_DRIPS 32
#define MAX_SHOCKWAVE 16
#define MAX_ENERGYARCS 32
extern GUNFLASH_STRUCT Gunflashes[MAX_GUNFLASH];
extern FIRE_SPARKS FireSparks[MAX_SPARKS_FIRE];
extern SMOKE_SPARKS SmokeSparks[MAX_SPARKS_SMOKE];
extern GUNSHELL_STRUCT Gunshells[MAX_GUNSHELL];
extern BLOOD_STRUCT Blood[MAX_SPARKS_BLOOD];
extern DRIP_STRUCT Drips[MAX_DRIPS];
extern SHOCKWAVE_STRUCT ShockWaves[MAX_SHOCKWAVE];
extern FIRE_LIST Fires[MAX_FIRE_LIST];
extern ENERGY_ARC EnergyArcs[MAX_ENERGYARCS];
2020-01-20 18:10:17 +01:00
extern SMOKE_SPARKS SmokeSparks[MAX_SPARKS_SMOKE];
void TriggerBlood(int x, int y, int z, int unk, int num);
void TriggerExplosionBubble(int x, int y, int z, short roomNum);
int GetFreeFireSpark();
void TriggerGlobalStaticFlame();
void TriggerGlobalFireSmoke();
void TriggerGlobalFireFlame();
void keep_those_fires_burning();
void ClearFires();
void AddFire(int x, int y, int z, char size, short roomNum, short on);
void UpdateFireSparks();
int GetFreeSmokeSpark();
void UpdateSmoke();
byte TriggerGunSmoke_SubFunction(int weaponType);
void TriggerGunSmoke(int x, int y, int z, short xv, short yv, short zv, byte initial, int weaponType, byte count);
void TriggerShatterSmoke(int x, int y, int z);
int GetFreeBlood();
void TriggerBlood(int x, int y, int z, int unk, int num);
void UpdateBlood();
int GetFreeGunshell();
void TriggerGunShell(short hand, short objNum, int weaponType);
void UpdateGunShells();
void AddWaterSparks(int x, int y, int z, int num);
int GetFreeBubble();
void LaraBubbles(ITEM_INFO* item);
void UpdateBubbles();
int GetFreeDrip();
void UpdateDrips();
void TriggerLaraDrips();
constexpr auto EXPLODE_HIT_EFFECT = 258;
constexpr auto EXPLODE_NORMAL = 256;
int ExplodingDeath(short itemNumber, int meshBits, short flags); // EXPLODE_ flags
int GetFreeShockwave();
void TriggerShockwave(PHD_3DPOS* pos, short innerRad, short outerRad, int speed, char r, char g, char b, char life, short angle, short flags);
void TriggerShockwaveHitEffect(int x, int y, int z, int color, short rot, int vel);
void UpdateShockwaves();
void TriggerSmallSplash(int x, int y, int z, int num);
2019-12-28 15:29:33 +01:00
void SetFadeClip(short height, short speed);
void TriggerLightningGlow(int x, int y, int z, byte size, byte r, byte g, byte b);
2020-03-22 12:27:12 +01:00
ENERGY_ARC* TriggerEnergyArc(PHD_VECTOR* start, PHD_VECTOR* end, byte r, byte g, byte b, short segmentSize, short life, short amplitude, byte flags, byte type);
void UpdateEnergyArcs();