Changed MiniYaml.NodesDict property into a method.
Method is now called ToDictionary. - Cached a few invocations into locals which should prevent some redundant evaluation. - Added ToDictionary overloads that take projection functions for the keys and elements, since several callsites were doing a subsequent Linq.ToDictionary call to get this.
This commit is contained in:
@@ -193,12 +193,17 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
static IEnumerable<NewsItem> ReadNews(byte[] bytes)
|
||||
{
|
||||
var str = Encoding.UTF8.GetString(bytes);
|
||||
return MiniYaml.FromString(str).Select(node => new NewsItem
|
||||
|
||||
return MiniYaml.FromString(str).Select(node =>
|
||||
{
|
||||
Title = node.Value.NodesDict["Title"].Value,
|
||||
Author = node.Value.NodesDict["Author"].Value,
|
||||
DateTime = FieldLoader.GetValue<DateTime>("DateTime", node.Key),
|
||||
Content = node.Value.NodesDict["Content"].Value
|
||||
var nodesDict = node.Value.ToDictionary();
|
||||
return new NewsItem
|
||||
{
|
||||
Title = nodesDict["Title"].Value,
|
||||
Author = nodesDict["Author"].Value,
|
||||
DateTime = FieldLoader.GetValue<DateTime>("DateTime", node.Key),
|
||||
Content = nodesDict["Content"].Value
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
description = widget.Get<LabelWidget>("MISSION_DESCRIPTION");
|
||||
descriptionFont = Game.Renderer.Fonts[description.Font];
|
||||
|
||||
var yaml = new MiniYaml(null, Game.modData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal)).NodesDict;
|
||||
var yaml = new MiniYaml(null, Game.modData.Manifest.Missions.Select(MiniYaml.FromFile).Aggregate(MiniYaml.MergeLiberal)).ToDictionary();
|
||||
|
||||
var missionMapPaths = yaml["Missions"].Nodes.Select(n => Path.GetFullPath(n.Key));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user