internal static void ResizeAndFillArrays()
{
customSounds = new SoundEffect[nextSound[SoundType.Custom]];
customSoundInstances = new SoundEffectInstance[nextSound[SoundType.Custom]];
Array.Resize(ref Main.soundItem, nextSound[SoundType.Item]);
Array.Resize(ref Main.soundInstanceItem, nextSound[SoundType.Item]);
Array.Resize(ref Main.soundNPCHit, nextSound[SoundType.NPCHit]);
Array.Resize(ref Main.soundInstanceNPCHit, nextSound[SoundType.NPCHit]);
Array.Resize(ref Main.soundNPCKilled, nextSound[SoundType.NPCKilled]);
Array.Resize(ref Main.soundInstanceNPCKilled, nextSound[SoundType.NPCKilled]);
Array.Resize(ref Main.music, nextSound[SoundType.Music]);
Array.Resize(ref Main.musicFade, nextSound[SoundType.Music]);
foreach (SoundType type in Enum.GetValues(typeof(SoundType)))
{
foreach (string sound in sounds[type].Keys)
{
int slot = GetSoundSlot(type, sound);
if (type != SoundType.Music)
{
GetSoundArray(type)[slot] = ModLoader.GetSound(sound);
GetSoundInstanceArray(type)[slot] = GetSoundArray(type)[slot]?.CreateInstance() ?? null;
}
else
{
if (Main.music[slot] == null)
{
Main.music[slot] = new MusicWrapper();
}
Main.music[slot].ModMusic = ModLoader.GetSound(sound)?.CreateInstance() ?? null;
}
}
}
}