Exemple #1
0
        public async Task LaunchAndSpectate(LoadedReplay loadedReplay)
        {
            await contextSetter.SetContextAsync(loadedReplay);

            await gameController.LaunchAsync();

            if (settings.OBS.Enabled)
            {
                obsController.ConfigureFromContext();
                obsController.SwapToGameScene();
                obsController.StartRecording();
                await spectator.SpectateAsync();

                obsController.StopRecording();
                gameController.Kill();
                await obsController.CycleReportAsync();

                obsController.SwapToWaitingScene();
            }
            else
            {
                await spectator.SpectateAsync();

                gameController.Kill();
            }
        }
Exemple #2
0
        private async Task SpectatorAsync()
        {
            while (!consoleTokenProvider.Token.IsCancellationRequested)
            {
                LoadedReplay loadedReplay = await replayProvider.TryLoadNextReplayAsync();

                if (loadedReplay != null)
                {
                    await gameManager.LaunchAndSpectate(loadedReplay);
                }
            }
        }
Exemple #3
0
        public async Task OutputReportAsync()
        {
            await gameData.LoadDataAsync().ConfigureAwait(false);

            LoadedReplay loadedReplay = await provider.TryLoadNextReplayAsync();

            IEnumerable <string> lines = analyzer.GetPlayers(loadedReplay.Replay)
                                         .Select(WriteCsvLine)
                                         .Prepend(string.Join(",", headers));

            Directory.CreateDirectory(settings.SpectateReportPath);

            string report = Path.Combine(settings.SpectateReportPath, Path.GetFileName(loadedReplay.FileInfo.FullName) + ".csv");

            await File.WriteAllLinesAsync(report, lines, tokenProvider.Token);
        }
        public async Task SetContextAsync(LoadedReplay loadedReplay)
        {
            if (loadedReplay == null)
            {
                throw new ArgumentNullException(nameof(loadedReplay));
            }

            Previous = Current;

            Replay replay = loadedReplay.Replay;

            var players   = replayAnalyzer.GetPlayers(replay);
            var panels    = replayAnalyzer.GetPanels(replay);
            var end       = replayAnalyzer.GetEnd(replay);
            var isCarried = replayAnalyzer.GetIsCarriedObjective(replay);
            var start     = replayAnalyzer.GetStart(replay);
            var payloads  = replayAnalyzer.GetPayloads(replay);
            var teamBans  = replayAnalyzer.GetTeamBans(replay);
            var directory = Directory.CreateDirectory(settings.ContextsDirectory).CreateSubdirectory($"{loadedReplay.ReplayId}");

            Current = new ContextData
            {
                LoadedReplay          = loadedReplay,
                Payloads              = payloads,
                Players               = players,
                Panels                = panels,
                GatesOpen             = start,
                CoreKilled            = end,
                IsCarriedObjectiveMap = isCarried,
                Timeloaded            = DateTime.Now,
                Directory             = directory,
                TeamBans              = teamBans
            };

            await contextFileManager.WriteContextFilesAsync(Current);
        }