Ejemplo n.º 1
0
        public override async Task <PlayerUpdateResponse> Walk(IGeoLocation targetLocation,
                                                               Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken,
                                                               double walkSpeed = 0.0)
        {
            GetMapzenInstance(session);
            var sourceLocation = new GeoCoordinate(
                _client.CurrentLatitude,
                _client.CurrentLongitude,
                _client.CurrentAltitude
                );
            var        destinaionCoordinate = new GeoCoordinate(targetLocation.Latitude, targetLocation.Longitude);
            MapzenWalk mapzenWalk           = _mapzenDirectionsService.GetDirections(sourceLocation, destinaionCoordinate);

            if (mapzenWalk == null)
            {
                return(await RedirectToNextFallbackStrategy(
                           session.LogicSettings,
                           targetLocation,
                           functionExecutedWhileWalking,
                           session,
                           cancellationToken
                           ));
            }

            base.OnStartWalking(session, targetLocation, mapzenWalk.Distance);
            List <GeoCoordinate> points = mapzenWalk.Waypoints;

            return(await DoWalk(points, session, functionExecutedWhileWalking, sourceLocation,
                                destinaionCoordinate, cancellationToken, walkSpeed));
        }
        public override async Task <PlayerUpdateResponse> Walk(GeoCoordinate targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double walkSpeed = 0.0)
        {
            GetMapzenInstance(session);
            var        sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude, _client.CurrentAltitude);
            MapzenWalk mapzenWalk     = _mapzenDirectionsService.GetDirections(sourceLocation, targetLocation);

            if (mapzenWalk == null)
            {
                return(await RedirectToNextFallbackStrategy(session.LogicSettings, targetLocation, functionExecutedWhileWalking, session, cancellationToken));
            }

            session.EventDispatcher.Send(new FortTargetEvent {
                Name = FortInfo.Name, Distance = mapzenWalk.Distance, Route = GetWalkStrategyId()
            });
            List <GeoCoordinate> points = mapzenWalk.Waypoints;

            return(await DoWalk(points, session, functionExecutedWhileWalking, sourceLocation, targetLocation, cancellationToken, walkSpeed));
        }