generated from Raicuparta/ow-mod-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
EuropeTimes.cs
59 lines (49 loc) · 2.37 KB
/
EuropeTimes.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
using OWML.Common;
using OWML.ModHelper;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace EuropeTimes
{
public class EuropeTimes : ModBehaviour
{
private static EuropeTimes instance;
private void Awake()
{
instance = this;
}
private void Start()
{
ModHelper.Console.WriteLine(nameof(EuropeTimes) + " has loaded!");
GetClip(); //load audio
ModHelper.HarmonyHelper.AddPostfix<AudioManager>(nameof(AudioManager.Awake), typeof(EuropeTimes), nameof(EuropeTimes.ReplaceInAudioManager));
ModHelper.HarmonyHelper.AddPostfix<AudioLibrary>(nameof(AudioLibrary.BuildAudioEntryDictionary), typeof(EuropeTimes), nameof(EuropeTimes.ReplaceInAudioLibrary));
}
public const int EndOfTime = (int)AudioType.EndOfTime;
public static void ReplaceInAudioManager(AudioManager __instance)
{
//The audio dictionary is a dictionary containing all of the sounds, matched to the int value of the AudioType enum
if (__instance._audioLibraryDict.ContainsKey(EndOfTime))
__instance._audioLibraryDict[EndOfTime] = new AudioLibrary.AudioEntry(AudioType.EndOfTime, GetClips(), 0.2f);
else
__instance._audioLibraryDict.Add(EndOfTime, new AudioLibrary.AudioEntry(AudioType.EndOfTime, GetClips(), 0.2f));
}
public static void ReplaceInAudioLibrary(ref Dictionary<int, AudioLibrary.AudioEntry> __result)
{
//The audio dictionary is a dictionary containing all of the sounds, matched to the int value of the AudioType enum
if (__result.ContainsKey(EndOfTime))
__result[EndOfTime] = new AudioLibrary.AudioEntry(AudioType.EndOfTime, GetClips(), 0.2f);
else
__result.Add(EndOfTime, new AudioLibrary.AudioEntry(AudioType.EndOfTime, GetClips(), 0.2f));
}
private static AudioClip clip;
private static AudioClip[] GetClips() => new AudioClip[1] { GetClip() };
private static AudioClip GetClip()
{
if (clip != null) return clip; //If it's already loaded, give the one in memory
AudioClip audioClip = instance.ModHelper.Assets.GetAudio("Europe_Times.mp3"); //Else load it
clip = audioClip;
return audioClip;
}
}
}