fixing some spy bugs

This commit is contained in:
Chris Forbes
2010-01-16 15:15:11 +13:00
parent f475b0fbbd
commit dcc713077f
5 changed files with 35 additions and 3 deletions

View File

@@ -241,6 +241,7 @@
<Compile Include="Traits\LimitedAmmo.cs" />
<Compile Include="Traits\Passenger.cs" />
<Compile Include="Traits\ProvidesRadar.cs" />
<Compile Include="Traits\RenderSpy.cs" />
<Compile Include="Traits\Repairable.cs" />
<Compile Include="Traits\Reservable.cs" />
<Compile Include="Traits\Selectable.cs" />

View File

@@ -15,7 +15,7 @@ namespace OpenRa.Game.Traits
abstract class RenderSimple : IRender, ITick
{
public Dictionary<string, AnimationWithOffset> anims = new Dictionary<string, AnimationWithOffset>();
public Animation anim { get { return anims[ "" ].Animation; } }
public Animation anim { get { return anims[""].Animation; } protected set { anims[""].Animation = anim; } }
public string GetImage(Actor self)
{

View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenRa.Game.Graphics;
namespace OpenRa.Game.Traits
{
class RenderSpyInfo : ITraitInfo
{
public object Create(Actor self) { return new RenderSpy(self); }
}
class RenderSpy : RenderInfantry, IRenderModifier
{
public RenderSpy(Actor self)
: base(self)
{
if (self.Owner != Game.LocalPlayer)
anim = new Animation("e1");
}
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
{
if (self.Owner == Game.LocalPlayer)
return r;
return r.Select(a => a.WithPalette(Game.LocalPlayer.Palette));
}
}
}

View File

@@ -13,7 +13,7 @@ namespace OpenRa.Game.Traits
public Order IssueOrder(Actor self, int2 xy, MouseInput mi, Actor underCursor)
{
if (mi.Button != MouseButton.Right) return null;
if (underCursor != null) return null;
if (underCursor == null) return null;
if (underCursor.traits.Contains<IAcceptSpy>()) return null;
return new Order("Infiltrate", self, underCursor, int2.Zero, null);