#pragma once

enum 
{
	SCRSOUND_TEST_1     = 0,
	_SCRSOUND_UNK_1     = 1,
	_SCRSOUND_UNK_2     = 2,
	_SCRSOUND_UNK_3     = 3,
	_SCRSOUND_CLUB_1_S  = 4,
	_SCRSOUND_CLUB_1_L  = 5,
	_SCRSOUND_CLUB_2_S  = 6,
	_SCRSOUND_CLUB_2_L  = 7,
	_SCRSOUND_CLUB_3_S  = 8,
	_SCRSOUND_CLUB_3_L  = 9,
	_SCRSOUND_CLUB_4_S  = 10,
	_SCRSOUND_CLUB_4_L  = 11,
	_SCRSOUND_CLUB_5_S  = 12,
	_SCRSOUND_CLUB_5_L  = 13,
	_SCRSOUND_CLUB_6_S  = 14,
	_SCRSOUND_CLUB_6_L  = 15,
	_SCRSOUND_CLUB_7_S  = 16,
	_SCRSOUND_CLUB_7_L  = 17,
	_SCRSOUND_CLUB_8_S  = 18,
	_SCRSOUND_CLUB_8_L  = 19,
	_SCRSOUND_CLUB_9_S  = 20,
	_SCRSOUND_CLUB_9_L  = 21,
	_SCRSOUND_CLUB_10_S  = 22,
	_SCRSOUND_CLUB_10_L  = 23,
	_SCRSOUND_CLUB_11_S  = 24,
	_SCRSOUND_CLUB_11_L  = 25,
	_SCRSOUND_CLUB_12_S  = 26,
	_SCRSOUND_CLUB_12_L  = 27,
	_SCRSOUND_CLUB_RAGGA_S  = 28,
	_SCRSOUND_CLUB_RAGGA_L  = 29,
	SCRSOUND_STRIP_CLUB_LOOP_1_S  = 30,
	_SCRSOUND_STRIP_CLUB_LOOP_1_L  = 31,
	SCRSOUND_STRIP_CLUB_LOOP_2_S  = 32,
	_SCRSOUND_STRIP_CLUB_LOOP_2_L  = 33,
	_SCRSOUND_SFX_WORKSHOP_1  = 34,
	_SCRSOUND_SFX_WORKSHOP_2  = 35,
	_SCRSOUND_SAWMILL_LOOP_S  = 36,
	SCRSOUND_SAWMILL_LOOP_L  = 37,
	_SCRSOUND_DOG_FOOD_FACTORY_S  = 38,
	_SCRSOUND_DOG_FOOD_FACTORY_L  = 39,
	_SCRSOUND_LAUNDERETTE_1  = 40,
	_SCRSOUND_LAUNDERETTE_2  = 41,
	_SCRSOUND_RESTAURANT_CHINATOWN_S  = 42,
	_SCRSOUND_RESTAURANT_CHINATOWN_L  = 43,
	_SCRSOUND_RESTAURANT_ITALY_S  = 44,
	_SCRSOUND_RESTAURANT_ITALY_L  = 45,
	_SCRSOUND_RESTAURANT_GENERIC_1_S  = 46,
	_SCRSOUND_RESTAURANT_GENERIC_1_L  = 47,
	_SCRSOUND_RESTAURANT_GENERIC_2_S  = 48,
	_SCRSOUND_RESTAURANT_GENERIC_2_L  = 49,
	_SCRSOUND_AIRPORT_ANNOUNCEMENT_S  = 50,
	_SCRSOUND_AIRPORT_ANNOUNCEMENT_L  = 51,
	_SCRSOUND_SHOP_LOOP_1  = 52,
	_SCRSOUND_SHOP_LOOP_2  = 53,
	_SCRSOUND_CINEMA_S  = 54,
	_SCRSOUND_CINEMA_L  = 55,
	_SCRSOUND_DOCKS_FOGHORN_S  = 56,
	_SCRSOUND_DOCKS_FOGHORN_L  = 57,
	_SCRSOUND_HOME_S    = 58,
	_SCRSOUND_HOME_L    = 59,
	_SCRSOUND_PIANO_BAR  = 60,
	_SCRSOUND_CLUB      = 61,
	SCRSOUND_PORN_CINEMA_1_S  = 62,
	_SCRSOUND_PORN_CINEMA_1_L  = 63,
	SCRSOUND_PORN_CINEMA_2_S  = 64,
	_SCRSOUND_PORN_CINEMA_2_L  = 65,
	SCRSOUND_PORN_CINEMA_3_S  = 66,
	_SCRSOUND_PORN_CINEMA_3_L  = 67,
	_SCRSOUND_BANK_ALARM_LOOP_S  = 68,
	SCRSOUND_BANK_ALARM_LOOP_L  = 69,
	_SCRSOUND_POLICE_BALL_LOOP_S  = 70,
	SCRSOUND_POLICE_BALL_LOOP_L  = 71,
	_SCRSOUND_RAVE_LOOP_INDUSTRIAL_S  = 72,
	SCRSOUND_RAVE_LOOP_INDUSTRIAL_L  = 73,
	_SCRSOUND_UNK_74    = 74,
	_SCRSOUND_UNK_75    = 75,
	_SCRSOUND_POLICE_CELL_BEATING_LOOP_S  = 76,
	SCRSOUND_POLICE_CELL_BEATING_LOOP_L  = 77,
	SCRSOUND_INJURED_PED_MALE_OUCH_S  = 78,
	SCRSOUND_INJURED_PED_MALE_OUCH_L  = 79,
	SCRSOUND_INJURED_PED_FEMALE_OUCH_S  = 80,
	SCRSOUND_INJURED_PED_FEMALE_OUCH_L  = 81,
	SCRSOUND_EVIDENCE_PICKUP  = 82,
	SCRSOUND_UNLOAD_GOLD  = 83,
	_SCRSOUND_RAVE_INDUSTRIAL_S  = 84,
	_SCRSOUND_RAVE_INDUSTRIAL_L  = 85,
	_SCRSOUND_RAVE_COMMERCIAL_S  = 86,
	_SCRSOUND_RAVE_COMMERCIAL_L  = 87,
	_SCRSOUND_RAVE_SUBURBAN_S  = 88,
	_SCRSOUND_RAVE_SUBURBAN_L  = 89,
	_SCRSOUND_GROAN_S   = 90,
	_SCRSOUND_GROAN_L   = 91,
	SCRSOUND_GATE_START_CLUNK  = 92,
	SCRSOUND_GATE_STOP_CLUNK  = 93,
	SCRSOUND_PART_MISSION_COMPLETE  = 94,
	SCRSOUND_CHUNKY_RUN_SHOUT  = 95,
	SCRSOUND_SECURITY_GUARD_RUN_AWAY_SHOUT  = 96,
	SCRSOUND_RACE_START_1  = 97,
	SCRSOUND_RACE_START_2  = 98,
	SCRSOUND_RACE_START_3  = 99,
	SCRSOUND_RACE_START_GO  = 100,
	SCRSOUND_SWAT_PED_SHOUT  = 101,
	SCRSOUND_PRETEND_FIRE_LOOP  = 102,
	SCRSOUND_AMMUNATION_CHAT_1  = 103,
	SCRSOUND_AMMUNATION_CHAT_2  = 104,
	SCRSOUND_AMMUNATION_CHAT_3  = 105,
	_SCRSOUND_BULLET_WALL_1  = 106,
	_SCRSOUND_BULLET_WALL_2  = 107,
	_SCRSOUND_BULLET_WALL_3  = 108,
	_SCRSOUND_UNK_109   = 109,
	_SCRSOUND_GLASSFX2_1  = 110,
	_SCRSOUND_GLASSFX2_2  = 111,
	_SCRSOUND_PHONE_RING  = 112,
	_SCRSOUND_UNK_113   = 113,
	_SCRSOUND_GLASS_SMASH_1  = 114,
	_SCRSOUND_GLASS_SMASH_2  = 115,
	_SCRSOUND_GLASS_CRACK  = 116,
	_SCRSOUND_GLASS_SHARD  = 117,
	_SCRSOUND_WOODEN_BOX_SMASH  = 118,
	_SCRSOUND_CARDBOARD_BOX_SMASH  = 119,
	_SCRSOUND_COL_CAR   = 120,
	_SCRSOUND_TYRE_BUMP  = 121,
	_SCRSOUND_BULLET_SHELL_HIT_GROUND_1  = 122,
	_SCRSOUND_BULLET_SHELL_HIT_GROUND_2  = 123,
};

class cAudioScriptObject
{
public:
	int16 AudioId;
	CVector Posn;
	int32 AudioEntity;

	void Reset(); /// ok

	static void* operator new(size_t);
	static void* operator new(size_t, int);
	static void operator delete(void*, size_t);
	static void operator delete(void*, int);

	static void SaveAllAudioScriptObjects(uint8 *buf, uint32 *size);
};

static_assert(sizeof(cAudioScriptObject) == 20, "cAudioScriptObject: error");

extern void PlayOneShotScriptObject(uint8 id, CVector const &pos);