Simplify FlashTarget.

Now defined in terms of a flash count, interval, and delay.
Broken FlashDuration parameter removed from Demolition.
This commit is contained in:
Paul Chote
2018-10-28 11:34:07 +00:00
committed by abcdefg30
parent 1b9f23eca0
commit 0901a7d9de
4 changed files with 16 additions and 18 deletions

View File

@@ -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)