/// <summary> /// Blocks execution of code until the time duration has passed. /// </summary> /// <param name="duration"></param> /// <returns></returns> protected void WaitThen(int duration, Action action) { Misc.GameTimer timer = new Misc.GameTimer(); _waitTimers.Add(timer); timer.ResetAndWaitFor(duration, delegate() { action?.Invoke(); _waitTimers.Remove(timer); }); }
public override void Initialize(Entity entity) { _jumpTimer = CreateTimedAction(TimeBetweenJumps_IDLE, Jump); entity.CurrentCollisionType = CollisionType.None; entity.CollidedWithTileBelow += Entity_CollidedWithTileBelow; entity.AddAnimationToQueue("still"); base.Initialize(entity); }
/// <summary> /// Performs the given action after the given duration. /// </summary> /// <param name="waitDuration"></param> /// <param name="action"></param> /// <returns>A timer that has the set time</returns> protected Misc.GameTimer CreateTimedAction(int duration, Action action) { Misc.GameTimer timer = new Misc.GameTimer(); _waitTimers.Add(timer); timer.ResetAndWaitFor(duration, delegate() { timer.Reset(); action?.Invoke(); }, true); return(timer); }