示例#1
0
        public Movement GetMovementToClosestEnemy()
        {
            var player = _client.GetPlayerTank();
            var closestEnemyPosition = PlayerUtility.GetClosestEnemyPosition(_client, out var movementRoad, 30);

            if (closestEnemyPosition.IsNegativePoint())
            {
                return(GetLongTermRandomDirection());
            }

            if (_movementRoad?.Count > 0 && _movementTarget != null &&
                _client.IsEnemyAt(_movementTarget) &&
                player.GetDistance(closestEnemyPosition) == player.GetDistance(_movementTarget) &&
                _moveType == MoveType.MovementToClosestEnemy)
            {
                var movement = _movementRoad.First();
                _movementRoad.RemoveAt(0);
                return(movement);
            }

            _movementRoad = movementRoad;
            _moveType     = MoveType.MovementToClosestEnemy;

            {
                var movement = _movementRoad.First();
                _movementRoad.RemoveAt(0);
                _movementTarget = closestEnemyPosition;
                return(movement);
            }
        }