Merge pull request #11241 from Mailaender/replay-flag-crash

Fixed a crash when replay is selected in the wrong mod
This commit is contained in:
Oliver Brakmann
2016-05-29 17:55:53 +02:00

View File

@@ -18,6 +18,7 @@ using System.Threading;
using System.Threading.Tasks;
using OpenRA.FileFormats;
using OpenRA.Primitives;
using OpenRA.Traits;
using OpenRA.Widgets;
namespace OpenRA.Mods.Common.Widgets.Logic
@@ -32,6 +33,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
readonly List<ReplayMetadata> replays = new List<ReplayMetadata>();
readonly Dictionary<ReplayMetadata, ReplayState> replayState = new Dictionary<ReplayMetadata, ReplayState>();
readonly Action onStart;
readonly ModData modData;
Dictionary<CPos, SpawnOccupant> selectedSpawns;
ReplayMetadata selectedReplay;
@@ -43,6 +45,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
{
panel = widget;
this.modData = modData;
this.onStart = onStart;
playerList = panel.Get<ScrollPanelWidget>("PLAYER_LIST");
@@ -649,7 +652,8 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var flag = item.Get<ImageWidget>("FLAG");
flag.GetImageCollection = () => "flags";
flag.GetImageName = () => o.FactionId;
var factionInfo = modData.DefaultRules.Actors["world"].TraitInfos<FactionInfo>();
flag.GetImageName = () => (factionInfo != null && factionInfo.Any(f => f.InternalName == o.FactionId)) ? o.FactionId : "Random";
playerList.AddChild(item);
}