diff --git a/OpenRA.Game/Game.cs b/OpenRA.Game/Game.cs index 6944a22a8f..b588805d7b 100644 --- a/OpenRA.Game/Game.cs +++ b/OpenRA.Game/Game.cs @@ -41,8 +41,6 @@ namespace OpenRA internal static OrderManager orderManager; - public static bool skipMakeAnims = true; - public static XRandom CosmeticRandom = new XRandom(); // not synced public static Renderer Renderer; diff --git a/OpenRA.Mods.RA/Render/RenderBuilding.cs b/OpenRA.Mods.RA/Render/RenderBuilding.cs index f51f008f32..f1c115f19f 100644 --- a/OpenRA.Mods.RA/Render/RenderBuilding.cs +++ b/OpenRA.Mods.RA/Render/RenderBuilding.cs @@ -17,20 +17,21 @@ namespace OpenRA.Mods.RA.Render public class RenderBuildingInfo : RenderSimpleInfo { public readonly bool HasMakeAnimation = true; - public override object Create(ActorInitializer init) { return new RenderBuilding(init.self);} + public override object Create(ActorInitializer init) { return new RenderBuilding(init);} } public class RenderBuilding : RenderSimple, INotifyDamage, INotifySold { - public RenderBuilding( Actor self ) - : this( self, () => 0 ) + public RenderBuilding( ActorInitializer init ) + : this( init, () => 0 ) { } - public RenderBuilding(Actor self, Func baseFacing) - : base(self, baseFacing) - { - if( Game.skipMakeAnims || !self.Info.Traits.Get().HasMakeAnimation ) + public RenderBuilding( ActorInitializer init, Func baseFacing ) + : base(init.self, baseFacing) + { + var self = init.self; + if( init.Contains() || !self.Info.Traits.Get().HasMakeAnimation ) anim.PlayThen( "idle", () => self.World.AddFrameEndTask( _ => Complete( self ) ) ); else anim.PlayThen( "make", () => self.World.AddFrameEndTask( _ => Complete( self ) ) ); @@ -74,7 +75,7 @@ namespace OpenRA.Mods.RA.Render public void Selling( Actor self ) { - if( !Game.skipMakeAnims && self.Info.Traits.Get().HasMakeAnimation ) + if( self.Info.Traits.Get().HasMakeAnimation ) anim.PlayBackwardsThen( "make", null ); foreach (var s in self.Info.Traits.Get().SellSounds) diff --git a/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs b/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs index 816f080f75..e2c04cec2a 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingCharge.cs @@ -13,14 +13,14 @@ namespace OpenRA.Mods.RA.Render class RenderBuildingChargeInfo : RenderBuildingInfo { public readonly string ChargeAudio = "tslachg2.aud"; - public override object Create(ActorInitializer init) { return new RenderBuildingCharge(init.self); } + public override object Create(ActorInitializer init) { return new RenderBuildingCharge(init); } } /* used for tesla */ public class RenderBuildingCharge : RenderBuilding { - public RenderBuildingCharge(Actor self) - : base(self) + public RenderBuildingCharge( ActorInitializer init ) + : base(init) { } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingOre.cs b/OpenRA.Mods.RA/Render/RenderBuildingOre.cs index 4560471a2c..736207a6cd 100755 --- a/OpenRA.Mods.RA/Render/RenderBuildingOre.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingOre.cs @@ -14,13 +14,13 @@ namespace OpenRA.Mods.RA.Render { class RenderBuildingOreInfo : RenderBuildingInfo { - public override object Create(ActorInitializer init) { return new RenderBuildingOre(init.self); } + public override object Create(ActorInitializer init) { return new RenderBuildingOre(init); } } class RenderBuildingOre : RenderBuilding, INotifyBuildComplete { - public RenderBuildingOre(Actor self) - : base(self) + public RenderBuildingOre( ActorInitializer init ) + : base(init) { } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs index 162f0f270e..ee892a9a12 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingTurreted.cs @@ -14,13 +14,13 @@ namespace OpenRA.Mods.RA.Render { class RenderBuildingTurretedInfo : RenderBuildingInfo { - public override object Create(ActorInitializer init) { return new RenderBuildingTurreted(init.self); } + public override object Create(ActorInitializer init) { return new RenderBuildingTurreted( init ); } } class RenderBuildingTurreted : RenderBuilding, INotifyBuildComplete { - public RenderBuildingTurreted(Actor self) - : base(self, () => self.Trait().turretFacing) + public RenderBuildingTurreted( ActorInitializer init ) + : base(init, () => init.self.Trait().turretFacing) { } diff --git a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs index 7b3ee221ef..b7156ee7a2 100644 --- a/OpenRA.Mods.RA/Render/RenderBuildingWall.cs +++ b/OpenRA.Mods.RA/Render/RenderBuildingWall.cs @@ -15,7 +15,7 @@ namespace OpenRA.Mods.RA.Render { class RenderBuildingWallInfo : RenderBuildingInfo { - public override object Create(ActorInitializer init) { return new RenderBuildingWall(init.self); } + public override object Create(ActorInitializer init) { return new RenderBuildingWall(init); } } class RenderBuildingWall : RenderBuilding @@ -23,8 +23,8 @@ namespace OpenRA.Mods.RA.Render string seqName; int adjacentWalls = 0; - public RenderBuildingWall(Actor self) - : base(self) + public RenderBuildingWall( ActorInitializer init ) + : base(init) { seqName = "idle"; anim.PlayFetchIndex(seqName, () => adjacentWalls); diff --git a/OpenRA.Mods.RA/SpawnMapActors.cs b/OpenRA.Mods.RA/SpawnMapActors.cs index 8311ceb4af..f8340c1356 100644 --- a/OpenRA.Mods.RA/SpawnMapActors.cs +++ b/OpenRA.Mods.RA/SpawnMapActors.cs @@ -22,12 +22,16 @@ namespace OpenRA.Mods.RA public void GameStarted(World world) { - Game.skipMakeAnims = true; // rude hack - - foreach (var actorReference in world.Map.Actors) - Actors[actorReference.Key] = world.CreateActor(actorReference.Value.Type, actorReference.Value.InitDict); - - Game.skipMakeAnims = false; + foreach( var actorReference in world.Map.Actors ) + { + var initDict = actorReference.Value.InitDict; + initDict.Add( new SkipMakeAnimsInit() ); + Actors[ actorReference.Key ] = world.CreateActor( actorReference.Value.Type, initDict ); + } } } + + public class SkipMakeAnimsInit : IActorInit + { + } }