From bce52e989fe9cbd91d3917f6580a8a248fdc0749 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Mon, 30 Aug 2010 12:21:53 +1200 Subject: [PATCH] Revert "make WeaponInfo suck a bit less" This reverts commit 7b7b9d3319305766ecc54ef173e48f8b04ce2d43. --- OpenRA.Game/GameRules/WeaponInfo.cs | 40 +++++++++++++++++------------ 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/OpenRA.Game/GameRules/WeaponInfo.cs b/OpenRA.Game/GameRules/WeaponInfo.cs index 2d3dfb78f8..7756578cb5 100644 --- a/OpenRA.Game/GameRules/WeaponInfo.cs +++ b/OpenRA.Game/GameRules/WeaponInfo.cs @@ -9,7 +9,6 @@ #endregion using System.Collections.Generic; -using System.Linq; using OpenRA.Effects; using OpenRA.FileFormats; using OpenRA.Traits; @@ -85,28 +84,35 @@ namespace OpenRA.GameRules public IProjectileInfo Projectile; public List Warheads = new List(); - static readonly string[] SimpleFields = { "Range", "Report", "ROF", "Burst", "Charges", "Underwater", - "ValidTargets", "BurstDelay" }; - public WeaponInfo(string name, MiniYaml content) { - FieldLoader.LoadFields( this, content.Nodes, SimpleFields ); - foreach (var kv in content.Nodes) { var key = kv.Key.Split('@')[0]; - if (SimpleFields.Contains(key)) - continue; - else if (key == "Warhead") + switch (key) { - var warhead = new WarheadInfo(); - FieldLoader.Load(warhead, kv.Value); - Warheads.Add(warhead); - } - else - { - Projectile = Game.CreateObject(key + "Info"); - FieldLoader.Load(Projectile, kv.Value); + case "Range": FieldLoader.LoadField(this, "Range", content.Nodes["Range"].Value); break; + case "ROF": FieldLoader.LoadField(this, "ROF", content.Nodes["ROF"].Value); break; + case "Report": FieldLoader.LoadField(this, "Report", content.Nodes["Report"].Value); break; + case "Burst": FieldLoader.LoadField(this, "Burst", content.Nodes["Burst"].Value); break; + case "Charges": FieldLoader.LoadField(this, "Charges", content.Nodes["Charges"].Value); break; + case "ValidTargets": FieldLoader.LoadField(this, "ValidTargets", content.Nodes["ValidTargets"].Value); break; + case "Underwater": FieldLoader.LoadField(this, "Underwater", content.Nodes["Underwater"].Value); break; + case "BurstDelay": FieldLoader.LoadField(this, "BurstDelay", content.Nodes["BurstDelay"].Value); break; + + case "Warhead": + { + var warhead = new WarheadInfo(); + FieldLoader.Load(warhead, kv.Value); + Warheads.Add(warhead); + } break; + + // in this case, it's an implementation of IProjectileInfo + default: + { + Projectile = Game.CreateObject(key + "Info"); + FieldLoader.Load(Projectile, kv.Value); + } break; } } }