1
0
Fork 0

convert indentation to tabs

This commit is contained in:
ivan tkachenko 2025-06-17 15:52:10 +03:00
parent df4418b040
commit 566bc0993e
1 changed files with 123 additions and 123 deletions

View File

@ -10,9 +10,9 @@ using UnityEngine.Networking;
namespace MuzikaGromche namespace MuzikaGromche
{ {
[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)] [BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
public class Plugin : BaseUnityPlugin public class Plugin : BaseUnityPlugin
{ {
public static Track[] Tracks = [ public static Track[] Tracks = [
new Track new Track
{ {
@ -79,133 +79,133 @@ namespace MuzikaGromche
Logger.LogError("Could not load audio file"); Logger.LogError("Could not load audio file");
} }
} }
} }
public class Track public class Track
{ {
public string Name; public string Name;
public float WindUpTimer; public float WindUpTimer;
public float Bpm; public float Bpm;
public AudioClip LoadedStart; public AudioClip LoadedStart;
public AudioClip LoadedLoop; public AudioClip LoadedLoop;
} }
[HarmonyPatch(typeof(JesterAI))] [HarmonyPatch(typeof(JesterAI))]
internal class JesterPatch internal class JesterPatch
{ {
[HarmonyPatch("Update")] [HarmonyPatch("Update")]
[HarmonyPrefix] [HarmonyPrefix]
public static void DoNotStopTheMusicPrefix(JesterAI __instance, out State __state) public static void DoNotStopTheMusicPrefix(JesterAI __instance, out State __state)
{ {
__state = new State(); __state = new State();
__state.prevStateindex = __instance.previousState; __state.prevStateindex = __instance.previousState;
if (__instance.currentBehaviourStateIndex == 2 && __instance.previousBehaviourStateIndex != 2) { if (__instance.currentBehaviourStateIndex == 2 && __instance.previousBehaviourStateIndex != 2) {
// if just popped out // if just popped out
// then override farAudio so that vanilla logic does not stop the music // then override farAudio so that vanilla logic does not stop the music
__state.farAudio = __instance.farAudio; __state.farAudio = __instance.farAudio;
__instance.farAudio = __instance.creatureVoice; __instance.farAudio = __instance.creatureVoice;
} }
} }
static List<Color> colors = [Color.magenta, Color.cyan, Color.green, Color.yellow]; static List<Color> colors = [Color.magenta, Color.cyan, Color.green, Color.yellow];
public static IEnumerator rotateColors() public static IEnumerator rotateColors()
{ {
Debug.Log("Starting color rotation"); Debug.Log("Starting color rotation");
var i = 0; var i = 0;
while (true) while (true)
{ {
var color = colors[i]; var color = colors[i];
Debug.Log("Chose color " + color); Debug.Log("Chose color " + color);
foreach (var light in RoundManager.Instance.allPoweredLights) foreach (var light in RoundManager.Instance.allPoweredLights)
{ {
light.color = color; light.color = color;
} }
i += 1; i += 1;
if (i >= colors.Count) i = 0; if (i >= colors.Count) i = 0;
yield return new WaitForSeconds(60f / Plugin.CurrentTrack.Bpm); yield return new WaitForSeconds(60f / Plugin.CurrentTrack.Bpm);
} }
} }
[HarmonyPatch("Update")] [HarmonyPatch("Update")]
[HarmonyPostfix] [HarmonyPostfix]
public static void DoNotStopTheMusic(JesterAI __instance, State __state) public static void DoNotStopTheMusic(JesterAI __instance, State __state)
{ {
if (__state.farAudio != null) if (__state.farAudio != null)
{ {
__instance.farAudio = __state.farAudio; __instance.farAudio = __state.farAudio;
} }
if (__instance.currentBehaviourStateIndex is 1 && __state.prevStateindex != 1) if (__instance.currentBehaviourStateIndex is 1 && __state.prevStateindex != 1)
{ {
// if just started winding up // if just started winding up
// then stop the default music... // then stop the default music...
__instance.farAudio.Stop(); __instance.farAudio.Stop();
__instance.creatureVoice.Stop(); __instance.creatureVoice.Stop();
// ...and start modded music // ...and start modded music
var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed; var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed;
var sha = SHA256.Create(); var sha = SHA256.Create();
var hash = sha.ComputeHash(BitConverter.GetBytes(seed)); var hash = sha.ComputeHash(BitConverter.GetBytes(seed));
var trackId = 0; var trackId = 0;
foreach (var t in hash) foreach (var t in hash)
{ {
// modulus division on byte array // modulus division on byte array
trackId *= 256 % Plugin.Tracks.Length; trackId *= 256 % Plugin.Tracks.Length;
trackId %= Plugin.Tracks.Length; trackId %= Plugin.Tracks.Length;
trackId += t % Plugin.Tracks.Length; trackId += t % Plugin.Tracks.Length;
trackId %= Plugin.Tracks.Length; trackId %= Plugin.Tracks.Length;
} }
Debug.Log($"Seed is {seed}, chosen track is {trackId} out of {Plugin.Tracks.Length} tracks"); Debug.Log($"Seed is {seed}, chosen track is {trackId} out of {Plugin.Tracks.Length} tracks");
Plugin.CurrentTrack = Plugin.Tracks[trackId]; Plugin.CurrentTrack = Plugin.Tracks[trackId];
__instance.popUpTimer = Plugin.CurrentTrack.WindUpTimer; __instance.popUpTimer = Plugin.CurrentTrack.WindUpTimer;
__instance.farAudio.maxDistance = 150; __instance.farAudio.maxDistance = 150;
__instance.farAudio.clip = Plugin.CurrentTrack.LoadedStart; __instance.farAudio.clip = Plugin.CurrentTrack.LoadedStart;
__instance.farAudio.loop = false; __instance.farAudio.loop = false;
Debug.Log($"Playing start music: maxDistance: {__instance.farAudio.maxDistance}, minDistance: {__instance.farAudio.minDistance}, volume: {__instance.farAudio.volume}, spread: {__instance.farAudio.spread}"); Debug.Log($"Playing start music: maxDistance: {__instance.farAudio.maxDistance}, minDistance: {__instance.farAudio.minDistance}, volume: {__instance.farAudio.volume}, spread: {__instance.farAudio.spread}");
__instance.farAudio.Play(); __instance.farAudio.Play();
} }
if (__instance.currentBehaviourStateIndex is 2 && __state.prevStateindex != 2) if (__instance.currentBehaviourStateIndex is 2 && __state.prevStateindex != 2)
{ {
__instance.creatureVoice.Stop(); __instance.creatureVoice.Stop();
if (Plugin.JesterLightSwitching != null) { if (Plugin.JesterLightSwitching != null) {
__instance.StopCoroutine(Plugin.JesterLightSwitching); __instance.StopCoroutine(Plugin.JesterLightSwitching);
Plugin.JesterLightSwitching = null; Plugin.JesterLightSwitching = null;
} }
Plugin.JesterLightSwitching = __instance.StartCoroutine(rotateColors()); Plugin.JesterLightSwitching = __instance.StartCoroutine(rotateColors());
} }
if (__instance.currentBehaviourStateIndex != 2 && __state.prevStateindex == 2) if (__instance.currentBehaviourStateIndex != 2 && __state.prevStateindex == 2)
{ {
if (Plugin.JesterLightSwitching != null) { if (Plugin.JesterLightSwitching != null) {
__instance.StopCoroutine(Plugin.JesterLightSwitching); __instance.StopCoroutine(Plugin.JesterLightSwitching);
Plugin.JesterLightSwitching = null; Plugin.JesterLightSwitching = null;
} }
foreach (var light in RoundManager.Instance.allPoweredLights) foreach (var light in RoundManager.Instance.allPoweredLights)
{ {
light.color = Color.white; light.color = Color.white;
} }
} }
if (__instance.currentBehaviourStateIndex is 2 && !__instance.creatureVoice.isPlaying) if (__instance.currentBehaviourStateIndex is 2 && !__instance.creatureVoice.isPlaying)
{ {
__instance.creatureVoice.maxDistance = 150; __instance.creatureVoice.maxDistance = 150;
__instance.creatureVoice.clip = Plugin.CurrentTrack.LoadedLoop; __instance.creatureVoice.clip = Plugin.CurrentTrack.LoadedLoop;
var time = __instance.farAudio.time; var time = __instance.farAudio.time;
var delay = Plugin.CurrentTrack.LoadedStart.length - time; var delay = Plugin.CurrentTrack.LoadedStart.length - time;
Debug.Log($"Start length: {Plugin.CurrentTrack.LoadedStart.length}; played time: {time}"); Debug.Log($"Start length: {Plugin.CurrentTrack.LoadedStart.length}; played time: {time}");
Debug.Log($"Playing loop music: maxDistance: {__instance.creatureVoice.maxDistance}, minDistance: {__instance.creatureVoice.minDistance}, volume: {__instance.creatureVoice.volume}, spread: {__instance.creatureVoice.spread}, in seconds: {delay}"); Debug.Log($"Playing loop music: maxDistance: {__instance.creatureVoice.maxDistance}, minDistance: {__instance.creatureVoice.minDistance}, volume: {__instance.creatureVoice.volume}, spread: {__instance.creatureVoice.spread}, in seconds: {delay}");
__instance.creatureVoice.PlayDelayed(delay); __instance.creatureVoice.PlayDelayed(delay);
} }
} }
} }
internal class State internal class State
{ {
public AudioSource farAudio; public AudioSource farAudio;
public int prevStateindex; public int prevStateindex;
} }
} }