Move track choosing out of the Jester patch class
This commit is contained in:
parent
787f15944a
commit
8dc897feba
|
@ -52,6 +52,34 @@ namespace MuzikaGromche
|
|||
}
|
||||
];
|
||||
|
||||
public static int IndexOfTrack(string trackName)
|
||||
{
|
||||
return Array.FindIndex(Tracks, track => track.Name == trackName);
|
||||
}
|
||||
|
||||
public static Track ChooseTrack()
|
||||
{
|
||||
var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed;
|
||||
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 % Tracks.Length;
|
||||
trackId %= Tracks.Length;
|
||||
trackId += t % Tracks.Length;
|
||||
trackId %= Tracks.Length;
|
||||
}
|
||||
#if DEBUG
|
||||
// Override for testing
|
||||
trackId = IndexOfTrack("DeployDestroy");
|
||||
#endif
|
||||
var track = Tracks[trackId];
|
||||
Debug.Log($"Seed is {seed}, chosen track is \"{track.Name}\", {trackId} out of {Tracks.Length} tracks");
|
||||
return Tracks[trackId];
|
||||
}
|
||||
|
||||
public static Coroutine JesterLightSwitching;
|
||||
public static Track CurrentTrack;
|
||||
|
||||
|
@ -214,20 +242,7 @@ namespace MuzikaGromche
|
|||
__instance.creatureVoice.Stop();
|
||||
|
||||
// ...and start modded music
|
||||
var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed;
|
||||
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");
|
||||
Plugin.CurrentTrack = Plugin.Tracks[trackId];
|
||||
Plugin.CurrentTrack = Plugin.ChooseTrack();
|
||||
__instance.popUpTimer = Plugin.CurrentTrack.WindUpTimer;
|
||||
__instance.farAudio.maxDistance = 150;
|
||||
__instance.farAudio.clip = Plugin.CurrentTrack.LoadedStart;
|
||||
|
|
Loading…
Reference in New Issue