Simplify FlashTarget.
Now defined in terms of a flash count, interval, and delay. Broken FlashDuration parameter removed from Demolition.
This commit is contained in:
@@ -18,15 +18,20 @@ namespace OpenRA.Mods.Common.Effects
|
||||
{
|
||||
public class FlashTarget : IEffect
|
||||
{
|
||||
Actor target;
|
||||
Player player;
|
||||
int remainingTicks;
|
||||
readonly Actor target;
|
||||
readonly Player player;
|
||||
readonly int count;
|
||||
readonly int interval;
|
||||
int tick;
|
||||
|
||||
public FlashTarget(Actor target, Player asPlayer = null, int ticks = 4)
|
||||
public FlashTarget(Actor target, Player asPlayer = null, int count = 2, int interval = 2, int delay = 0)
|
||||
{
|
||||
this.target = target;
|
||||
player = asPlayer;
|
||||
remainingTicks = ticks;
|
||||
this.count = count;
|
||||
this.interval = interval;
|
||||
tick = -delay;
|
||||
|
||||
target.World.RemoveAll(effect =>
|
||||
{
|
||||
var flashTarget = effect as FlashTarget;
|
||||
@@ -36,13 +41,13 @@ namespace OpenRA.Mods.Common.Effects
|
||||
|
||||
public void Tick(World world)
|
||||
{
|
||||
if (--remainingTicks == 0 || !target.IsInWorld)
|
||||
if (++tick >= count * interval || !target.IsInWorld)
|
||||
world.AddFrameEndTask(w => w.Remove(this));
|
||||
}
|
||||
|
||||
public IEnumerable<IRenderable> Render(WorldRenderer wr)
|
||||
{
|
||||
if (target.IsInWorld && remainingTicks % 2 == 0)
|
||||
if (target.IsInWorld && tick >= 0 && tick % interval == 0)
|
||||
{
|
||||
var palette = wr.Palette(player == null ? "highlight" : "highlight" + player.InternalName);
|
||||
return target.Render(wr)
|
||||
|
||||
Reference in New Issue
Block a user