Compare commits

..

4 Commits

9 changed files with 69 additions and 15 deletions

BIN
Assets/DeployDestroyLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DeployDestroyStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DurochkaLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/DurochkaStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/GorgorodLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/GorgorodStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MoyaZhittyaLoop.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

BIN
Assets/MoyaZhittyaStart.mp3 (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -1,6 +1,8 @@
using System.Collections; using System;
using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Security.Cryptography;
using BepInEx; using BepInEx;
using HarmonyLib; using HarmonyLib;
using UnityEngine; using UnityEngine;
@ -21,7 +23,7 @@ namespace MuzikaGromche
new Track new Track
{ {
Name = "VseVZale", Name = "VseVZale",
WindUpTimer = 39f, WindUpTimer = 39f,
Bpm = 138f, Bpm = 138f,
}, },
new Track new Track
@ -29,6 +31,24 @@ namespace MuzikaGromche
Name = "DeployDestroy", Name = "DeployDestroy",
WindUpTimer = 40.7f, WindUpTimer = 40.7f,
Bpm = 130f, Bpm = 130f,
},
new Track
{
Name = "MoyaZhittya",
WindUpTimer = 34.5f,
Bpm = 120f,
},
new Track
{
Name = "Gorgorod",
WindUpTimer = 43.2f,
Bpm = 180f,
},
new Track
{
Name = "Durochka",
WindUpTimer = 37f,
Bpm = 130f,
} }
]; ];
@ -122,20 +142,29 @@ namespace MuzikaGromche
// 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.farAudio.Pause(); __instance.creatureVoice.Stop();
}
if (__instance.currentBehaviourStateIndex is 1 && !__instance.farAudio.isPlaying)
{
// ...and start modded music // ...and start modded music
var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed; var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed;
var trackId = seed % Plugin.Tracks.Length; var sha = SHA256.Create();
var hash = sha.ComputeHash(BitConverter.GetBytes(seed));
var trackId = 0;
foreach (var t in hash)
{
// modulus division on byte array
trackId *= 256 % Plugin.Tracks.Length;
trackId %= Plugin.Tracks.Length;
trackId += t % 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;
Debug.Log($"Playing start music: maxDistance: {__instance.farAudio.maxDistance}, minDistance: {__instance.farAudio.minDistance}, volume: {__instance.farAudio.volume}, spread: {__instance.farAudio.spread}");
__instance.farAudio.maxDistance = 150; __instance.farAudio.maxDistance = 150;
__instance.farAudio.PlayOneShot(Plugin.CurrentTrack.LoadedStart); __instance.farAudio.clip = Plugin.CurrentTrack.LoadedStart;
__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}");
__instance.farAudio.Play();
} }
if (__instance.currentBehaviourStateIndex is 2 && __state.prevStateindex != 2) if (__instance.currentBehaviourStateIndex is 2 && __state.prevStateindex != 2)
@ -146,8 +175,6 @@ namespace MuzikaGromche
__instance.StopCoroutine(Plugin.JesterLightSwitching); __instance.StopCoroutine(Plugin.JesterLightSwitching);
Plugin.JesterLightSwitching = null; Plugin.JesterLightSwitching = null;
} }
Plugin.JesterLightSwitching = __instance.StartCoroutine(rotateColors()); Plugin.JesterLightSwitching = __instance.StartCoroutine(rotateColors());
} }
@ -163,12 +190,15 @@ namespace MuzikaGromche
} }
} }
if (__instance.currentBehaviourStateIndex is 2 && !__instance.creatureVoice.isPlaying && !__instance.farAudio.isPlaying) if (__instance.currentBehaviourStateIndex is 2 && !__instance.creatureVoice.isPlaying)
{ {
Debug.Log($"Playing loop music: maxDistance: {__instance.creatureVoice.maxDistance}, minDistance: {__instance.creatureVoice.minDistance}, volume: {__instance.creatureVoice.volume}, spread: {__instance.creatureVoice.spread}");
__instance.creatureVoice.maxDistance = 150; __instance.creatureVoice.maxDistance = 150;
__instance.creatureVoice.clip = Plugin.CurrentTrack.LoadedLoop; __instance.creatureVoice.clip = Plugin.CurrentTrack.LoadedLoop;
__instance.creatureVoice.Play(); var time = __instance.farAudio.time;
var delay = Plugin.CurrentTrack.LoadedStart.length - 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}");
__instance.creatureVoice.PlayDelayed(delay);
} }
} }
} }