Files
source/Utils/Sound Control.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

469 lines
8.2 KiB
C

/*
* ChangeLog:
* 11.12.2005 Lesh changed balance settings
*/
#ifndef SOUND_CONTROL_H
#define SOUND_CONTROL_H
// == Lesh modifications ======
#define FARLEFT 0
#define LEFTSIDE 96
#define MIDDLE 128
#define MIDDLEPAN 128
#define RIGHTSIDE 160
#define FARRIGHT 255
// == Lesh modifications ends =
#define LOWVOLUME 25
#define BTNVOLUME 40
#define MIDVOLUME 65
#define HIGHVOLUME 127
#define RATE_11025 0xffffffff
#define LOOPING 0
// sound group priorities (higher = more important)
#define GROUP_PLAYER 1000
#define GROUP_AMBIENT 0
#define MAX_SAMPLES 5000
// SOUNDS ENUMERATION
enum SoundDefines
{
MISS_1 = 0,
MISS_2,
MISS_3,
MISS_4,
MISS_5,
MISS_6,
MISS_7,
MISS_8,
MISS_G1,
MISS_G2,
MISS_KNIFE,
FALL_1,
FALL_2,
FALL_TO_GROUND_1,
FALL_TO_GROUND_2,
FALL_TO_GROUND_3,
HEAVY_FALL_1,
BODY_SPLAT_1,
GLASS_SHATTER1,
GLASS_SHATTER2,
DROPEN_1,
DROPEN_2,
DROPEN_3,
DRCLOSE_1,
DRCLOSE_2,
UNLOCK_DOOR_1,
KICKIN_DOOR,
BREAK_LOCK,
PICKING_LOCK,
GARAGE_DOOR_OPEN,
GARAGE_DOOR_CLOSE,
ELEVATOR_DOOR_OPEN,
ELEVATOR_DOOR_CLOSE,
HITECH_DOOR_OPEN,
HITECH_DOOR_CLOSE,
CURTAINS_OPEN,
CURTAINS_CLOSE,
METAL_DOOR_OPEN,
METAL_DOOR_CLOSE,
WALK_LEFT_OUT,
WALK_RIGHT_OUT,
WALK_LEFT_OUT2,
WALK_RIGHT_OUT2,
WALK_LEFT_IN,
WALK_RIGHT_IN,
WALK_LEFT_IN2,
WALK_RIGHT_IN2,
WALK_LEFT_ROAD,
WALK_RIGHT_ROAD,
WALK_LEFT_ROAD2,
WALK_RIGHT_ROAD2,
CRAWL_1,
CRAWL_2,
CRAWL_3,
CRAWL_4,
TARG_REFINE_BEEP,
ENDTURN_1,
HEADCR_1,
DOORCR_1,
HEADSPLAT_1,
BODY_EXPLODE_1,
EXPLOSION_1,
CROW_EXPLODE_1,
SMALL_EXPLODE_1,
HELI_1,
BULLET_IMPACT_1,
BULLET_IMPACT_2,
BULLET_IMPACT_3,
CREATURE_BATTLECRY_1,
ENTER_WATER_1,
ENTER_DEEP_WATER_1,
COW_HIT_SND,
COW_DIE_SND,
// ROCKET GUN COMPUTER VOICE...
RG_ID_IMPRINTED,
RG_ID_INVALID,
RG_TARGET_SELECTED,
// CAVE COLLAPSE
CAVE_COLLAPSE,
// AIR RAID SOUNDS...
S_RAID_WHISTLE,
S_RAID_AMBIENT,
S_RAID_DIVE,
S_RAID_TB_DIVE,
S_RAID_TB_BOMB,
// VEHICLE SOUNDS
S_VECH1_MOVE,
S_VECH1_ON,
S_VECH1_OFF,
S_VECH1_INTO,
S_DRYFIRE1,
// IMPACT SOUNDS
S_WOOD_IMPACT1,
S_WOOD_IMPACT2,
S_WOOD_IMPACT3,
S_PORCELAIN_IMPACT1,
S_RUBBER_IMPACT1,
S_STONE_IMPACT1,
S_WATER_IMPACT1,
S_VEG_IMPACT1,
S_METAL_IMPACT1,
S_METAL_IMPACT2,
S_METAL_IMPACT3,
S_SLAP_IMPACT,
// WEAPON RELOAD
S_RELOAD_REVOLVER,
S_RELOAD_PISTOL,
S_RELOAD_SMG,
S_RELOAD_RIFLE,
S_RELOAD_SHOTGUN,
S_RELOAD_LMG,
// WEAPON LOCKNLOAD
S_LNL_REVOLVER,
S_LNL_PISTOL,
S_LNL_SMG,
S_LNL_RIFLE,
S_LNL_SHOTGUN,
S_LNL_LMG,
//WEAPON SHOT SOUNDS
S_SMALL_ROCKET_LAUNCHER,
S_GLAUNCHER,
S_UNDER_GLAUNCHER,
S_ROCKET_LAUNCHER,
S_MORTAR_SHOT,
S_GLOCK17,
S_GLOCK18,
S_BERETTA92,
S_BERETTA93,
S_SWSPECIAL,
S_BARRACUDA,
S_DESERTEAGLE,
S_M1911,
S_MP5K,
S_MAC10,
S_THOMPSON,
S_COMMANDO,
S_MP53,
S_AKSU74,
S_P90,
S_TYPE85,
S_SKS,
S_DRAGUNOV,
S_M24,
S_AUG,
S_G41,
S_RUGERMINI,
S_C7,
S_FAMAS,
S_AK74,
S_AKM,
S_M14,
S_FNFAL,
S_G3A3,
S_G11,
S_M870,
S_SPAS,
S_CAWS,
S_FNMINI,
S_RPK74,
S_21E,
S_THROWKNIFE,
S_TANK_CANNON,
S_BURSTTYPE1,
S_AUTOMAG,
S_SILENCER_1,
S_SILENCER_2,
// SWOOSHES.
SWOOSH_1,
SWOOSH_2,
SWOOSH_3,
SWOOSH_4,
SWOOSH_5,
SWOOSH_6,
// CREATURE SOUNDS....
ACR_FALL_1,
ACR_STEP_1,
ACR_STEP_2,
ACR_SWIPE,
ACR_EATFLESH,
ACR_CRIPPLED,
ACR_DIE_PART1,
ACR_DIE_PART2,
ACR_LUNGE,
ACR_SMELL_THREAT,
ACR_SMEEL_PREY,
ACR_SPIT,
//BABY
BCR_DYING,
BCR_DRAGGING,
BCR_SHRIEK,
BCR_SPITTING,
// LARVAE
LCR_MOVEMENT,
LCR_RUPTURE,
// QUEEN
LQ_SHRIEK,
LQ_DYING,
LQ_ENRAGED_ATTACK,
LQ_RUPTURING,
LQ_CRIPPLED,
LQ_SMELLS_THREAT,
LQ_WHIP_ATTACK,
THROW_IMPACT_1,
THROW_IMPACT_2,
IDLE_SCRATCH,
IDLE_ARMPIT,
IDLE_BACKCRACK,
AUTORESOLVE_FINISHFX,
//Interface buttons, misc.
EMAIL_ALERT,
ENTERING_TEXT,
REMOVING_TEXT,
COMPUTER_BEEP2_IN,
COMPUTER_BEEP2_OUT,
COMPUTER_SWITCH1_IN,
COMPUTER_SWITCH1_OUT,
VSM_SWITCH1_IN,
VSM_SWITCH1_OUT,
VSM_SWITCH2_IN,
VSM_SWITCH2_OUT,
SM_SWITCH1_IN,
SM_SWITCH1_OUT,
SM_SWITCH2_IN,
SM_SWITCH2_OUT,
SM_SWITCH3_IN,
SM_SWITCH3_OUT,
BIG_SWITCH3_IN,
BIG_SWITCH3_OUT,
KLAXON_ALARM,
BOXING_BELL,
HELI_CRASH,
ATTACH_TO_GUN,
ATTACH_CERAMIC_PLATES,
ATTACH_DETONATOR,
GRAB_ROOF,
LAND_ON_ROOF,
UNSTEALTHY_OUTSIDE_1,
UNSTEALTHY_OUTSIDE_2,
UNSTEALTHY_INSIDE_1,
OPEN_DEFAULT_OPENABLE,
CLOSE_DEFAULT_OPENABLE,
FIRE_ON_MERC,
GLASS_CRACK,
SPIT_RICOCHET,
BLOODCAT_HIT_1,
BLOODCAT_DIE_1,
SLAP_1,
ROBOT_BEEP,
DOOR_ELECTRICITY,
SWIM_1,
SWIM_2,
KEY_FAILURE,
TARGET_OUT_OF_RANGE,
OPEN_STATUE,
USE_STATUE_REMOTE,
USE_WIRE_CUTTERS,
DRINK_CANTEEN_FEMALE,
BLOODCAT_ATTACK,
BLOODCAT_ROAR,
ROBOT_GREETING,
ROBOT_DEATH,
GAS_EXPLODE_1,
AIR_ESCAPING_1,
OPEN_DRAWER,
CLOSE_DRAWER,
OPEN_LOCKER,
CLOSE_LOCKER,
OPEN_WOODEN_BOX,
CLOSE_WOODEN_BOX,
ROBOT_STOP,
WATER_WALK1_IN,
WATER_WALK1_OUT,
WATER_WALK2_IN,
WATER_WALK2_OUT,
PRONE_UP_SOUND,
PRONE_DOWN_SOUND,
KNEEL_UP_SOUND,
KNEEL_DOWN_SOUND,
PICKING_SOMETHING_UP,
COW_FALL,
BLOODCAT_GROWL_1,
BLOODCAT_GROWL_2,
BLOODCAT_GROWL_3,
BLOODCAT_GROWL_4,
CREATURE_GAS_NOISE,
CREATURE_FALL_PART_2,
CREATURE_DISSOLVE_1,
QUEEN_AMBIENT_NOISE,
CREATURE_FALL,
CROW_PECKING_AT_FLESH,
CROW_FLYING_AWAY,
SLAP_2,
MORTAR_START,
MORTAR_WHISTLE,
MORTAR_LOAD,
TURRET_MOVE,
TURRET_STOP,
COW_FALL_2,
KNIFE_IMPACT,
EXPLOSION_ALT_BLAST_1,
EXPLOSION_BLAST_2,
DRINK_CANTEEN_MALE,
USE_X_RAY_MACHINE,
CATCH_OBJECT,
FENCE_OPEN,
//MADD MARKER
S_BARRETT,
S_VAL,
//BREAK_LIGHT_IGNITING,
NUM_SAMPLES
};
enum AmbientDefines
{
LIGHTNING_1 = 0,
LIGHTNING_2,
RAIN_1,
BIRD_1,
BIRD_2,
CRICKETS_1,
CRICKETS_2,
CRICKET_1,
CRICKET_2,
OWL_1,
OWL_2,
OWL_3,
NIGHT_BIRD_1,
NIGHT_BIRD_2,
WIND,
NUM_AMBIENTS
};
typedef void (*SOUND_STOP_CALLBACK)( void *pData );
extern UINT8 AmbientVols[NUM_AMBIENTS];
//extern char szSoundEffects[MAX_SAMPLES][255];
BOOLEAN InitJA2Sound( );
BOOLEAN ShutdownJA2Sound( );
UINT32 PlayJA2Sample( UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
UINT32 PlayJA2StreamingSample( UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
UINT32 PlayJA2SampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
UINT32 PlayWeaponSound(STR8 szFileName, UINT32 ubVolume, UINT32 uiPan);
UINT32 PlayJA2StreamingSampleFromFile( STR8 szFileName, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, SOUND_STOP_CALLBACK EndsCallback );
UINT32 PlayJA2Ambient( UINT32 usNum, UINT32 ubVolume, UINT32 ubLoops);
UINT32 PlayJA2AmbientRandom(UINT32 usNum, UINT32 uiTimeMin, UINT32 uiTimeMax);
UINT32 PlaySoldierJA2Sample( UINT16 usID, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan, BOOLEAN fCheck );
UINT32 GetSoundEffectsVolume( );
void SetSoundEffectsVolume( UINT32 uiNewVolume );
UINT32 GetSpeechVolume( );
void SetSpeechVolume( UINT32 uiNewVolume );
//Calculates a volume based on the current Speech Volume level
UINT32 CalculateSpeechVolume( UINT32 uiVolume );
//Calculates a volume based on the current Sound Effects Volume level
UINT32 CalculateSoundEffectsVolume( UINT32 uiVolume );
INT32 SoundDir( INT32 sGridNo );
INT32 SoundVolume( INT8 bInitialVolume, INT32 sGridNo );
// ATE: Warning! Use this sparingly! NOT very robust - can
// have only 1 delayed sound at a time, and uses the global custom
// timer, again, of which can only be one
void PlayDelayedJA2Sample( UINT32 uiDelay, UINT32 usNum, UINT32 usRate, UINT32 ubVolume, UINT32 ubLoops, UINT32 uiPan );
#define POSITION_SOUND_FROM_SOLDIER 0x00000001
#define POSITION_SOUND_STATIONATY_OBJECT 0x00000002
INT32 NewPositionSnd( INT32 sGridNo, UINT32 uiFlags, UINT32 uiData, UINT32 iSoundToPlay );
void DeletePositionSnd( INT32 iPositionSndIndex );
void SetPositionSndsActive( );
void SetPositionSndsInActive( );
void SetPositionSndsVolumeAndPanning( );
void SetPositionSndGridNo( INT32 iPositionSndIndex, INT32 sGridNo );
#endif