Ejemplo n.º 1
0
        public static async Task SetupSteamGamesAsync(CancellationToken cancellationToken = default)
        {
            var data = new WaitDialogProgressData(WaitMessage, null, null, true);

            using var s = WaitDialogFactory.Instance.StartWaitDialog("FoC Launcher", data, TimeSpan.FromSeconds(2));
            var linkedToken =
                CancellationTokenSource.CreateLinkedTokenSource(cancellationToken, s.UserCancellationToken);

            await SetupSteamGameCoreAsync(linkedToken.Token, s.Progress);
        }
Ejemplo n.º 2
0
        public static void Run(this JoinableTaskFactory joinableTaskFactory, string waitCaption, string waitMessage,
                               Func <IProgress <WaitDialogProgressData>, Task> asyncMethod, TimeSpan?delayToShowDialog = null)
        {
            Requires.NotNull(joinableTaskFactory, nameof(joinableTaskFactory));
            Requires.NotNullOrEmpty(waitMessage, nameof(waitMessage));
            Requires.NotNull(asyncMethod, nameof(asyncMethod));
            ThreadHelper.ThrowIfNotOnUIThread(nameof(Run));
            var waitDialogFactory = WaitDialogFactory.Instance;

            Assumes.Present(waitDialogFactory);
            var initialProgress = new WaitDialogProgressData(waitMessage);

            using var twd = waitDialogFactory.StartWaitDialog(waitCaption, initialProgress,
                                                              delayToShowDialog ?? DefaultWaitDialogDelay);
            joinableTaskFactory.Run(() => asyncMethod(twd.Progress));
        }
 protected override void OnGameStarting(GameStartingEventArgs args)
 {
     if (!SteamClient.Instance.IsRunning)
     {
         ThreadHelper.JoinableTaskFactory.Run(async() =>
         {
             var data    = new WaitDialogProgressData("Waiting for Steam...", isCancelable: true);
             using var s = WaitDialogFactory.Instance.StartWaitDialog("FoC Launcher", data, TimeSpan.FromSeconds(2));
             SteamClient.Instance.StartSteam();
             try
             {
                 await SteamClient.Instance.WaitSteamRunningAndLoggedInAsync(s.UserCancellationToken);
             }
             catch (OperationCanceledException)
             {
                 args.Cancel = true;
             }
         });
     }
     base.OnGameStarting(args);
 }