public override async Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties) { var selectedCar = CarsManager.Instance.GetById(basicProperties.CarId ?? ""); var selectedTrack = TracksManager.Instance.GetLayoutById(basicProperties.TrackId ?? "", basicProperties.TrackConfigurationId); IEnumerable <Game.AiCar> botCars; try { using (var waiting = new WaitingDialog()) { if (selectedCar == null || !selectedCar.Enabled) { ModernDialog.ShowMessage(AppStrings.Drive_CannotStart_SelectNonDisabled, AppStrings.Drive_CannotStart_Title, MessageBoxButton.OK); return; } if (selectedTrack == null) { ModernDialog.ShowMessage(AppStrings.Drive_CannotStart_SelectTrack, AppStrings.Drive_CannotStart_Title, MessageBoxButton.OK); return; } botCars = await RaceGridViewModel.GenerateGameEntries(waiting.CancellationToken); if (waiting.CancellationToken.IsCancellationRequested) { return; } if (botCars == null || !botCars.Any()) { ModernDialog.ShowMessage(AppStrings.Drive_CannotStart_SetOpponent, AppStrings.Drive_CannotStart_Title, MessageBoxButton.OK); return; } } } catch (Exception e) when(e.IsCanceled()) { return; } catch (Exception e) { NonfatalError.Notify("Can’t create race grid", e); return; } basicProperties.Ballast = RaceGridViewModel.PlayerBallast; basicProperties.Restrictor = RaceGridViewModel.PlayerRestrictor; await StartAsync(new Game.StartProperties { BasicProperties = basicProperties, AssistsProperties = assistsProperties, ConditionProperties = conditionProperties, TrackProperties = trackProperties, ModeProperties = GetModeProperties(botCars) }); }
public override async Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties) { await StartAsync(new Game.StartProperties { BasicProperties = basicProperties, AssistsProperties = assistsProperties, ConditionProperties = conditionProperties, TrackProperties = trackProperties, ModeProperties = new Game.TimeAttackProperties { Penalties = Penalties } }); }
public override async Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties) { await StartAsync(new Game.StartProperties { BasicProperties = basicProperties, AssistsProperties = assistsProperties, ConditionProperties = conditionProperties, TrackProperties = trackProperties, ModeProperties = new Game.HotlapProperties { Penalties = Penalties, GhostCar = GhostCar, GhostCarAdvantage = GhostCarAdvantage, RecordGhostCar = SettingsHolder.Drive.AlwaysRecordGhost ? true : (bool?)null } }); }
public override async Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties) { basicProperties.Ballast = PlayerBallast; basicProperties.Restrictor = PlayerRestrictor; await StartAsync(new Game.StartProperties { BasicProperties = basicProperties, AssistsProperties = assistsProperties, ConditionProperties = conditionProperties, TrackProperties = trackProperties, ModeProperties = new Game.PracticeProperties { Penalties = Penalties, StartType = SelectedStartType } }); }
public override async Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties, string serializedQuickDrivePreset, IList <object> additionalProperties) { basicProperties.Ballast = PlayerBallast; basicProperties.Restrictor = PlayerRestrictor; await StartAsync(new Game.StartProperties { BasicProperties = basicProperties, AssistsProperties = assistsProperties, ConditionProperties = conditionProperties, TrackProperties = trackProperties, ModeProperties = new Game.TimeAttackProperties { Penalties = Penalties }, AdditionalPropertieses = additionalProperties.Concat(new object[] { new QuickDrivePresetProperty(serializedQuickDrivePreset), new CarCustomDataHelper() }).ToList() }); }
public void _startOnlineRace(string jsonParams, IJavascriptCallback callback = null) { var args = JObject.Parse(jsonParams); if (_car == null) { throw new Exception("Car is not set"); } if (_track == null) { throw new Exception("Track is not set"); } var ip = args.GetStringValueOnly("ip") ?? throw new Exception("“ip” parameter is missing"); var port = args.GetIntValueOnly("port") ?? throw new Exception("“port” parameter is missing"); var properties = new Game.StartProperties { BasicProperties = new Game.BasicProperties { CarId = _car.Id, TrackId = _track.MainTrackObject.Id, TrackConfigurationId = _track.LayoutId, CarSkinId = _carSkin?.Id ?? _car.SelectedSkin?.Id ?? "" }, ModeProperties = new Game.OnlineProperties { Guid = SteamIdHelper.Instance.Value, ServerIp = ip, ServerPort = port, ServerHttpPort = args.GetIntValueOnly("httpPort") ?? throw new Exception("“httpPort” parameter is missing"), Password = args.GetStringValueOnly("password") ?? InternalUtils.GetRaceUPassword(_track.IdWithLayout, ip, port), RequestedCar = _car.Id, CspFeaturesList = args.GetStringValueOnly("cspFeatures"), CspReplayClipUploadUrl = args.GetStringValueOnly("cspReplayClipUploadUrl"), } }; ActionExtension.InvokeInMainThread(async() => { var result = await GameWrapper.StartAsync(properties); callback?.ExecuteAsync(result?.IsNotCancelled); }).Ignore(); }
public void startOnlineRace(string paramsJson, IJavascriptCallback callback = null) { if (_car == null) { throw new Exception("Car is not set"); } if (_track == null) { throw new Exception("Track is not set"); } var obj = JObject.Parse(paramsJson); ActionExtension.InvokeInMainThreadAsync(async() => { var result = await GameWrapper.StartAsync(new Game.StartProperties { BasicProperties = new Game.BasicProperties { CarId = _car.Id, TrackId = _track.MainTrackObject.Id, TrackConfigurationId = _track.LayoutId, CarSkinId = _carSkin?.Id ?? _car.SelectedSkin?.Id ?? "" }, ModeProperties = new Game.OnlineProperties { Guid = SteamIdHelper.Instance.Value, ServerIp = obj.GetStringValueOnly("ip") ?? throw new Exception(@"Field “ip” is required"), ServerPort = obj.GetIntValueOnly("port") ?? throw new Exception(@"Field “port” is required"), ServerHttpPort = obj.GetIntValueOnly("httpPort") ?? throw new Exception(@"Field “httpPort” is required"), RequestedCar = _car.Id, Password = obj.GetStringValueOnly("password") }, AdditionalPropertieses = { new WorldSimSeriesMark { Name = obj.GetStringValueOnly("driverName"), Nationality = obj.GetStringValueOnly("driverNationality"), NationCode = obj.GetStringValueOnly("driverNationCode"), Team = obj.GetStringValueOnly("driverTeam"), } } });
public abstract Task Drive(Game.BasicProperties basicProperties, Game.AssistsProperties assistsProperties, Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties);