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 Coroutine JesterLightSwitching;
|
||||||
public static Track CurrentTrack;
|
public static Track CurrentTrack;
|
||||||
|
|
||||||
|
@ -214,20 +242,7 @@ namespace MuzikaGromche
|
||||||
__instance.creatureVoice.Stop();
|
__instance.creatureVoice.Stop();
|
||||||
|
|
||||||
// ...and start modded music
|
// ...and start modded music
|
||||||
var seed = RoundManager.Instance.dungeonGenerator.Generator.ChosenSeed;
|
Plugin.CurrentTrack = Plugin.ChooseTrack();
|
||||||
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];
|
|
||||||
__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;
|
||||||
|
|
Loading…
Reference in New Issue