/// <summary> /// Update only the highest prority move /// </summary> /// <param name="deltaTime">Change in time</param> public IMove Update(float deltaTime) { IMove updatedMove = null; for (int i = moves.Count - 1; i >= 0; i--) { IMove move = moves[i]; if (updatedMove == null) { if (move.Update(deltaTime)) { updatedMove = move; } } else { move.Close(); } } if (updatedMove != null) { return(updatedMove); } throw new NoMoveCandidatesException(); }
protected override void NextMove(float deltaTime) { for (int i = moves.Count - 1; i >= 0; i--) { IMove move = moves[i]; move.Issue(); if (move.Update(deltaTime)) { if (lastUsed != null && move != lastUsed) { lastUsed.Close(); } lastUsed = move; return; } } throw new NoMoveCandidatesException(); }
protected override void Reset() { IMove current = CurrentMove; if (current != null) { current.Close(); } TimeSinceStart = 0; }