From 15c28efa7a1ab04b45c0e4c04c6a5bf46fce3a02 Mon Sep 17 00:00:00 2001 From: Chris Forbes Date: Sat, 16 Jan 2010 15:58:35 +1300 Subject: [PATCH] spy disguise works --- OpenRa.Game/Graphics/Animation.cs | 15 ++++++++++++++- OpenRa.Game/Traits/RenderSimple.cs | 2 +- OpenRa.Game/Traits/RenderSpy.cs | 8 ++++++-- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/OpenRa.Game/Graphics/Animation.cs b/OpenRa.Game/Graphics/Animation.cs index 56d4c797a6..b35c5f7bc6 100644 --- a/OpenRa.Game/Graphics/Animation.cs +++ b/OpenRa.Game/Graphics/Animation.cs @@ -4,12 +4,14 @@ namespace OpenRa.Game.Graphics { class Animation { - readonly string name; + string name; public Sequence CurrentSequence { get; private set; } int frame = 0; bool backwards = false; bool tickAlways; + public string Name { get { return name; } } + public Animation( string name ) { this.name = name.ToLowerInvariant(); @@ -99,5 +101,16 @@ namespace OpenRa.Game.Graphics } } } + + public void ChangeImage(string newImage) + { + newImage = newImage.ToLowerInvariant(); + + if (name != newImage) + { + name = newImage.ToLowerInvariant(); + ReplaceAnim(CurrentSequence.Name); + } + } } } diff --git a/OpenRa.Game/Traits/RenderSimple.cs b/OpenRa.Game/Traits/RenderSimple.cs index e2a3523454..32aa694657 100644 --- a/OpenRa.Game/Traits/RenderSimple.cs +++ b/OpenRa.Game/Traits/RenderSimple.cs @@ -15,7 +15,7 @@ namespace OpenRa.Game.Traits abstract class RenderSimple : IRender, ITick { public Dictionary anims = new Dictionary(); - public Animation anim { get { return anims[""].Animation; } protected set { anims[""].Animation = anim; } } + public Animation anim { get { return anims[""].Animation; } protected set { anims[""].Animation = value; } } public string GetImage(Actor self) { diff --git a/OpenRa.Game/Traits/RenderSpy.cs b/OpenRa.Game/Traits/RenderSpy.cs index 2ed11ac76e..9a75d316ac 100644 --- a/OpenRa.Game/Traits/RenderSpy.cs +++ b/OpenRa.Game/Traits/RenderSpy.cs @@ -16,8 +16,6 @@ namespace OpenRa.Game.Traits public RenderSpy(Actor self) : base(self) { - if (self.Owner != Game.LocalPlayer) - anim = new Animation("e1"); } public IEnumerable ModifyRender(Actor self, IEnumerable r) @@ -27,5 +25,11 @@ namespace OpenRa.Game.Traits return r.Select(a => a.WithPalette(Game.LocalPlayer.Palette)); } + + public override void Tick(Actor self) + { + anim.ChangeImage(self.Owner == Game.LocalPlayer ? GetImage(self) : "e1"); + base.Tick(self); + } } }