EssenceShared.Entities.Enemies.MeleeEnemy.MoveToAttackAction C# (CSharp) Method

MoveToAttackAction() protected method

protected MoveToAttackAction ( float dt ) : void
dt float
return void
        protected override void MoveToAttackAction(float dt) {
            // Если очень близко есть союзники, меняем угол движения
            float moveAngleChange = 0f;

            List<Entity> enemies =
                Parent.Children.Where(x => ((x != null) && x.Tag == Tags.Enemy))
                    .Cast<Entity>()
                    .OrderBy(DistanceTo)
                    .ToList();

            if (enemies.Count > 2) {
                if (DistanceTo(enemies[2]) < 100) {
                    moveAngleChange = -AngleTo(enemies[2].Position)/CCRandom.Next(1, 4);
                }
            }

            // Если в зоне атаки - атакуем
            if (Target != null && DistanceTo(Target) < AttackRadius && AttackCooldownCounter == 0) {
                ActionState = ActionState.Attack;
            } // Если далеко - идем к цели
            else if (Target != null &&
                     DistanceTo(Target) < SightRadius*1.5f && DistanceTo(Target) > AttackRadius*0.7f) {
                MoveByAngle(AngleTo(Target.Position) + moveAngleChange, Speed*dt);
            }
            else {
                Target = null;
                ActionState = ActionState.Idle;
            }
        }