コード例 #1
0
        public override async Task <PlayerUpdateResponse> Walk(GeoCoordinate targetLocation, Func <Task <bool> > functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double walkSpeed = 0.0)
        {
            GetYoursInstance(session);
            var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude, _client.CurrentAltitude);
            var yoursResult    = _yoursDirectionsService.GetDirections(sourceLocation, targetLocation);

            if (string.IsNullOrEmpty(yoursResult) || yoursResult.StartsWith("<?xml version=\"1.0\"") || yoursResult.Contains("error"))
            {
                return(await RedirectToNextFallbackStrategy(session.LogicSettings, targetLocation, functionExecutedWhileWalking, session, cancellationToken));
            }

            var yoursWalk = YoursWalk.Get(yoursResult);

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

            return(await DoWalk(points, session, functionExecutedWhileWalking, sourceLocation, targetLocation, cancellationToken));
        }
コード例 #2
0
        public override async Task <PlayerUpdateResponse> Walk(IGeoLocation targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double walkSpeed = 0.0)
        {
            GetYoursInstance(session);
            var destinaionCoordinate = new GeoCoordinate(targetLocation.Latitude, targetLocation.Longitude);
            var sourceLocation       = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude, _client.CurrentAltitude);
            var yoursWalk            = _yoursDirectionsService.GetDirections(sourceLocation, destinaionCoordinate);

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

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

            return(await DoWalk(points, session, functionExecutedWhileWalking, sourceLocation, destinaionCoordinate, cancellationToken, walkSpeed));
        }
コード例 #3
0
        public override async Task <PlayerUpdateResponse> Walk(GeoCoordinate targetLocation, Func <Task> functionExecutedWhileWalking, ISession session, CancellationToken cancellationToken, double walkSpeed = 0.0)
        {
            GetYoursInstance(session);
            var sourceLocation = new GeoCoordinate(_client.CurrentLatitude, _client.CurrentLongitude, _client.CurrentAltitude);
            var yoursWalk      = _yoursDirectionsService.GetDirections(sourceLocation, targetLocation);

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

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

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