private async Task <PlayerUpdateResponse> UpdatePlayerLocation(double lat, double lng, double alt) { //randomize altitude alt = Math.Round((alt < 5) ? GenRandom(alt, 2, (5 * (1 + .02))) : (alt > 25) ? GenRandom(alt, (alt * (1 - .02)), 1) : GenRandom(alt, (alt * (1 - .03)), (alt * (1 + .03))), 1); Context.Settings.CurrentLatitude = lat; Context.Settings.CurrentLongitude = lng; Context.Settings.CurrentAltitude = alt; if (!_lastSaveDate.HasValue || _lastSaveDate.Value < DateTime.Now) { Context.Settings.Save(); Context.Session.Save(); _lastSaveDate = DateTime.Now.AddSeconds(10); } if (!_lastPingDate.HasValue || _lastPingDate.Value < DateTime.Now) { Context.Utility.Save(new GeoCoordinate(lat, lng, alt), Context.Statistics.PlayerName, Context.Statistics.Currentlevel, System.IO.Path.Combine(Context.Directories.PingDirectory, DateTime.Now.Hour.ToString().PadLeft(2, '0') + DateTime.Now.Minute.ToString().PadLeft(2, '0') + DateTime.Now.Second.ToString().PadLeft(2, '0') + ".xml")); _lastPingDate = DateTime.Now.AddMinutes(1); } var r = await Context.Client.Player.UpdatePlayerLocation(lat, lng, alt, GetLastKnownSpeedConverted()); OnChangeLocation?.Invoke(new LocationData(lat, lng, alt)); return(r); }
private async Task <PlayerUpdateResponse> UpdatePlayerLocation(double lat, double lng, double alt) { //randomize altitude alt = Math.Round((alt < 5) ? GenRandom(alt, 2, (5 * (1 + .02))) : (alt > 25) ? GenRandom(alt, (alt * (1 - .02)), 1) : GenRandom(alt, (alt * (1 - .03)), (alt * (1 + .03))), 1); Context.Settings.CurrentLatitude = lat; Context.Settings.CurrentLongitude = lng; Context.Settings.CurrentAltitude = alt; if (!_lastSaveDate.HasValue || _lastSaveDate.Value < DateTime.Now) { Context.Settings.Save(); _lastSaveDate = DateTime.Now.AddSeconds(10); } var r = await Context.Client.Player.UpdatePlayerLocation(lat, lng, alt); OnChangeLocation?.Invoke(new LocationData(lat, lng, alt)); return(r); }