Fix some playerstatistics related crashes for other mods
This commit is contained in:
@@ -101,7 +101,7 @@ namespace OpenRA.Widgets
|
|||||||
var xAxisSize = GetXAxisSize();
|
var xAxisSize = GetXAxisSize();
|
||||||
var yAxisSize = GetYAxisSize();
|
var yAxisSize = GetYAxisSize();
|
||||||
|
|
||||||
var maxValue = GetSeries().Select(p => p.Points).SelectMany(d => d).Max();
|
var maxValue = GetSeries().Select(p => p.Points).SelectMany(d => d).Concat(new[] { 0f }).Max();
|
||||||
var scale = 200 / Math.Max(5000, (float)Math.Ceiling(maxValue / 1000) * 1000);
|
var scale = 200 / Math.Max(5000, (float)Math.Ceiling(maxValue / 1000) * 1000);
|
||||||
|
|
||||||
var xStep = width / xAxisSize;
|
var xStep = width / xAxisSize;
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
players.Select(p => new LineGraphSeries(
|
players.Select(p => new LineGraphSeries(
|
||||||
p.PlayerName,
|
p.PlayerName,
|
||||||
p.ColorRamp.GetColor(0),
|
p.ColorRamp.GetColor(0),
|
||||||
p.PlayerActor.Trait<PlayerStatistics>().EarnedSamples.Select(s => (float)s)
|
(p.PlayerActor.TraitOrDefault<PlayerStatistics>() ?? new PlayerStatistics(p.PlayerActor)).EarnedSamples.Select(s => (float)s)
|
||||||
));
|
));
|
||||||
|
|
||||||
playerStatsPanel.AddChild(template);
|
playerStatsPanel.AddChild(template);
|
||||||
@@ -187,10 +187,11 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
|
|
||||||
AddPlayerFlagAndName(template, player);
|
AddPlayerFlagAndName(template, player);
|
||||||
|
|
||||||
var stats = player.PlayerActor.Trait<PlayerStatistics>();
|
var stats = player.PlayerActor.TraitOrDefault<PlayerStatistics>();
|
||||||
|
if (stats == null) return template;
|
||||||
template.Get<LabelWidget>("CONTROL").GetText = () => MapControl(stats.MapControl);
|
template.Get<LabelWidget>("CONTROL").GetText = () => MapControl(stats.MapControl);
|
||||||
template.Get<LabelWidget>("KILLS_COST").GetText = () => "$" + stats.KillsCost.ToString();
|
template.Get<LabelWidget>("KILLS_COST").GetText = () => "$" + stats.KillsCost;
|
||||||
template.Get<LabelWidget>("DEATHS_COST").GetText = () => "$" + stats.DeathsCost.ToString();
|
template.Get<LabelWidget>("DEATHS_COST").GetText = () => "$" + stats.DeathsCost;
|
||||||
template.Get<LabelWidget>("UNITS_KILLED").GetText = () => stats.UnitsKilled.ToString();
|
template.Get<LabelWidget>("UNITS_KILLED").GetText = () => stats.UnitsKilled.ToString();
|
||||||
template.Get<LabelWidget>("UNITS_DEAD").GetText = () => stats.UnitsDead.ToString();
|
template.Get<LabelWidget>("UNITS_DEAD").GetText = () => stats.UnitsDead.ToString();
|
||||||
template.Get<LabelWidget>("BUILDINGS_KILLED").GetText = () => stats.BuildingsKilled.ToString();
|
template.Get<LabelWidget>("BUILDINGS_KILLED").GetText = () => stats.BuildingsKilled.ToString();
|
||||||
@@ -220,7 +221,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
AddPlayerFlagAndName(template, player);
|
AddPlayerFlagAndName(template, player);
|
||||||
|
|
||||||
var res = player.PlayerActor.Trait<PlayerResources>();
|
var res = player.PlayerActor.Trait<PlayerResources>();
|
||||||
var stats = player.PlayerActor.Trait<PlayerStatistics>();
|
var stats = player.PlayerActor.TraitOrDefault<PlayerStatistics>();
|
||||||
|
if (stats == null) return template;
|
||||||
|
|
||||||
template.Get<LabelWidget>("CASH").GetText = () => "$" + (res.DisplayCash + res.DisplayOre);
|
template.Get<LabelWidget>("CASH").GetText = () => "$" + (res.DisplayCash + res.DisplayOre);
|
||||||
template.Get<LabelWidget>("EARNED_MIN").GetText = () => AverageEarnedPerMinute(res.Earned);
|
template.Get<LabelWidget>("EARNED_MIN").GetText = () => AverageEarnedPerMinute(res.Earned);
|
||||||
@@ -258,7 +260,8 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
|||||||
template.Get<LabelWidget>("KILLS").GetText = () => player.Kills.ToString();
|
template.Get<LabelWidget>("KILLS").GetText = () => player.Kills.ToString();
|
||||||
template.Get<LabelWidget>("DEATHS").GetText = () => player.Deaths.ToString();
|
template.Get<LabelWidget>("DEATHS").GetText = () => player.Deaths.ToString();
|
||||||
|
|
||||||
var stats = player.PlayerActor.Trait<PlayerStatistics>();
|
var stats = player.PlayerActor.TraitOrDefault<PlayerStatistics>();
|
||||||
|
if (stats == null) return template;
|
||||||
template.Get<LabelWidget>("ACTIONS_MIN").GetText = () => AverageOrdersPerMinute(stats.OrderCount);
|
template.Get<LabelWidget>("ACTIONS_MIN").GetText = () => AverageOrdersPerMinute(stats.OrderCount);
|
||||||
|
|
||||||
return template;
|
return template;
|
||||||
|
|||||||
Reference in New Issue
Block a user