public void ExecuteTactics(TurnState turn) { if (ActionBuffer.Count == 0) { var scoredTactic = SelectTactic(turn); _output.Debug($"{scoredTactic.Strategy.GetType().Name}, because {scoredTactic.Reason}"); var returned = scoredTactic.Strategy.Do(this, turn, scoredTactic); foreach (var a in returned) { ActionBuffer.Enqueue(a); } } if (ActionBuffer.Count > 0) { ActionBuffer.Dequeue()(); } }