Пример #1
0
        public void Do()
        {
            var attackEnemy = Unit.GetAct <AttackEnemy>();

            if (Unit.IsAtAttackDistance(Enemy))
            {
                if (attackEnemy == null)
                {
                    Unit.AddAct(new AttackEnemy(Unit, Enemy));
                }
            }
            else
            {
                if (attackEnemy != null)
                {
                    Unit.RemoveAct(attackEnemy);
                }

                //var move = (Enemy.Position - Unit.Position).ToLength(Unit.Speed);
                //Unit.Position += move + Unit.GetMoveIntersectCorrection(move);

                var move = Unit.MoveToEnemy(Enemy);
                //Debug.WriteLine($"{Unit.Id}: {move}");
                Unit.Position += move; // + Unit.GetMoveIntersectCorrection(move);

                log.Debug($"{Unit.Id} move to Enemy {Enemy.Id}");
            }
        }
Пример #2
0
        public static void Kill(this Unit unit)
        {
            var kill = unit.GetAct <Kill>();

            if (kill == null)
            {
                unit.AddAct(new Kill(unit));
            }
        }