コード例 #1
0
            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)
                });
            }
コード例 #2
0
 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
         }
     });
 }
コード例 #3
0
 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
         }
     });
 }
コード例 #4
0
 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
         }
     });
 }
コード例 #5
0
 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()
     });
 }
コード例 #6
0
ファイル: RaceU.xaml.cs プロジェクト: tankyx/actools
            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();
            }
コード例 #7
0
ファイル: WorldSimSeries.xaml.cs プロジェクト: tankyx/actools
            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"),
                            }
                        }
                    });
コード例 #8
0
 public abstract Task Drive(Game.BasicProperties basicProperties,
                            Game.AssistsProperties assistsProperties,
                            Game.ConditionProperties conditionProperties, Game.TrackProperties trackProperties);