From 318a1c40dda491fd3849fe381f4757fe410b0eac Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 29 Oct 2009 20:22:40 +1300 Subject: [PATCH] Sanity checked frameNumber; finished TODO on UnitInfo.Owner --- OpenRa.Game/GameRules/UnitInfo.cs | 2 +- OpenRa.Game/OrderManager.cs | 3 +++ OpenRa.Game/TechTree/Item.cs | 5 ++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/OpenRa.Game/GameRules/UnitInfo.cs b/OpenRa.Game/GameRules/UnitInfo.cs index 03eb6eae51..d427e09f20 100755 --- a/OpenRa.Game/GameRules/UnitInfo.cs +++ b/OpenRa.Game/GameRules/UnitInfo.cs @@ -33,7 +33,7 @@ namespace OpenRa.Game.GameRules public readonly int GuardRange = -1; // -1 = use weapon's range public readonly string Image = null; // sprite-set to use when rendering public readonly bool Invisible = false; - public readonly string Owner = "allies,soviet"; // TODO: make this an enum + public readonly string[] Owner = { "allies", "soviet" }; public readonly int Points = 0; public readonly string[] Prerequisite = { }; public readonly string Primary = null; diff --git a/OpenRa.Game/OrderManager.cs b/OpenRa.Game/OrderManager.cs index e7b9bb83f7..a43fd2900c 100755 --- a/OpenRa.Game/OrderManager.cs +++ b/OpenRa.Game/OrderManager.cs @@ -44,6 +44,9 @@ namespace OpenRa.Game } } ++frameNumber; + // sanity check on the framenumber. This is 2^31 frames maximum, or multiple *years* at 40ms/frame. + if( ( frameNumber & 0x80000000 ) != 0 ) + throw new InvalidOperationException( "(OrderManager) Frame number too large" ); } } diff --git a/OpenRa.Game/TechTree/Item.cs b/OpenRa.Game/TechTree/Item.cs index ff19fdf5a8..5f9733202d 100755 --- a/OpenRa.Game/TechTree/Item.cs +++ b/OpenRa.Game/TechTree/Item.cs @@ -25,15 +25,14 @@ namespace OpenRa.TechTree sovietPrerequisites = pre.b; } - static Race ParseOwner(string owners, bool doubleOwned) + static Race ParseOwner(string[] owners, bool doubleOwned) { if (doubleOwned) return Race.Allies | Race.Soviet; Race race = Race.None; - string[] frags = owners.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); - foreach (string s in frags) + foreach (string s in owners) race |= (Race)Enum.Parse(typeof(Race), s, true); return race;