Clamp reveal range to 0-50 in PlayerStatistics to stop crashes for actors with reveal ranges > 50

This commit is contained in:
Scott_NZ
2013-02-02 20:35:11 +13:00
parent 4163f1d6b0
commit 7594c4eab2

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.RA
var total = (double)world.Map.Bounds.Width * world.Map.Bounds.Height; var total = (double)world.Map.Bounds.Width * world.Map.Bounds.Height;
MapControl = world.Actors MapControl = world.Actors
.Where(a => !a.IsDead() && a.IsInWorld && a.Owner == player && a.HasTrait<RevealsShroud>()) .Where(a => !a.IsDead() && a.IsInWorld && a.Owner == player && a.HasTrait<RevealsShroud>())
.SelectMany(a => world.FindTilesInCircle(a.Location, a.Trait<RevealsShroud>().RevealRange)) .SelectMany(a => world.FindTilesInCircle(a.Location, a.Trait<RevealsShroud>().RevealRange.Clamp(0, 50)))
.Distinct() .Distinct()
.Count() / total; .Count() / total;
} }
@@ -68,22 +68,16 @@ namespace OpenRA.Mods.RA
EarnedSamples.Enqueue(EarnedThisMinute); EarnedSamples.Enqueue(EarnedThisMinute);
earnedAtBeginningOfMinute = player.PlayerActor.Trait<PlayerResources>().Earned; earnedAtBeginningOfMinute = player.PlayerActor.Trait<PlayerResources>().Earned;
if (EarnedSamples.Count > 100) if (EarnedSamples.Count > 100)
{
EarnedSamples.Dequeue(); EarnedSamples.Dequeue();
} }
}
public void Tick(Actor self) public void Tick(Actor self)
{ {
if (self.World.FrameNumber % 1500 == 1) if (self.World.FrameNumber % 1500 == 1)
{
UpdateEarnedThisMinute(); UpdateEarnedThisMinute();
}
if (self.World.FrameNumber % 250 == 0) if (self.World.FrameNumber % 250 == 0)
{
UpdateMapControl(); UpdateMapControl();
} }
}
public void ResolveOrder(Actor self, Order order) public void ResolveOrder(Actor self, Order order)
{ {
@@ -100,10 +94,7 @@ namespace OpenRA.Mods.RA
case "SyncInfo": case "SyncInfo":
return; return;
} }
if (order.OrderString.StartsWith("Dev")) if (order.OrderString.StartsWith("Dev")) return;
{
return;
}
OrderCount++; OrderCount++;
} }
} }