diff --git a/OpenRa.TechTreeTest/Building.cs b/OpenRa.TechTreeTest/Building.cs index a098dc65e3..a864bb60ca 100644 --- a/OpenRa.TechTreeTest/Building.cs +++ b/OpenRa.TechTreeTest/Building.cs @@ -10,6 +10,7 @@ namespace OpenRa.TechTreeTest [Flags] public enum BuildingRace { + None = 0, Allies = 1, Soviet = 2 } diff --git a/OpenRa.TechTreeTest/TechTree.cs b/OpenRa.TechTreeTest/TechTree.cs index 8f1c430109..1b4bc5dbc7 100644 --- a/OpenRa.TechTreeTest/TechTree.cs +++ b/OpenRa.TechTreeTest/TechTree.cs @@ -31,17 +31,25 @@ namespace OpenRa.TechTreeTest string s = section.GetValue("Prerequisite", "").ToUpper(); b.Prerequisites = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); b.TechLevel = int.Parse(section.GetValue("TechLevel", "-1")); - s = section.GetValue("Owner", "allies"); - if (string.IsNullOrEmpty(s)) continue; - string[] frags = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - if (frags.Length > 1) + s = section.GetValue("Owner", ""); + + if (string.IsNullOrEmpty(s)) + { + b.Owner = BuildingRace.None; + continue; + } + + if (s.Equals("Both", StringComparison.InvariantCultureIgnoreCase)) { b.Owner = BuildingRace.Allies | BuildingRace.Soviet; + continue; } + + string[] frags = s.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + if (frags.Length > 1) + b.Owner = BuildingRace.Allies | BuildingRace.Soviet; else - { b.Owner = (BuildingRace)Enum.Parse(typeof(BuildingRace), frags[0], true); - } } }