diff --git a/OpenRa.Game/GameRules/FieldLoader.cs b/OpenRa.Game/GameRules/FieldLoader.cs index f1034dc5f0..71fb420c06 100755 --- a/OpenRa.Game/GameRules/FieldLoader.cs +++ b/OpenRa.Game/GameRules/FieldLoader.cs @@ -7,12 +7,12 @@ namespace OpenRa.Game.GameRules { static class FieldLoader { - public static void Load( object self, IniSection ini ) + public static void Load(object self, IniSection ini) { - foreach( var x in ini ) + foreach (var x in ini) { - var field = self.GetType().GetField( x.Key.Trim() ); - field.SetValue( self, GetValue( field.FieldType, x.Value.Trim() ) ); + var field = self.GetType().GetField(x.Key.Trim()); + field.SetValue(self, GetValue(field.FieldType, x.Value.Trim())); } } diff --git a/OpenRa.Game/Traits/AttackTurreted.cs b/OpenRa.Game/Traits/AttackTurreted.cs index 9c0f513251..c574e309a8 100755 --- a/OpenRa.Game/Traits/AttackTurreted.cs +++ b/OpenRa.Game/Traits/AttackTurreted.cs @@ -3,6 +3,8 @@ using OpenRa.Game.GameRules; namespace OpenRa.Game.Traits { + class AttackTurretedInfo : AttackBaseInfo { } + class AttackTurreted : AttackBase, INotifyBuildComplete { public AttackTurreted( Actor self ) : base(self) { self.traits.Get(); } diff --git a/OpenRa.Game/Traits/Buildable.cs b/OpenRa.Game/Traits/Buildable.cs index ebff7ae4d1..25eec93980 100755 --- a/OpenRa.Game/Traits/Buildable.cs +++ b/OpenRa.Game/Traits/Buildable.cs @@ -14,6 +14,8 @@ namespace OpenRa.Game.Traits public readonly int Cost = 0; public readonly string Description = ""; public readonly string LongDesc = ""; + public readonly string Icon = null; + public object Create(Actor self) { return new Buildable(self); } } diff --git a/OpenRa.Game/Traits/Cargo.cs b/OpenRa.Game/Traits/Cargo.cs index 088cde0640..d9798efd0c 100644 --- a/OpenRa.Game/Traits/Cargo.cs +++ b/OpenRa.Game/Traits/Cargo.cs @@ -7,6 +7,13 @@ using OpenRa.Game.Traits.Activities; namespace OpenRa.Game.Traits { + class CargoInfo : ITraitInfo + { + public readonly UnitMovementType[] PassengerTypes = { }; + + public object Create(Actor self) { return new Cargo(self); } + } + class Cargo : IPips, IIssueOrder, IResolveOrder { List cargo = new List(); diff --git a/OpenRa.Game/Traits/Explodes.cs b/OpenRa.Game/Traits/Explodes.cs index 08fc4e0db4..712ded0e4f 100644 --- a/OpenRa.Game/Traits/Explodes.cs +++ b/OpenRa.Game/Traits/Explodes.cs @@ -2,6 +2,11 @@ namespace OpenRa.Game.Traits { + class ExplodesInfo : ITraitInfo + { + public object Create(Actor self) { return new Explodes(self); } + } + class Explodes : INotifyDamage { public Explodes(Actor self) {} diff --git a/OpenRa.Game/Traits/Harvester.cs b/OpenRa.Game/Traits/Harvester.cs index aa374e943c..4d038d93c9 100644 --- a/OpenRa.Game/Traits/Harvester.cs +++ b/OpenRa.Game/Traits/Harvester.cs @@ -3,6 +3,11 @@ using OpenRa.Game.Traits.Activities; namespace OpenRa.Game.Traits { + class HarvesterInfo : ITraitInfo + { + public object Create(Actor self) { return new Harvester(self); } + } + class Harvester : IIssueOrder, IResolveOrder, IPips { [Sync] diff --git a/OpenRa.Game/Traits/IronCurtainable.cs b/OpenRa.Game/Traits/IronCurtainable.cs index 4feda533ad..45344f3c34 100644 --- a/OpenRa.Game/Traits/IronCurtainable.cs +++ b/OpenRa.Game/Traits/IronCurtainable.cs @@ -3,6 +3,11 @@ using OpenRa.Game.Effects; namespace OpenRa.Game.Traits { + class IronCurtainableInfo : ITraitInfo + { + public object Create(Actor self) { return new IronCurtain(self); } + } + class IronCurtainable : IResolveOrder, IDamageModifier, ITick { [Sync] diff --git a/OpenRa.Game/Traits/LimitedAmmo.cs b/OpenRa.Game/Traits/LimitedAmmo.cs index b3ffe3535f..e2c5cc0797 100644 --- a/OpenRa.Game/Traits/LimitedAmmo.cs +++ b/OpenRa.Game/Traits/LimitedAmmo.cs @@ -2,6 +2,13 @@ namespace OpenRa.Game.Traits { + class LimitedAmmoInfo : ITraitInfo + { + public readonly int Ammo = 0; + + public object Create(Actor self) { return new LimitedAmmo(self); } + } + class LimitedAmmo : INotifyAttack, IPips { [Sync] diff --git a/OpenRa.Game/Traits/McvDeploy.cs b/OpenRa.Game/Traits/McvDeploy.cs index 4848378acb..5b5cb880b1 100644 --- a/OpenRa.Game/Traits/McvDeploy.cs +++ b/OpenRa.Game/Traits/McvDeploy.cs @@ -3,6 +3,11 @@ using OpenRa.Game.Traits.Activities; namespace OpenRa.Game.Traits { + class McvDeployInfo : ITraitInfo + { + public object Create(Actor self) { return new McvDeploy(self); } + } + class McvDeploy : IIssueOrder, IResolveOrder { public McvDeploy(Actor self) { } diff --git a/OpenRa.Game/Traits/MineImmune.cs b/OpenRa.Game/Traits/MineImmune.cs index d711a036ba..f82acf08c4 100644 --- a/OpenRa.Game/Traits/MineImmune.cs +++ b/OpenRa.Game/Traits/MineImmune.cs @@ -1,6 +1,11 @@  namespace OpenRa.Game.Traits { + class MineImmuneInfo : ITraitInfo + { + public object Create(Actor self) { return new MineImmune(self); } + } + class MineImmune { public MineImmune(Actor self) { } diff --git a/OpenRa.Game/Traits/Minelayer.cs b/OpenRa.Game/Traits/Minelayer.cs index 871029b159..7fe567bd2b 100644 --- a/OpenRa.Game/Traits/Minelayer.cs +++ b/OpenRa.Game/Traits/Minelayer.cs @@ -5,6 +5,11 @@ using System.Text; namespace OpenRa.Game.Traits { + class MinelayerInfo : ITraitInfo + { + public object Create(Actor self) { return new Minelayer(self); } + } + class Minelayer : IIssueOrder, IResolveOrder { public Minelayer(Actor self) { } diff --git a/OpenRa.Game/Traits/Passenger.cs b/OpenRa.Game/Traits/Passenger.cs index 20ee863d2d..36cc0f3f5f 100644 --- a/OpenRa.Game/Traits/Passenger.cs +++ b/OpenRa.Game/Traits/Passenger.cs @@ -6,6 +6,11 @@ using OpenRa.Game.Traits.Activities; namespace OpenRa.Game.Traits { + class PassengerInfo : ITraitInfo + { + public object Create(Actor self) { return new Passenger(self); } + } + class Passenger : IIssueOrder, IResolveOrder { public Passenger(Actor self) { } diff --git a/OpenRa.Game/Traits/RenderBuilding.cs b/OpenRa.Game/Traits/RenderBuilding.cs index d5291d0b59..d73b16915b 100644 --- a/OpenRa.Game/Traits/RenderBuilding.cs +++ b/OpenRa.Game/Traits/RenderBuilding.cs @@ -5,6 +5,11 @@ using OpenRa.Game.Effects; namespace OpenRa.Game.Traits { + class RenderBuildingInfo : RenderSimpleInfo + { + public override object Create(Actor self) { return new RenderBuilding(self); } + } + class RenderBuilding : RenderSimple, INotifyDamage, INotifySold { const int SmallBibStart = 1; diff --git a/OpenRa.Game/Traits/RenderBuildingCharge.cs b/OpenRa.Game/Traits/RenderBuildingCharge.cs index e0a5e7bd3f..f76821b972 100644 --- a/OpenRa.Game/Traits/RenderBuildingCharge.cs +++ b/OpenRa.Game/Traits/RenderBuildingCharge.cs @@ -5,6 +5,11 @@ using System.Text; namespace OpenRa.Game.Traits { + class RenderBuildingChargeInfo : RenderBuildingInfo + { + public override object Create(Actor self) { return new RenderBuildingCharge(self); } + } + /* used for tesla */ class RenderBuildingCharge : RenderBuilding, INotifyAttack { diff --git a/OpenRa.Game/Traits/RenderBuildingOre.cs b/OpenRa.Game/Traits/RenderBuildingOre.cs index 015db7721e..0909475d78 100644 --- a/OpenRa.Game/Traits/RenderBuildingOre.cs +++ b/OpenRa.Game/Traits/RenderBuildingOre.cs @@ -2,6 +2,11 @@ namespace OpenRa.Game.Traits { + class RenderBuildingOreInfo : RenderBuildingInfo + { + public override object Create(Actor self) { return new RenderBuildingOre(self); } + } + class RenderBuildingOre : RenderBuilding, INotifyBuildComplete { public RenderBuildingOre(Actor self) diff --git a/OpenRa.Game/Traits/RenderSimple.cs b/OpenRa.Game/Traits/RenderSimple.cs index d5db307c09..7975607053 100644 --- a/OpenRa.Game/Traits/RenderSimple.cs +++ b/OpenRa.Game/Traits/RenderSimple.cs @@ -5,6 +5,13 @@ using OpenRa.Game.Graphics; namespace OpenRa.Game.Traits { + abstract class RenderSimpleInfo : ITraitInfo + { + public readonly string Image = null; + + public abstract object Create(Actor self); + } + abstract class RenderSimple : IRender, ITick { public Dictionary anims = new Dictionary(); diff --git a/OpenRa.Game/Traits/RenderUnit.cs b/OpenRa.Game/Traits/RenderUnit.cs index 9d293d8340..067b4ccc90 100644 --- a/OpenRa.Game/Traits/RenderUnit.cs +++ b/OpenRa.Game/Traits/RenderUnit.cs @@ -5,6 +5,11 @@ using OpenRa.Game.GameRules; namespace OpenRa.Game.Traits { + class RenderUnitInfo : RenderSimpleInfo + { + public override object Create(Actor self) { return new RenderUnit(self); } + } + class RenderUnit : RenderSimple, INotifyDamage { public RenderUnit(Actor self) diff --git a/OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs b/OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs index 0e198ba1ad..d8beee320d 100644 --- a/OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs +++ b/OpenRa.Game/Traits/RenderUnitMuzzleFlash.cs @@ -5,6 +5,11 @@ using OpenRa.Game.Graphics; namespace OpenRa.Game.Traits { + class RenderUnitMuzzleFlashInfo : RenderUnitInfo + { + public override object Create(Actor self) { return new RenderUnitMuzzleFlash(self); } + } + class RenderUnitMuzzleFlash : RenderUnit { public RenderUnitMuzzleFlash(Actor self) diff --git a/OpenRa.Game/Traits/RenderUnitSpinner.cs b/OpenRa.Game/Traits/RenderUnitSpinner.cs index aefb72329f..8dc54c535b 100755 --- a/OpenRa.Game/Traits/RenderUnitSpinner.cs +++ b/OpenRa.Game/Traits/RenderUnitSpinner.cs @@ -3,6 +3,11 @@ using OpenRa.Game.Graphics; namespace OpenRa.Game.Traits { + class RenderUnitSpinnerInfo : RenderUnitInfo + { + public override object Create(Actor self) { return new RenderUnitSpinner(self); } + } + class RenderUnitSpinner : RenderUnit { public Animation spinnerAnim; diff --git a/OpenRa.Game/Traits/RenderUnitTurreted.cs b/OpenRa.Game/Traits/RenderUnitTurreted.cs index f05caa57f4..38079af844 100644 --- a/OpenRa.Game/Traits/RenderUnitTurreted.cs +++ b/OpenRa.Game/Traits/RenderUnitTurreted.cs @@ -4,6 +4,8 @@ using OpenRa.Game.Graphics; namespace OpenRa.Game.Traits { + class RenderUnitTurretedInfo : RenderUnitInfo { } + class RenderUnitTurreted : RenderUnit { public Animation muzzleFlash; diff --git a/OpenRa.Game/Traits/Turreted.cs b/OpenRa.Game/Traits/Turreted.cs index b20de37e63..0e2c7318d7 100644 --- a/OpenRa.Game/Traits/Turreted.cs +++ b/OpenRa.Game/Traits/Turreted.cs @@ -1,6 +1,11 @@  namespace OpenRa.Game.Traits { + class TurretedInfo : ITraitInfo + { + public object Create(Actor self) { return new Turreted(self); } + } + class Turreted : ITick { [Sync]