Try again, with less fail.

This commit is contained in:
Paul Chote
2010-09-18 19:56:03 +12:00
parent 8455dadb3c
commit 4cb26c0e3c
9 changed files with 21 additions and 75 deletions

View File

@@ -11,6 +11,7 @@
using System;
using OpenRA.Mods.RA.Activities;
using OpenRA.Traits;
using System.Linq;
namespace OpenRA.Mods.RA
{
@@ -45,7 +46,7 @@ namespace OpenRA.Mods.RA
protected override void QueueAttack( Actor self, Order order )
{
if (self.HasTrait<Building>() && self.Trait<Building>().Disabled)
if (self.TraitsImplementing<IDisable>().Any(d => d.Disabled))
return;
const int RangeTolerance = 1; /* how far inside our maximum range we should try to sit */

View File

@@ -17,15 +17,17 @@ namespace OpenRA.Mods.RA
public object Create(ActorInitializer init) { return new CanPowerDown(init); }
}
public class CanPowerDown : IResolveOrder
public class CanPowerDown : IResolveOrder, IDisable
{
[Sync]
bool disabled = false;
int normalPower = 0;
readonly PowerManager PlayerPower;
public CanPowerDown(ActorInitializer init)
{
PlayerPower = init.self.Owner.PlayerActor.Trait<PowerManager>();
normalPower = init.self.Info.Traits.Get<BuildingInfo>().Power;
}
public bool Disabled { get { return disabled; } }
@@ -37,10 +39,7 @@ namespace OpenRA.Mods.RA
var eva = self.World.WorldActor.Info.Traits.Get<EvaAlertsInfo>();
Sound.PlayToPlayer(self.Owner, disabled ? eva.EnablePower : eva.DisablePower);
if (disabled)
PlayerPower.Disable(self, "PowerDown");
else
PlayerPower.RemoveDisable(self, "PowerDown");
PlayerPower.UpdateActor(self, disabled ? 0 : normalPower);
}
}
}

View File

@@ -36,7 +36,14 @@ namespace OpenRA.Mods.RA.Render
public IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r)
{
return r.Select(a => a.WithPos(a.Pos - Origin));
var disabled = self.TraitsImplementing<IDisable>().Any(d => d.Disabled);
foreach (var a in r)
{
var ret = a.WithPos(a.Pos - Origin);
yield return ret;
if (disabled)
yield return ret.WithPalette("disabled").WithZOffset(-1);
}
}
public RenderBuilding( ActorInitializer init, Func<int> baseFacing )

View File

@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA
public bool Disabled
{
get { return power.IsPowered(self); }
get { return power.PowerProvided < power.PowerDrained; }
}
}
}