From 79ce6b70b6a126f25da5d9061729f4bbce34a3ee Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sun, 10 Jan 2010 14:03:21 +1300 Subject: [PATCH] new actor wiring for NewUnitInfo --- OpenRa.Game/Actor.cs | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/OpenRa.Game/Actor.cs b/OpenRa.Game/Actor.cs index 1493fd8625..5bbba3e2fa 100755 --- a/OpenRa.Game/Actor.cs +++ b/OpenRa.Game/Actor.cs @@ -23,16 +23,6 @@ namespace OpenRa.Game public int Health; IActivity currentActivity; - object ConstructTrait(string traitName) - { - /* todo: allow mods to introduce traits */ - var type = typeof(Mobile).Assembly.GetType(typeof(Mobile).Namespace + "." + traitName, true, false); - var ctor = type.GetConstructor(new[] { typeof(Actor) }); - if (ctor == null) - throw new InvalidOperationException("Trait {0} does not have the correct constructor: {0}(Actor self)".F(type.Name)); - return ctor.Invoke(new object[] { this }); - } - public Actor( ActorInfo info, int2 location, Player owner ) { ActorID = Game.world.NextAID(); @@ -48,11 +38,8 @@ namespace OpenRa.Game if( Info.Traits == null ) throw new InvalidOperationException( "No Actor traits for {0}; add Traits= to units.ini for appropriate unit".F(Info.Name) ); - //foreach (var traitName in Info.Traits) - // traits.Add(ConstructTrait(traitName)); - - foreach( var traitName in Rules.NewUnitInfo[Info.Name.ToLower()].Traits.Keys ) - traits.Add( ConstructTrait( traitName ) ); + foreach (var trait in Rules.NewUnitInfo[Info.Name.ToLower()].Traits.Values) + traits.Add(trait.Create(this)); } public void Tick()