public void OnUpdate(double diff) { var unit = curBuff.OriginSpell.Owner; var curPos = curBuff.TargetUnit.GetPosition(); var dist = Vector2.Distance(origin, curPos); if (dist >= radius) { unit.SetInvis(false); return; } if (unit.IsAttacking || unit.IsCastingSpell) { invisPenalty = true; unit.SetInvis(false); if (!(pTimer is null)) { pTimer.EndTimerWithoutCallback(); } if (curBuff.Duration - curBuff.TimeElapsed > 2.0f) { pTimer = CreateTimer(1.5f, () => { invisPenalty = false; }); } } if (!invisPenalty) { unit.SetInvis(true); } }
public static GameScriptTimer CreateTimer(float duration, Action callback) { var newTimer = new GameScriptTimer(duration, callback); _game.AddGameScriptTimer(newTimer); return(newTimer); }
public void RemoveGameScriptTimer(GameScriptTimer timer) { _gameScriptTimers.Remove(timer); }
public void AddGameScriptTimer(GameScriptTimer timer) { _gameScriptTimers.Add(timer); }