public void Update() { if (ActorTaskSources == null) { throw new InvalidOperationException("Не заданы источники команд"); } var actorsQueue = CalcActorList(); //TODO Учитывать, что могут быть другие персонажи актёра (псы, участники взвода/группы) var firstIsHumanPlayer = actorsQueue.FirstOrDefault()?.Owner is HumanPlayer; if (!firstIsHumanPlayer && actorsQueue.Any(x => x.Owner is HumanPlayer)) { throw new InvalidOperationException("Первым должен быть персонаж, которым управляет актёр"); } foreach (var actor in actorsQueue) { if (actor.State.IsDead) { continue; } ProcessActor(actor); } _sector.Update(); }