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)); }
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)); }
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)); }