AudioUtilities method to set audio from AudioType, existing AudioClip, or file

This commit is contained in:
Nick 2022-07-13 20:21:40 -04:00
parent 4a01e93ac6
commit 2a3ffcc268

View File

@ -1,4 +1,6 @@
using System.Collections.Generic;
using OWML.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using UnityEngine;
@ -9,6 +11,34 @@ namespace NewHorizons.Utility
{
private static Dictionary<string, AudioClip> _loadedAudioClips = new Dictionary<string, AudioClip>();
public static void SetAudioClip(OWAudioSource source, string audio, IModBehaviour mod)
{
if (audio.Contains(".wav") || audio.Contains(".ogg"))
{
try
{
var clip = LoadAudio(mod.ModHelper.Manifest.ModFolderPath + "/" + audio);
source.clip = clip;
}
catch
{
Logger.LogError($"Could not load file {audio}");
}
}
try
{
var audioType = (AudioType)Enum.Parse(typeof(AudioType), audio);
source._audioLibraryClip = audioType;
}
catch
{
var audioClip = SearchUtilities.FindResourceOfTypeAndName<AudioClip>(audio);
if (audioClip == null) Logger.Log($"Couldn't find audio clip {audio}");
else source.clip = audioClip;
}
}
public static AudioClip LoadAudio(string path)
{
if (_loadedAudioClips.ContainsKey(path))