forked from nikita/muzika-gromche
				
			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