mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-28 18:37:53 -05:00
1362 lines
28 KiB
Plaintext
1362 lines
28 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\_audio_mix_manager.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: Console
|
|
* Function Count: 62
|
|
* Decompile Time: 1056 ms
|
|
* Timestamp: 10/27/2023 2:33:08 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
mm_init()
|
|
{
|
|
if(!isdefined(level._audio))
|
|
{
|
|
level._audio = spawnstruct();
|
|
}
|
|
|
|
if(!isdefined(level._audio.mix))
|
|
{
|
|
level._audio.mix = spawnstruct();
|
|
}
|
|
|
|
mmx_init_volmods();
|
|
level._audio.mix.use_string_table_presets = 0;
|
|
level._audio.mix.use_iw_presets = 0;
|
|
level._audio.mix.var_10C6 = 0;
|
|
level._audio.mix.debug_mix_mode = 0;
|
|
var_00 = 10;
|
|
thread mmx_mix_server_throttler(var_00);
|
|
thread mmx_volmod_server_throttler(var_00);
|
|
level._audio.mix.var_10C8 = "";
|
|
level._audio.mix.var_10C9 = "";
|
|
level._audio.mix.sticky_submixes = [];
|
|
if(!isdefined(level._audio.volmod_submixes))
|
|
{
|
|
level._audio.volmod_submixes = [];
|
|
}
|
|
|
|
level._audio.mix.volmod_submixblends = [];
|
|
level._audio.mix.preset_cache = [];
|
|
level._audio.mix.changed_presets = [];
|
|
level._audio.mix.headroom = 0.85;
|
|
level._audio.mix.blend_value = 0;
|
|
level._audio.mix.blend_name = "";
|
|
thread func_1106();
|
|
waittillframeend;
|
|
thread mmx_apply_initial_mix();
|
|
}
|
|
|
|
//Function Number: 2
|
|
mm_precache_preset(param_00)
|
|
{
|
|
func_111E(param_00);
|
|
}
|
|
|
|
//Function Number: 3
|
|
mm_set_headroom_mix(param_00,param_01,param_02)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode)
|
|
{
|
|
var_03 = 1;
|
|
if(isdefined(param_02))
|
|
{
|
|
var_03 = param_02;
|
|
}
|
|
|
|
level._audio.mix.headroom = param_01;
|
|
var_04 = func_111E(param_00);
|
|
if(isdefined(var_04))
|
|
{
|
|
level._audio.mix.headroom_preset = var_04;
|
|
mmx_update_mix(var_03,param_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_10D4()
|
|
{
|
|
level._audio.mix.debug_mix_mode = 1;
|
|
}
|
|
|
|
//Function Number: 5
|
|
mm_disable_debug_mode()
|
|
{
|
|
level._audio.mix.debug_mix_mode = 0;
|
|
}
|
|
|
|
//Function Number: 6
|
|
mm_use_string_table()
|
|
{
|
|
level._audio.mix.use_string_table_presets = 1;
|
|
level._audio.mix.use_iw_presets = 0;
|
|
}
|
|
|
|
//Function Number: 7
|
|
mm_start_preset(param_00,param_01)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
if(param_00 != level._audio.mix.var_10C8)
|
|
{
|
|
mmx_clear_submixes(0);
|
|
mmx_set_mix(param_00,param_01);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
mm_start_zone_preset(param_00)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
var_01 = func_111E(param_00);
|
|
if(!isdefined(var_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level._audio.mix.volmod_submixes["zone_mix"]))
|
|
{
|
|
foreach(var_04, var_03 in level._audio.mix.volmod_submixes["zone_mix"])
|
|
{
|
|
if(var_04 != "fade_time" && var_04 != "preset_name")
|
|
{
|
|
level._audio.mix.volmod_submixes["zone_mix"][var_04].current_volume = 1;
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level._audio.mix.volmod_submixes["zone_mix"] = [];
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes["zone_mix"]["preset_name"] = param_00;
|
|
foreach(var_04, var_03 in var_01)
|
|
{
|
|
if(var_04 != "fade_time" && var_04 != "name")
|
|
{
|
|
level._audio.mix.volmod_submixes["zone_mix"][var_04] = spawnstruct();
|
|
level._audio.mix.volmod_submixes["zone_mix"][var_04].current_volume = var_03;
|
|
level._audio.mix.volmod_submixes["zone_mix"][var_04].var_10DA = var_03;
|
|
}
|
|
}
|
|
|
|
var_06 = 1;
|
|
if(isdefined(var_01["fade_time"]))
|
|
{
|
|
var_06 = var_01["fade_time"];
|
|
}
|
|
|
|
mmx_update_mix(var_06,"zone_mix");
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_10DB(param_00)
|
|
{
|
|
var_01 = 1;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01 = param_00;
|
|
}
|
|
|
|
if(isdefined(level._audio.mix.volmod_submixes["zone_mix"]))
|
|
{
|
|
level._audio.mix.volmod_submixes["zone_mix"]["CLEAR"] = 1;
|
|
mmx_update_mix(var_01,"zone_mix");
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
mm_clear_submixes(param_00)
|
|
{
|
|
mmx_clear_submixes(1,param_00);
|
|
}
|
|
|
|
//Function Number: 11
|
|
mm_make_submix_sticky(param_00)
|
|
{
|
|
level._audio.mix.sticky_submixes[param_00] = 1;
|
|
}
|
|
|
|
//Function Number: 12
|
|
mm_make_submix_unsticky(param_00)
|
|
{
|
|
level._audio.mix.sticky_submixes[param_00] = undefined;
|
|
}
|
|
|
|
//Function Number: 13
|
|
mm_add_submix(param_00,param_01,param_02)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
mmx_set_mix(param_00,param_01,param_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
mm_add_submix_blend_to(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_submixblends[param_01]))
|
|
{
|
|
var_04 = mmx_create_submix_blend(undefined,param_00,param_02);
|
|
if(!isdefined(var_04))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level._audio.mix.volmod_submixblends[param_01] = var_04;
|
|
mmx_update_mix(param_03,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
mm_add_submix_blend(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_submixblends[param_02]))
|
|
{
|
|
var_05 = mmx_create_submix_blend(param_00,param_01,param_03);
|
|
if(!isdefined(var_05))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level._audio.mix.volmod_submixblends[param_02] = var_05;
|
|
mmx_update_mix(param_04,param_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
mm_set_submix_blend_value(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixblends[param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixblends[param_00].var_10E3 = clamp(param_01,0,1);
|
|
mmx_update_mix(param_02,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
func_10E4(param_00,param_01)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixblends[param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixblends[param_00].clear = 1;
|
|
mmx_update_mix(param_01,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
mm_scale_submix(param_00,param_01,param_02)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
func_10FE(param_00,param_01);
|
|
}
|
|
else
|
|
{
|
|
func_10FF(param_00,param_01);
|
|
}
|
|
|
|
mmx_update_mix(param_02,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_10E7(param_00,param_01)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00].current_volume = level._audio.mix.volmod_submixes[param_00].var_10DA;
|
|
mmx_update_mix(param_01,param_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
mm_clear_submix(param_00,param_01)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode && !level._audio.mix.var_10C6)
|
|
{
|
|
if(param_00 == "default")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level._audio.mix.sticky_submixes[param_00]) && isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00]["CLEAR"] = 1;
|
|
mmx_update_mix(param_01,param_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
mm_get_applied_preset_name()
|
|
{
|
|
return level._audio.mix.var_10C8;
|
|
}
|
|
|
|
//Function Number: 22
|
|
mm_add_dynamic_volmod_submix(param_00,param_01,param_02)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes[param_00] = [];
|
|
var_03 = 0;
|
|
var_04 = undefined;
|
|
foreach(var_06 in param_01)
|
|
{
|
|
if(maps\_audio::aud_is_even(var_03))
|
|
{
|
|
var_04 = var_06;
|
|
}
|
|
else
|
|
{
|
|
if(!mmx_is_volmod_channel(var_04))
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00] = undefined;
|
|
return;
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes[param_00][var_04] = spawnstruct();
|
|
level._audio.mix.volmod_submixes[param_00][var_04].current_volume = var_06;
|
|
level._audio.mix.volmod_submixes[param_00][var_04].var_10DA = var_06;
|
|
var_04 = undefined;
|
|
}
|
|
|
|
var_03++;
|
|
}
|
|
|
|
mmx_update_mix(param_02,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
mm_add_dynamic_submix(param_00,param_01,param_02)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode)
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00] = [];
|
|
var_03 = 0;
|
|
var_04 = undefined;
|
|
foreach(var_06 in param_01)
|
|
{
|
|
if(maps\_audio::aud_is_even(var_03))
|
|
{
|
|
var_04 = var_06;
|
|
}
|
|
else
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00][var_04] = spawnstruct();
|
|
level._audio.mix.volmod_submixes[param_00][var_04].current_volume = var_06;
|
|
level._audio.mix.volmod_submixes[param_00][var_04].var_10DA = var_06;
|
|
var_04 = undefined;
|
|
}
|
|
|
|
var_03++;
|
|
}
|
|
|
|
mmx_update_mix(param_02,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
mm_does_volmod_submix_exist(param_00)
|
|
{
|
|
return isdefined(level._audio.mix.volmod_submixes[param_00]);
|
|
}
|
|
|
|
//Function Number: 25
|
|
mm_mute_volmods(param_00,param_01)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode)
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_mute"] = [];
|
|
if(isstring(param_00))
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_submixes["mm_mute"][param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_mute"][param_00] = spawnstruct();
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes["mm_mute"][param_00].current_volume = 0;
|
|
level._audio.mix.volmod_submixes["mm_mute"][param_00].var_10DA = 1;
|
|
}
|
|
else
|
|
{
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_submixes["mm_mute"][var_03]))
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_mute"][var_03] = spawnstruct();
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes["mm_mute"][var_03].current_volume = 0;
|
|
level._audio.mix.volmod_submixes["mm_mute"][var_03].var_10DA = 1;
|
|
}
|
|
}
|
|
|
|
mmx_update_mix(param_01,"mm_mute");
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
mm_clear_volmod_mute_mix(param_00)
|
|
{
|
|
if(isdefined(level._audio.volmod_submixes["mm_mute"]))
|
|
{
|
|
level._audio.volmod_submixes["mm_mute"] = undefined;
|
|
mmx_update_mix(param_00,"mm_mute");
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
mm_solo_volmods(param_00,param_01)
|
|
{
|
|
if(!level._audio.mix.debug_mix_mode)
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_solo"] = [];
|
|
foreach(var_04, var_03 in level._audio.mix.volmod_vals)
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_solo"][var_04] = spawnstruct();
|
|
level._audio.mix.volmod_submixes["mm_solo"][var_04].current_volume = 0;
|
|
level._audio.mix.volmod_submixes["mm_solo"][var_04].var_10DA = 1;
|
|
}
|
|
|
|
if(isstring(param_00))
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_solo"][param_00].current_volume = 1;
|
|
}
|
|
else
|
|
{
|
|
foreach(var_06 in param_00)
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_solo"][var_06].current_volume = 1;
|
|
}
|
|
}
|
|
|
|
mmx_update_mix(param_01,"mm_solo");
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
mm_clear_solo_volmods(param_00)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes["mm_solo"]))
|
|
{
|
|
level._audio.mix.volmod_submixes["mm_solo"] = undefined;
|
|
mmx_update_mix(param_00,"mm_solo");
|
|
}
|
|
}
|
|
|
|
//Function Number: 29
|
|
mm_get_channel_names()
|
|
{
|
|
return level._audio.mix.channel_names;
|
|
}
|
|
|
|
//Function Number: 30
|
|
mm_get_num_volmod_submixes()
|
|
{
|
|
return level._audio.mix.volmod_submixes.size;
|
|
}
|
|
|
|
//Function Number: 31
|
|
mm_get_num_submixes()
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 32
|
|
func_10F7(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(isdefined(level._audio.mix.volmod_submixes) && param_00 < level._audio.mix.volmod_submixes.size)
|
|
{
|
|
var_02 = 0;
|
|
foreach(var_06, var_04 in level._audio.mix.volmod_submixes)
|
|
{
|
|
if(var_04.size > 0)
|
|
{
|
|
if(var_02 == param_00)
|
|
{
|
|
if(var_06 == "zone_mix")
|
|
{
|
|
var_05 = level._audio.mix.volmod_submixes["zone_mix"]["preset_name"];
|
|
var_06 = "zone_mix : " + var_05;
|
|
}
|
|
|
|
var_01 = var_06;
|
|
break;
|
|
}
|
|
|
|
var_02++;
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 33
|
|
mm_get_volmod_submix_by_name(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(getsubstr(param_00,0,8) == "zone_mix")
|
|
{
|
|
param_00 = "zone_mix";
|
|
}
|
|
|
|
if(isdefined(level._audio.mix.volmod_submixes) && isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
if(level._audio.mix.volmod_submixes[param_00].size > 0)
|
|
{
|
|
var_01 = level._audio.mix.volmod_submixes[param_00];
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 34
|
|
mm_set_default_volmod(param_00,param_01,param_02)
|
|
{
|
|
param_01 = clamp(param_01,0,1);
|
|
if(isdefined(level._audio.mix.volmod_submixes["default"]))
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes["default"][param_00]))
|
|
{
|
|
level._audio.mix.volmod_submixes["default"][param_00].current_volume = param_01;
|
|
mmx_update_mix(param_02,"default");
|
|
return;
|
|
}
|
|
|
|
maps\_audio::aud_print_error("Trying to set a volmod value on the default submix but the volmod doesn\'t exist: " + param_00);
|
|
return;
|
|
}
|
|
|
|
maps\_audio::aud_print_error("Trying to set a volmod value on the default submix but \"default\" doesn\'t exist.");
|
|
}
|
|
|
|
//Function Number: 35
|
|
mm_get_original_default_volmod(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(isdefined(level._audio.mix.volmod_submixes["default"]))
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes["default"][param_00]))
|
|
{
|
|
var_01 = level._audio.mix.volmod_submixes["default"][param_00].var_10DA;
|
|
}
|
|
else
|
|
{
|
|
maps\_audio::aud_print_error("Trying to set a volmod value on the default submix but the volmod doesn\'t exist: " + param_00);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
maps\_audio::aud_print_error("Trying to set a volmod value on the default submix but \"default\" doesn\'t exist.");
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 36
|
|
mm_restore_original_default_volmod(param_00,param_01)
|
|
{
|
|
var_02 = mm_get_original_default_volmod(param_00);
|
|
if(isdefined(var_02))
|
|
{
|
|
mm_set_default_volmod(param_00,var_02,param_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 37
|
|
mmx_set_mix(param_00,param_01,param_02)
|
|
{
|
|
func_10FF(param_00,param_02);
|
|
level._audio.mix.var_10C9 = level._audio.mix.var_10C8;
|
|
level._audio.mix.var_10C8 = param_00;
|
|
mmx_update_mix(param_01,param_00);
|
|
}
|
|
|
|
//Function Number: 38
|
|
func_10FE(param_00,param_01)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
foreach(var_04, var_03 in level._audio.mix.volmod_submixes[param_00])
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00][var_04].current_volume = var_03.var_10DA * param_01;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 39
|
|
func_10FF(param_00,param_01)
|
|
{
|
|
if(param_00 == "default")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level._audio.mix.volmod_submixes[param_00]))
|
|
{
|
|
var_02 = func_111E(param_00);
|
|
if(!isdefined(var_02))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = 1;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_03 = param_01;
|
|
var_03 = max(var_03,0);
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes[param_00] = [];
|
|
foreach(var_06, var_05 in var_02)
|
|
{
|
|
if(var_06 != "name" && var_06 != "fade_time")
|
|
{
|
|
level._audio.mix.volmod_submixes[param_00][var_06] = spawnstruct();
|
|
level._audio.mix.volmod_submixes[param_00][var_06].current_volume = var_05 * var_03;
|
|
level._audio.mix.volmod_submixes[param_00][var_06].var_10DA = var_05;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 40
|
|
mmx_create_submix_blend(param_00,param_01,param_02)
|
|
{
|
|
var_03 = 0;
|
|
if(isdefined(param_02))
|
|
{
|
|
var_03 = clamp(param_02,0,1);
|
|
}
|
|
|
|
var_04 = spawnstruct();
|
|
var_05 = func_111E(param_01);
|
|
if(!isdefined(var_05))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04.presetb = var_05;
|
|
var_04.presetb["fade_time"] = undefined;
|
|
var_04.presetb["name"] = undefined;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_06 = func_111E(param_00);
|
|
if(!isdefined(var_06))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04.preseta = var_06;
|
|
var_04.preseta["fade_time"] = undefined;
|
|
var_04.preseta["name"] = undefined;
|
|
}
|
|
else
|
|
{
|
|
var_04.preseta = [];
|
|
foreach(var_09, var_08 in var_04.presetb)
|
|
{
|
|
var_04.preseta[var_09] = 1;
|
|
}
|
|
}
|
|
|
|
var_04.var_10E3 = var_03;
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 41
|
|
mmx_clear_submixes(param_00,param_01)
|
|
{
|
|
var_02 = 1;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_02 = param_00;
|
|
}
|
|
|
|
foreach(var_05, var_04 in level._audio.mix.volmod_submixes)
|
|
{
|
|
if(var_05 != "default" && var_05 != "zone_mix" && !isdefined(level._audio.mix.sticky_submixes[var_05]) && var_05 != "mm_solo" && var_05 != "mm_mute")
|
|
{
|
|
level._audio.mix.volmod_submixes[var_05]["CLEAR"] = 1;
|
|
level._audio.mix.changed_presets[var_05] = 1;
|
|
}
|
|
}
|
|
|
|
if(var_02)
|
|
{
|
|
mmx_update_mix(param_01,undefined);
|
|
}
|
|
}
|
|
|
|
//Function Number: 42
|
|
mmx_update_mix(param_00,param_01)
|
|
{
|
|
level._audio.mix.last_fade_time = param_00;
|
|
if(isdefined(param_01))
|
|
{
|
|
level._audio.mix.changed_presets[param_01] = 1;
|
|
}
|
|
|
|
level notify("mix_update");
|
|
}
|
|
|
|
//Function Number: 43
|
|
func_1106()
|
|
{
|
|
level waittill("mix_update");
|
|
for(;;)
|
|
{
|
|
waittillframeend;
|
|
var_00 = 0;
|
|
if(isdefined(level._audio.mix.last_fade_time))
|
|
{
|
|
var_00 = level._audio.mix.last_fade_time;
|
|
}
|
|
|
|
func_1109(var_00);
|
|
level waittill("mix_update");
|
|
}
|
|
}
|
|
|
|
//Function Number: 44
|
|
mmx_mix_in_non_changed_submixes()
|
|
{
|
|
var_00 = [];
|
|
foreach(var_03, var_02 in level._audio.mix.volmod_submixes)
|
|
{
|
|
if(!isdefined(level._audio.mix.changed_presets[var_03]))
|
|
{
|
|
var_00[var_03] = 1;
|
|
}
|
|
}
|
|
|
|
foreach(var_08, var_05 in level._audio.mix.volume_products)
|
|
{
|
|
foreach(var_03, var_07 in var_00)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[var_03][var_08]))
|
|
{
|
|
level._audio.mix.volume_products[var_08] = level._audio.mix.volume_products[var_08] * level._audio.mix.volmod_submixes[var_03][var_08].current_volume;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 45
|
|
func_1109(param_00)
|
|
{
|
|
var_01 = 1;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01 = param_00;
|
|
var_01 = max(var_01,0);
|
|
}
|
|
|
|
level._audio.mix.volume_products = undefined;
|
|
mmx_set_volume_products_volmods(0);
|
|
mmx_mix_in_non_changed_submixes();
|
|
var_02 = 0;
|
|
foreach(var_05, var_04 in level._audio.mix.volume_products)
|
|
{
|
|
if(var_05 != "voiceover_critical" && var_05 != "fullvolume")
|
|
{
|
|
var_04 = var_04 * level._audio.mix.headroom;
|
|
}
|
|
|
|
if(var_04 != level._audio.mix.volmod_vals[var_05].volume)
|
|
{
|
|
var_02 = 1;
|
|
level._audio.mix.volmod_vals[var_05].volume = var_04;
|
|
level._audio.mix.volmod_vals[var_05].fade_time = var_01;
|
|
mmx_volmod_setting_enqueue(var_05,var_04,var_01);
|
|
}
|
|
}
|
|
|
|
level._audio.mix.changed_presets = [];
|
|
if(var_02)
|
|
{
|
|
level notify("aud_new_volmod_set");
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
mmx_set_volume_products_volmods(param_00)
|
|
{
|
|
level._audio.mix.volume_products = [];
|
|
var_01 = [];
|
|
foreach(var_10, var_03 in level._audio.mix.changed_presets)
|
|
{
|
|
if(isdefined(level._audio.mix.volmod_submixes[var_10]))
|
|
{
|
|
var_04 = level._audio.mix.volmod_submixes[var_10];
|
|
var_04["name"] = undefined;
|
|
var_04["fade_time"] = undefined;
|
|
var_04["preset_name"] = undefined;
|
|
var_05 = 0;
|
|
if(isdefined(var_04["CLEAR"]))
|
|
{
|
|
var_05 = 1;
|
|
}
|
|
|
|
var_04["CLEAR"] = undefined;
|
|
foreach(var_08, var_07 in var_04)
|
|
{
|
|
if(isdefined(level._audio.mix.volume_products[var_08]) && !var_05)
|
|
{
|
|
level._audio.mix.volume_products[var_08] = level._audio.mix.volume_products[var_08] * var_07.current_volume;
|
|
continue;
|
|
}
|
|
|
|
if(var_05 && !isdefined(level._audio.mix.volume_products[var_08]))
|
|
{
|
|
level._audio.mix.volume_products[var_08] = 1;
|
|
continue;
|
|
}
|
|
|
|
if(!var_05)
|
|
{
|
|
level._audio.mix.volume_products[var_08] = var_07.current_volume;
|
|
}
|
|
}
|
|
|
|
if(var_05)
|
|
{
|
|
level._audio.mix.volmod_submixes[var_10] = undefined;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level._audio.mix.volmod_submixblends[var_10]))
|
|
{
|
|
var_09 = level._audio.mix.volmod_submixblends[var_10];
|
|
var_05 = 0;
|
|
if(isdefined(var_09.clear))
|
|
{
|
|
var_05 = 1;
|
|
}
|
|
|
|
foreach(var_08, var_0B in var_09.preseta)
|
|
{
|
|
if(!isdefined(var_01[var_08]))
|
|
{
|
|
var_01[var_08] = 1;
|
|
}
|
|
|
|
if(!var_05)
|
|
{
|
|
var_0C = var_09.presetb[var_08];
|
|
var_0D = var_09.preseta[var_08];
|
|
var_0E = var_09.var_10E3;
|
|
var_0F = var_0E * var_0C - var_0D + var_0D;
|
|
var_01[var_08] = var_01[var_08] * var_0F;
|
|
}
|
|
}
|
|
|
|
if(var_05)
|
|
{
|
|
level._audio.mix.volmod_submixblends[var_10] = undefined;
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach(var_12, var_0B in var_01)
|
|
{
|
|
if(isdefined(level._audio.mix.volume_products[var_12]))
|
|
{
|
|
level._audio.mix.volume_products[var_12] = level._audio.mix.volume_products[var_12] * var_0B;
|
|
continue;
|
|
}
|
|
|
|
level._audio.mix.volume_products[var_12] = var_0B;
|
|
}
|
|
}
|
|
|
|
//Function Number: 47
|
|
mmx_apply_initial_mix()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
}
|
|
|
|
//Function Number: 48
|
|
mmx_apply_debug_mix(param_00)
|
|
{
|
|
if(level._audio.mix.debug_mix_mode)
|
|
{
|
|
while(!isdefined(level.player))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
mmx_set_mix(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
mmx_volmod_setting_enqueue(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_queue))
|
|
{
|
|
level._audio.mix.volmod_queue = [];
|
|
level._audio.mix.volmod_index = 0;
|
|
}
|
|
|
|
var_03 = 0;
|
|
foreach(var_06, var_05 in level._audio.mix.volmod_queue)
|
|
{
|
|
if(var_05["volmod"] == param_00)
|
|
{
|
|
var_03 = 1;
|
|
level._audio.mix.volmod_queue[var_06]["volume"] = param_01;
|
|
level._audio.mix.volmod_queue[var_06]["fade_time"] = param_02;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!var_03)
|
|
{
|
|
var_07 = [];
|
|
level._audio.mix.volmod_queue[level._audio.mix.volmod_index] = var_41;
|
|
level._audio.mix.volmod_index++ = var_41["fade_time"];
|
|
}
|
|
}
|
|
|
|
//Function Number: 50
|
|
mmx_mix_setting_enqueue(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(level._audio.mix.var_1113))
|
|
{
|
|
level._audio.mix.var_1113 = [];
|
|
level._audio.mix.index = 0;
|
|
}
|
|
|
|
var_03 = 0;
|
|
foreach(var_06, var_05 in level._audio.mix.var_1113)
|
|
{
|
|
if(var_05["channel"] == param_00)
|
|
{
|
|
var_03 = 1;
|
|
level._audio.mix.var_1113[var_06]["volume"] = param_01;
|
|
level._audio.mix.var_1113[var_06]["fade_time"] = param_02;
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!var_03)
|
|
{
|
|
var_07 = [];
|
|
level._audio.mix.var_1113[level._audio.mix.index] = var_41;
|
|
level._audio.mix.index++ = var_41["fade_time"];
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
mmx_volmod_server_throttler(param_00)
|
|
{
|
|
if(!isdefined(level._audio.mix.volmod_queue))
|
|
{
|
|
level._audio.mix.volmod_queue = [];
|
|
level._audio.mix.volmod_index = 0;
|
|
}
|
|
|
|
var_01 = 5;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01 = param_00;
|
|
var_01 = max(var_01,1);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level waittill("aud_new_volmod_set");
|
|
while(level._audio.mix.volmod_queue.size > 0)
|
|
{
|
|
var_02 = 0;
|
|
var_03 = [];
|
|
foreach(var_0A, var_05 in level._audio.mix.volmod_queue)
|
|
{
|
|
if(var_02 < var_01)
|
|
{
|
|
var_02++;
|
|
var_03[var_03.size] = var_0A;
|
|
var_06 = level._audio.mix.volmod_queue[var_0A];
|
|
var_07 = var_06["volmod"];
|
|
var_08 = var_06["volume"];
|
|
var_09 = var_06["fade_time"];
|
|
var_08 = clamp(var_08,0,1);
|
|
level.player setvolmod(var_07,var_08,var_09);
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
for(var_0B = 0;var_0B < var_03.size;var_0B++)
|
|
{
|
|
var_0C = var_03[var_0B];
|
|
level._audio.mix.volmod_queue[var_0C] = undefined;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 52
|
|
mmx_mix_server_throttler(param_00)
|
|
{
|
|
if(!isdefined(level._audio.mix.var_1113))
|
|
{
|
|
level._audio.mix.var_1113 = [];
|
|
level._audio.mix.index = 0;
|
|
}
|
|
|
|
var_01 = 5;
|
|
if(isdefined(param_00))
|
|
{
|
|
var_01 = param_00;
|
|
var_01 = max(var_01,1);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
level waittill("aud_new_mix_set");
|
|
while(level._audio.mix.var_1113.size > 0)
|
|
{
|
|
var_02 = 0;
|
|
var_03 = [];
|
|
foreach(var_0A, var_05 in level._audio.mix.var_1113)
|
|
{
|
|
if(var_02 < var_01)
|
|
{
|
|
var_02++;
|
|
var_03[var_03.size] = var_0A;
|
|
var_06 = level._audio.mix.var_1113[var_0A];
|
|
var_07 = var_06["channel"];
|
|
var_08 = var_06["volume"];
|
|
var_09 = var_06["fade_time"];
|
|
var_08 = clamp(var_08,0,1);
|
|
level.player setchannelvolume(var_07,var_08,var_09);
|
|
continue;
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
for(var_0B = 0;var_0B < var_03.size;var_0B++)
|
|
{
|
|
var_0C = var_03[var_0B];
|
|
level._audio.mix.var_1113[var_0C] = undefined;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 53
|
|
mmx_get_preset_from_string_table(param_00,param_01)
|
|
{
|
|
var_02 = [];
|
|
var_03 = maps\_audio::get_mix_stringtable();
|
|
var_04 = "soundtables/common_mix.csv";
|
|
if(!isdefined(level._audio.mix.preset_cache))
|
|
{
|
|
level._audio.mix.preset_cache = [];
|
|
}
|
|
|
|
if(isdefined(level._audio.mix.preset_cache[param_00]))
|
|
{
|
|
var_02 = level._audio.mix.preset_cache[param_00];
|
|
}
|
|
else
|
|
{
|
|
if(param_01)
|
|
{
|
|
var_02 = mmx_get_mix_preset_from_stringtable_internal(var_03,param_00,0);
|
|
}
|
|
|
|
if(!isdefined(var_02) || var_02.size == 0)
|
|
{
|
|
var_02 = mmx_get_mix_preset_from_stringtable_internal(var_04,param_00,1);
|
|
}
|
|
|
|
if(!isdefined(var_02) || var_02.size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level._audio.mix.preset_cache[param_00] = var_02;
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 54
|
|
mmx_get_mix_preset_from_stringtable_internal(param_00,param_01,param_02)
|
|
{
|
|
var_03 = 4;
|
|
var_04 = "";
|
|
var_05 = 0;
|
|
var_06 = 0;
|
|
var_07 = 0;
|
|
var_08 = undefined;
|
|
var_09 = [];
|
|
if(!isdefined(level._audio.mix.var_1119))
|
|
{
|
|
level._audio.mix.var_1119 = [];
|
|
}
|
|
|
|
if(!isdefined(level._audio.mix.var_1119[param_00]))
|
|
{
|
|
level._audio.mix.var_1119[param_00] = [];
|
|
for(var_0A = 1;var_0A < var_03;var_0A++)
|
|
{
|
|
var_0B = tablelookupbyrow(param_00,0,var_0A);
|
|
level._audio.mix.var_1119[param_00][var_0B] = var_0A;
|
|
}
|
|
}
|
|
|
|
var_0C = maps\_audio::func_111A("mix",param_01,param_02);
|
|
if(var_0C != -1)
|
|
{
|
|
var_05 = var_0C;
|
|
}
|
|
else if((param_02 && maps\_audio::aud_is_common_indexed()) || !param_02 && maps\_audio::aud_is_local_indexed())
|
|
{
|
|
return var_09;
|
|
}
|
|
|
|
var_0D = 0;
|
|
while(var_04 != "EOF" && var_07 < 10)
|
|
{
|
|
var_04 = tablelookupbyrow(param_00,var_05,0);
|
|
if(var_04 != "")
|
|
{
|
|
var_07 = 0;
|
|
}
|
|
|
|
while(var_04 == param_01)
|
|
{
|
|
var_06 = 1;
|
|
if(!isdefined(var_08))
|
|
{
|
|
var_0E = level._audio.mix.var_1119[param_00]["fade_time"];
|
|
var_08 = tablelookupbyrow(param_00,var_05,var_0E);
|
|
if(!isdefined(var_08) || isdefined(var_08) && var_08 == "")
|
|
{
|
|
var_08 = 1;
|
|
}
|
|
}
|
|
|
|
var_0F = level._audio.mix.var_1119[param_00]["channels"];
|
|
var_10 = level._audio.mix.var_1119[param_00]["value"];
|
|
var_11 = tablelookupbyrow(param_00,var_05,var_0F);
|
|
var_12 = tablelookupbyrow(param_00,var_05,var_10);
|
|
if(var_11 == "set_all" || var_11 == "setall")
|
|
{
|
|
if(float(var_12) < 1)
|
|
{
|
|
var_09 = volmod_mix_with_all_channels_at(float(var_12));
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if(!isdefined(level._audio.mix.volmodfile[var_11]))
|
|
{
|
|
maps\_audio::aud_print_error("In soundtable " + param_00 + ", " + param_01 + " uses a volmod group name that doesn\'t exist in the volmodgroups.csv file.");
|
|
return;
|
|
}
|
|
|
|
var_09[var_11] = float(var_12);
|
|
}
|
|
|
|
var_05++;
|
|
var_04 = tablelookupbyrow(param_00,var_05,0);
|
|
var_0D++;
|
|
}
|
|
|
|
var_07++;
|
|
if(var_06)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_05++;
|
|
}
|
|
|
|
if(var_06 && isdefined(var_08))
|
|
{
|
|
var_09["fade_time"] = float(var_08);
|
|
}
|
|
|
|
return var_09;
|
|
}
|
|
|
|
//Function Number: 55
|
|
func_111E(param_00)
|
|
{
|
|
if(!isdefined(level._audio.mix.preset_cache))
|
|
{
|
|
level._audio.mix.preset_cache = [];
|
|
}
|
|
|
|
var_01 = [];
|
|
if(isdefined(level._audio.mix.preset_cache[param_00]))
|
|
{
|
|
var_01 = level._audio.mix.preset_cache[param_00];
|
|
}
|
|
else
|
|
{
|
|
var_01 = undefined;
|
|
if(level._audio.mix.use_string_table_presets)
|
|
{
|
|
var_01 = mmx_get_preset_from_string_table(param_00,1);
|
|
}
|
|
else
|
|
{
|
|
var_01 = mmx_get_preset_from_string_table(param_00,0);
|
|
if(!isdefined(var_01) || var_01.size == 0)
|
|
{
|
|
var_01 = maps\_audio::audio_presets_mix(param_00,var_01);
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_01) || var_01.size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(var_41["fade_time"]))
|
|
{
|
|
}
|
|
|
|
level._audio.mix.preset_cache[var_01] = var_41;
|
|
}
|
|
|
|
return var_41;
|
|
}
|
|
|
|
//Function Number: 56
|
|
mmx_init_volmods()
|
|
{
|
|
if(!isdefined(level._audio.mix.volmodfile))
|
|
{
|
|
mmx_parse_volumemodgroups_csv();
|
|
}
|
|
|
|
level._audio.mix.volmod_vals = [];
|
|
foreach(var_02, var_01 in level._audio.mix.volmodfile)
|
|
{
|
|
level._audio.mix.volmod_vals[var_02] = spawnstruct();
|
|
level._audio.mix.volmod_vals[var_02].volume = var_01;
|
|
level._audio.mix.volmod_vals[var_02].fade_time = 0;
|
|
}
|
|
|
|
mmx_init_channel_names();
|
|
}
|
|
|
|
//Function Number: 57
|
|
mmx_init_channel_names()
|
|
{
|
|
if(!isdefined(level._audio.mix.channel_names))
|
|
{
|
|
var_00 = [];
|
|
level._audio.mix.channel_names = var_41;
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
mmx_get_channel_volumes()
|
|
{
|
|
return level._audio.mix.channel_volumes;
|
|
}
|
|
|
|
//Function Number: 59
|
|
volmod_mix_with_all_channels_at(param_00)
|
|
{
|
|
var_01 = [];
|
|
foreach(var_04, var_03 in level._audio.mix.volmodfile)
|
|
{
|
|
if(var_04 != "hud" && var_04 != "interface" && var_04 != "interface_music")
|
|
{
|
|
var_01[var_04] = param_00;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 60
|
|
mmx_parse_volumemodgroups_csv()
|
|
{
|
|
var_00 = "soundaliases/volumemodgroups.svmod";
|
|
level._audio.mix.volmodfile = [];
|
|
var_01 = 10;
|
|
var_02 = 0;
|
|
for(var_03 = 0;var_02 < var_01;var_03++)
|
|
{
|
|
var_04 = tablelookupbyrow(var_00,var_03,0);
|
|
if(var_04 == "")
|
|
{
|
|
var_02++;
|
|
continue;
|
|
}
|
|
|
|
var_05 = getsubstr(var_04,0,0);
|
|
if(var_05 == "#")
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_06 = tablelookupbyrow(var_00,var_03,1);
|
|
level._audio.mix.volmodfile[var_04] = float(var_06);
|
|
}
|
|
|
|
if(!isdefined(level._audio.volmod_submixes))
|
|
{
|
|
level._audio.volmod_submixes = [];
|
|
}
|
|
|
|
level._audio.mix.volmod_submixes["default"] = [];
|
|
foreach(var_04, var_08 in level._audio.mix.volmodfile)
|
|
{
|
|
level._audio.mix.volmod_submixes["default"][var_04] = spawnstruct();
|
|
level._audio.mix.volmod_submixes["default"][var_04].current_volume = var_08;
|
|
level._audio.mix.volmod_submixes["default"][var_04].var_10DA = var_08;
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
mmx_is_mix_channel(param_00)
|
|
{
|
|
return isdefined(level._audio.mix.channel_names[param_00]);
|
|
}
|
|
|
|
//Function Number: 62
|
|
mmx_is_volmod_channel(param_00)
|
|
{
|
|
return isdefined(level._audio.mix.volmodfile[param_00]);
|
|
} |