private string IdentifyMultipleEffectsFilename(SoundFxDefinition fxDefinition, string cmdText) { var available = new List <string>(); fxDefinition.Files.ToList().ForEach(a => { if (!MultipleFileTriggers[cmdText].Contains(a)) { available.Add(a); } }); var random = new Random().Next(0, available.Count - 1); var theFile = available.Skip(random).First(); MultipleFileTriggers[cmdText].Add(theFile); return(theFile); }
private DateTime CalculateMultipleFileCooldownTime(SoundFxDefinition cmd, string cmdTrigger) { if (!SoundCooldowns.ContainsKey(cmdTrigger)) { MultipleFileTriggers.Add(cmdTrigger, new List <string>()); return(DateTime.Now); } if (MultipleFileTriggers[cmdTrigger].Count < cmd.Files.Length) { return(SoundCooldowns[cmdTrigger]); } return(DateTime.Now); }
private bool CheckMultipleFilesCooldown(SoundFxDefinition cmd, string cmdText, out TimeSpan cooldownRemaining) { var cooldown = TimeSpan.FromSeconds(Effects[cmdText].Cooldown); cooldownRemaining = TimeSpan.Zero; if (SoundCooldowns.ContainsKey(cmdText)) { if (SoundCooldowns[cmdText].Add(cooldown) < DateTime.Now) { SoundCooldowns[cmdText] = DateTime.Now; MultipleFileTriggers[cmdText].Clear(); return(true); } else { cooldownRemaining = SoundCooldowns[cmdText].Add(cooldown).Subtract(DateTime.Now); return(MultipleFileTriggers[cmdText].Count != cmd.Files.Length); } } return(true); }