Files
source/Tactical/Bullets.h
T
Marco Antonio J. Costaandmajcosta 86ad401186 add newline at end of file where it's lacking
.editorconfig already enforces it but it's getting changed piecemeal in
every commit. just get it done with.

the script:
```

find . -type f -not -path "./.git/*" -not -path "./.vs/*" | while read -r file; do
	isFile=$(file -0 "$file" | cut -d $'\0' -f2)
	case "$isFile" in
		(*text*)
			echo "$file is text"
			if [[ $(tail -c 1 "$file" | wc -l) -ne 1 ]]; then
				echo "" >> "$file"
			fi
			;;
		(*)
			echo "file isn't text"
			;;
	esac
done
```
2024-12-14 19:05:48 -03:00

111 lines
3.4 KiB
C

#ifndef __BULLETS_H
#define __BULLETS_H
#include "types.h"
#include "Soldier Control.h"
#include "los.h"
#include "tile animation.h"
#define BULLET_FLAG_CREATURE_SPIT 0x0001
#define BULLET_FLAG_KNIFE 0x0002
#define BULLET_FLAG_MISSILE 0x0004
#define BULLET_FLAG_SMALL_MISSILE 0x0008
#define BULLET_STOPPED 0x0010
#define BULLET_FLAG_TANK_CANNON 0x0020
#define BULLET_FLAG_BUCKSHOT 0x0040
#define BULLET_FLAG_FLAME 0x0080
#define BULLET_FLAG_TRACER 0x0100
#define BULLET_FLAG_ANTIMATERIEL 0x0200 // Flugente: bullet can destroy structures
#define BULLET_FLAG_INFECTED 0x0400 // Flugente: bullet is infected
#define BULLET_FLAG_WHITESMOKE 0x0800 // Flugente: bullet leaves a white smoke trail (for fire extinguisher)
//afp-start calculate line points between two point
#define BULLET_TRACER_MAX_LENGTH 60
void PointsPath(int sx1, int sy1, int ex2, int ey2) ;
//afp-end
typedef struct
{
//afp-start this structure keeps tracers points
LEVELNODE* pNodes[BULLET_TRACER_MAX_LENGTH];
//afp-end
INT32 iBullet;
UINT8 ubFirerID;
UINT8 ubTargetID;
INT8 bStartCubesAboveLevelZ;
INT8 bEndCubesAboveLevelZ;
INT32 sGridNo;
INT16 sUnused;
UINT16 usLastStructureHit;
FIXEDPT qCurrX;
FIXEDPT qCurrY;
FIXEDPT qCurrZ;
FIXEDPT qIncrX;
FIXEDPT qIncrY;
FIXEDPT qIncrZ;
DOUBLE ddHorizAngle;
INT32 iCurrTileX;
INT32 iCurrTileY;
INT8 bLOSIndexX;
INT8 bLOSIndexY;
BOOLEAN fCheckForRoof;
INT32 iCurrCubesZ;
INT32 iLoop;
BOOLEAN fAllocated;
BOOLEAN fToDelete;
BOOLEAN fLocated;
BOOLEAN fReal;
BOOLEAN fAimed;
UINT32 uiLastUpdate;
UINT8 ubTilesPerUpdate;
UINT16 usClockTicksPerUpdate;
SOLDIERTYPE *pFirer; // Flugente: WARNING! We cannot assume this will be valid. Check wether ubFirerID is NOBODY first
INT32 sOrigGridNo; // HEADROCK HAM 5.1: Original tile does not necessarily have to be the pFirer's tile
INT32 sTargetGridNo;
INT16 sHitBy;
INT32 iImpact;
INT32 iImpactReduction;
INT32 iRange;
INT32 iDistanceLimit;
UINT16 usFlags;
ANITILE *pAniTile;
ANITILE *pShadowAniTile;
UINT16 ubItemStatus;
UINT16 fromItem;
INT32 flash;
// HEADROCK HAM B2.5: Experimental bullet tracer info. If the new tracer system is activated, this flag tells
// the bullet animation functions to create a lightpath for this bullet. This means now all bullets in a tracer
// magazine will cause a lightshow (that's the intended result).
BOOLEAN fTracer;
// HEADROCK HAM 5: Fragments. They are handled slightly differently by the bullet functions.
BOOLEAN fFragment;
} BULLET;
extern UINT32 guiNumBullets;
INT32 CreateBullet( UINT8 ubFirer, BOOLEAN fFake, UINT16 usFlags,UINT16 fromItem );
void RemoveBullet( INT32 iBullet );
void StopBullet( INT32 iBullet );
void UpdateBullets( );
BULLET *GetBulletPtr( INT32 iBullet );
INT32 BulletImpact( SOLDIERTYPE *pFirer, BULLET *pBullet, SOLDIERTYPE * pTarget, UINT8 ubHitLocation, INT32 iImpact, INT16 sHitBy, UINT8 * pubSpecial );
void DeleteAllBullets( );
void LocateBullet( INT32 iBulletIndex );
void HandleBulletSpecialFlags( INT32 iBulletIndex );
void AddMissileTrail( BULLET *pBullet, FIXEDPT qCurrX, FIXEDPT qCurrY, FIXEDPT qCurrZ );
//Save the bullet table to the saved game file
BOOLEAN SaveBulletStructureToSaveGameFile( HWFILE hFile );
//Load the bullet table from the saved game file
BOOLEAN LoadBulletStructureFromSavedGameFile( HWFILE hFile );
#endif