예제 #1
0
        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();
        }