Remove flawed RateLimit implementation.

This commit is contained in:
Paul Chote
2019-02-12 11:49:24 +00:00
parent dc9c758f12
commit ea05e8aae5
5 changed files with 3 additions and 37 deletions

View File

@@ -33,7 +33,7 @@ namespace OpenRA.GameRules
{
FieldLoader.Load(this, y);
VoicePools = Exts.Lazy(() => Voices.ToDictionary(a => a.Key, a => new SoundPool(0, 1f, a.Value)));
VoicePools = Exts.Lazy(() => Voices.ToDictionary(a => a.Key, a => new SoundPool(1f, a.Value)));
NotificationsPools = Exts.Lazy(() => ParseSoundPool(y, "Notifications"));
}
@@ -43,18 +43,13 @@ namespace OpenRA.GameRules
var classifiction = y.Nodes.First(x => x.Key == key);
foreach (var t in classifiction.Value.Nodes)
{
var rateLimit = 0;
var rateLimitNode = t.Value.Nodes.FirstOrDefault(x => x.Key == "RateLimit");
if (rateLimitNode != null)
rateLimit = FieldLoader.GetValue<int>(rateLimitNode.Key, rateLimitNode.Value.Value);
var volumeModifier = 1f;
var volumeModifierNode = t.Value.Nodes.FirstOrDefault(x => x.Key == "VolumeModifier");
if (volumeModifierNode != null)
volumeModifier = FieldLoader.GetValue<float>(volumeModifierNode.Key, volumeModifierNode.Value.Value);
var names = FieldLoader.GetValue<string[]>(t.Key, t.Value.Value);
var sp = new SoundPool(rateLimit, volumeModifier, names);
var sp = new SoundPool(volumeModifier, names);
ret.Add(t.Key, sp);
}
@@ -66,15 +61,12 @@ namespace OpenRA.GameRules
{
public readonly float VolumeModifier;
readonly string[] clips;
readonly int rateLimit;
readonly List<string> liveclips = new List<string>();
long lastPlayed = 0;
public SoundPool(int rateLimit, float volumeModifier, params string[] clips)
public SoundPool(float volumeModifier, params string[] clips)
{
VolumeModifier = volumeModifier;
this.clips = clips;
this.rateLimit = rateLimit;
}
public string GetNext()
@@ -86,16 +78,6 @@ namespace OpenRA.GameRules
if (liveclips.Count == 0)
return null;
// Perform rate limiting if necessary
if (rateLimit != 0)
{
var now = Game.RunTime;
if (lastPlayed != 0 && now < lastPlayed + rateLimit)
return null;
lastPlayed = now;
}
var i = Game.CosmeticRandom.Next(liveclips.Count);
var s = liveclips[i];
liveclips.RemoveAt(i);