mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@462 3b4a5df2-a311-0410-b5c6-a8a6f20db521
136 lines
3.5 KiB
C
136 lines
3.5 KiB
C
#ifndef _EXPLOSION_CONTROL_H
|
|
#define _EXPLOSION_CONTROL_H
|
|
|
|
#include "Weapons.h"
|
|
|
|
#define MAX_DISTANCE_EXPLOSIVE_CAN_DESTROY_STRUCTURES 2
|
|
|
|
|
|
#define EXPLOSION_FLAG_USEABSPOS 0x00000001
|
|
#define EXPLOSION_FLAG_DISPLAYONLY 0x00000002
|
|
|
|
|
|
// Explosion Data
|
|
typedef struct
|
|
{
|
|
UINT32 uiFlags;
|
|
|
|
UINT8 ubOwner;
|
|
INT8 ubTypeID;
|
|
|
|
UINT16 usItem;
|
|
|
|
INT16 sX; // World X ( optional )
|
|
INT16 sY; // World Y ( optional )
|
|
INT16 sZ; // World Z ( optional )
|
|
INT16 sGridNo; // World GridNo
|
|
BOOLEAN fLocate;
|
|
INT8 bLevel; // World level
|
|
UINT8 ubUnsed[1];
|
|
|
|
} EXPLOSION_PARAMS;
|
|
|
|
|
|
typedef struct
|
|
{
|
|
EXPLOSION_PARAMS Params;
|
|
BOOLEAN fAllocated;
|
|
INT16 sCurrentFrame;
|
|
INT32 iID;
|
|
INT32 iLightID;
|
|
UINT8 ubUnsed[2];
|
|
|
|
|
|
} EXPLOSIONTYPE;
|
|
|
|
|
|
enum EXPLOSION_TYPES
|
|
{
|
|
NO_BLAST,
|
|
BLAST_1,
|
|
BLAST_2,
|
|
BLAST_3,
|
|
STUN_BLAST,
|
|
WATER_BLAST,
|
|
TARGAS_EXP,
|
|
SMOKE_EXP,
|
|
MUSTARD_EXP,
|
|
BURN_EXP,
|
|
THERMOBARIC_EXP,
|
|
FLASHBANG_EXP, // Lesh: enum added
|
|
NUM_EXP_TYPES=50
|
|
|
|
} ;
|
|
|
|
// Lesh: introducing struct instead of linked arrays
|
|
#define MAX_BLAST_FILENAME_LEN 70
|
|
|
|
typedef struct
|
|
{
|
|
UINT8 ubTransKeyFrame;
|
|
UINT8 ubDamageKeyFrame;
|
|
UINT32 uiExplosionSoundID;
|
|
UINT32 uiAltExplosionSoundID;
|
|
CHAR8 zBlastFilename[MAX_BLAST_FILENAME_LEN];
|
|
CHAR8 sBlastSpeed;
|
|
} EXPLOSION_DATA;
|
|
|
|
extern EXPLOSION_DATA gExpAniData[NUM_EXP_TYPES];
|
|
// Lesh: done here
|
|
|
|
|
|
typedef struct
|
|
{
|
|
UINT32 uiWorldBombIndex;
|
|
UINT32 uiTimeStamp;
|
|
UINT8 fExists;
|
|
} ExplosionQueueElement;
|
|
|
|
|
|
#define ERASE_SPREAD_EFFECT 2
|
|
#define BLOOD_SPREAD_EFFECT 3
|
|
#define REDO_SPREAD_EFFECT 4
|
|
|
|
|
|
#define NUM_EXPLOSION_SLOTS 100
|
|
|
|
extern EXPLOSIONTYPE gExplosionData[ NUM_EXPLOSION_SLOTS ];
|
|
extern UINT8 gubElementsOnExplosionQueue;
|
|
extern BOOLEAN gfExplosionQueueActive;
|
|
|
|
void IgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT16 sGridNo, UINT16 usItem, INT8 bLevel );
|
|
void InternalIgniteExplosion( UINT8 ubOwner, INT16 sX, INT16 sY, INT16 sZ, INT16 sGridNo, UINT16 usItem, BOOLEAN fLocate, INT8 bLevel );
|
|
|
|
|
|
void GenerateExplosion( EXPLOSION_PARAMS *pExpParams );
|
|
|
|
void SpreadEffect( INT16 sGridNo, UINT8 ubRadius, UINT16 usItem, UINT8 ubOwner, BOOLEAN fSubsequent, INT8 bLevel, INT32 iSmokeEffectNum );
|
|
|
|
void AddBombToQueue( UINT32 uiWorldBombIndex, UINT32 uiTimeStamp );
|
|
|
|
void DecayBombTimers( void );
|
|
void SetOffBombsByFrequency( UINT8 ubID, INT8 bFrequency );
|
|
BOOLEAN SetOffBombsInGridNo( UINT8 ubID, INT16 sGridNo, BOOLEAN fAllBombs, INT8 bLevel );
|
|
void ActivateSwitchInGridNo( UINT8 ubID, INT16 sGridNo );
|
|
void SetOffPanicBombs( UINT8 ubID, INT8 bPanicTrigger );
|
|
|
|
void UpdateExplosionFrame( INT32 iIndex, INT16 sCurrentFrame );
|
|
void RemoveExplosionData( INT32 iIndex );
|
|
|
|
void UpdateAndDamageSAMIfFound( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ, INT16 sGridNo, UINT8 ubDamage );
|
|
void UpdateSAMDoneRepair( INT16 sSectorX, INT16 sSectorY, INT16 sSectorZ );
|
|
|
|
|
|
BOOLEAN SaveExplosionTableToSaveGameFile( HWFILE hFile );
|
|
|
|
BOOLEAN LoadExplosionTableFromSavedGameFile( HWFILE hFile );
|
|
|
|
INT32 FindActiveTimedBomb( void );
|
|
BOOLEAN ActiveTimedBombExists( void );
|
|
void RemoveAllActiveTimedBombs( void );
|
|
|
|
#define GASMASK_MIN_STATUS 70
|
|
|
|
BOOLEAN DishOutGasDamage( SOLDIERTYPE * pSoldier, EXPLOSIVETYPE * pExplosive, INT16 sSubsequent, BOOLEAN fRecompileMovementCosts, INT16 sWoundAmt, INT16 sBreathAmt, UINT8 ubOwner );
|
|
|
|
#endif |