#pragma once enum { SCRSOUND_TEST_1, _SCRSOUND_UNK_1, _SCRSOUND_UNK_2, _SCRSOUND_UNK_3, _SCRSOUND_CLUB_1_S, _SCRSOUND_CLUB_1_L, _SCRSOUND_CLUB_2_S, _SCRSOUND_CLUB_2_L, _SCRSOUND_CLUB_3_S, _SCRSOUND_CLUB_3_L, _SCRSOUND_CLUB_4_S, _SCRSOUND_CLUB_4_L, _SCRSOUND_CLUB_5_S, _SCRSOUND_CLUB_5_L, _SCRSOUND_CLUB_6_S, _SCRSOUND_CLUB_6_L, _SCRSOUND_CLUB_7_S, _SCRSOUND_CLUB_7_L, _SCRSOUND_CLUB_8_S, _SCRSOUND_CLUB_8_L, _SCRSOUND_CLUB_9_S, _SCRSOUND_CLUB_9_L, _SCRSOUND_CLUB_10_S, _SCRSOUND_CLUB_10_L, _SCRSOUND_CLUB_11_S, _SCRSOUND_CLUB_11_L, _SCRSOUND_CLUB_12_S, _SCRSOUND_CLUB_12_L, _SCRSOUND_CLUB_RAGGA_S, _SCRSOUND_CLUB_RAGGA_L, SCRSOUND_STRIP_CLUB_LOOP_1_S, _SCRSOUND_STRIP_CLUB_LOOP_1_L, SCRSOUND_STRIP_CLUB_LOOP_2_S, _SCRSOUND_STRIP_CLUB_LOOP_2_L, _SCRSOUND_SFX_WORKSHOP_1, _SCRSOUND_SFX_WORKSHOP_2, _SCRSOUND_SAWMILL_LOOP_S, SCRSOUND_SAWMILL_LOOP_L, _SCRSOUND_DOG_FOOD_FACTORY_S, _SCRSOUND_DOG_FOOD_FACTORY_L, _SCRSOUND_LAUNDERETTE_1, _SCRSOUND_LAUNDERETTE_2, _SCRSOUND_RESTAURANT_CHINATOWN_S, _SCRSOUND_RESTAURANT_CHINATOWN_L, _SCRSOUND_RESTAURANT_ITALY_S, _SCRSOUND_RESTAURANT_ITALY_L, _SCRSOUND_RESTAURANT_GENERIC_1_S, _SCRSOUND_RESTAURANT_GENERIC_1_L, _SCRSOUND_RESTAURANT_GENERIC_2_S, _SCRSOUND_RESTAURANT_GENERIC_2_L, _SCRSOUND_AIRPORT_ANNOUNCEMENT_S, _SCRSOUND_AIRPORT_ANNOUNCEMENT_L, _SCRSOUND_SHOP_LOOP_1, _SCRSOUND_SHOP_LOOP_2, _SCRSOUND_CINEMA_S, _SCRSOUND_CINEMA_L, _SCRSOUND_DOCKS_FOGHORN_S, _SCRSOUND_DOCKS_FOGHORN_L, _SCRSOUND_HOME_S, _SCRSOUND_HOME_L, _SCRSOUND_PIANO_BAR, _SCRSOUND_CLUB, SCRSOUND_PORN_CINEMA_1_S, _SCRSOUND_PORN_CINEMA_1_L, SCRSOUND_PORN_CINEMA_2_S, _SCRSOUND_PORN_CINEMA_2_L, SCRSOUND_PORN_CINEMA_3_S, _SCRSOUND_PORN_CINEMA_3_L, _SCRSOUND_BANK_ALARM_LOOP_S, SCRSOUND_BANK_ALARM_LOOP_L, _SCRSOUND_POLICE_BALL_LOOP_S, SCRSOUND_POLICE_BALL_LOOP_L, _SCRSOUND_RAVE_LOOP_INDUSTRIAL_S, SCRSOUND_RAVE_LOOP_INDUSTRIAL_L, _SCRSOUND_UNK_74, _SCRSOUND_UNK_75, _SCRSOUND_POLICE_CELL_BEATING_LOOP_S, SCRSOUND_POLICE_CELL_BEATING_LOOP_L, SCRSOUND_INJURED_PED_MALE_OUCH_S, SCRSOUND_INJURED_PED_MALE_OUCH_L, SCRSOUND_INJURED_PED_FEMALE_OUCH_S, SCRSOUND_INJURED_PED_FEMALE_OUCH_L, SCRSOUND_EVIDENCE_PICKUP, SCRSOUND_UNLOAD_GOLD, _SCRSOUND_RAVE_INDUSTRIAL_S, _SCRSOUND_RAVE_INDUSTRIAL_L, _SCRSOUND_RAVE_COMMERCIAL_S, _SCRSOUND_RAVE_COMMERCIAL_L, _SCRSOUND_RAVE_SUBURBAN_S, _SCRSOUND_RAVE_SUBURBAN_L, _SCRSOUND_GROAN_S, _SCRSOUND_GROAN_L, SCRSOUND_GATE_START_CLUNK, SCRSOUND_GATE_STOP_CLUNK, SCRSOUND_PART_MISSION_COMPLETE, SCRSOUND_CHUNKY_RUN_SHOUT, SCRSOUND_SECURITY_GUARD_RUN_AWAY_SHOUT, SCRSOUND_RACE_START_1, SCRSOUND_RACE_START_2, SCRSOUND_RACE_START_3, SCRSOUND_RACE_START_GO, SCRSOUND_SWAT_PED_SHOUT, SCRSOUND_PRETEND_FIRE_LOOP, SCRSOUND_AMMUNATION_CHAT_1, SCRSOUND_AMMUNATION_CHAT_2, SCRSOUND_AMMUNATION_CHAT_3, _SCRSOUND_BULLET_WALL_1, _SCRSOUND_BULLET_WALL_2, _SCRSOUND_BULLET_WALL_3, _SCRSOUND_UNK_109, _SCRSOUND_GLASSFX2_1, _SCRSOUND_GLASSFX2_2, _SCRSOUND_PHONE_RING, _SCRSOUND_UNK_113, _SCRSOUND_GLASS_SMASH_1, _SCRSOUND_GLASS_SMASH_2, _SCRSOUND_GLASS_CRACK, _SCRSOUND_GLASS_SHARD, _SCRSOUND_WOODEN_BOX_SMASH, _SCRSOUND_CARDBOARD_BOX_SMASH, _SCRSOUND_COL_CAR, _SCRSOUND_TYRE_BUMP, _SCRSOUND_BULLET_SHELL_HIT_GROUND_1, _SCRSOUND_BULLET_SHELL_HIT_GROUND_2, TOTAL_SCRSOUNDS, SCRSOUND_INVALID }; 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 LoadAllAudioScriptObjects(uint8 *buf, uint32 size); static void SaveAllAudioScriptObjects(uint8 *buf, uint32 *size); }; static_assert(sizeof(cAudioScriptObject) == 20, "cAudioScriptObject: error"); extern void PlayOneShotScriptObject(uint8 id, CVector const &pos);