Try again, with less fail.
This commit is contained in:
@@ -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 */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 )
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace OpenRA.Mods.RA
|
||||
|
||||
public bool Disabled
|
||||
{
|
||||
get { return power.IsPowered(self); }
|
||||
get { return power.PowerProvided < power.PowerDrained; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user