Exemplo n.º 1
0
 public RunKataAnalysisCommand(IPlayerNotifier playerNotifier,
                               ISettingsManager settingsManager,
                               IAnalysisContainer analysisContainer,
                               IAnalysisRunnerFactory analysisRunnerFactory,
                               IAnalysisResultProcessor analysisResultProcessor,
                               IKataraiApp kataraiApp)
 {
     if (playerNotifier == null)
     {
         throw new ArgumentNullException("playerNotifier");
     }
     if (settingsManager == null)
     {
         throw new ArgumentNullException("settingsManager");
     }
     if (analysisContainer == null)
     {
         throw new ArgumentNullException("analysisContainer");
     }
     if (analysisRunnerFactory == null)
     {
         throw new ArgumentNullException("analysisRunnerFactory");
     }
     if (kataraiApp == null)
     {
         throw new ArgumentNullException("kataraiApp");
     }
     _playerNotifier          = playerNotifier;
     _settingsManager         = settingsManager;
     _analysisRunnerFactory   = analysisRunnerFactory;
     AnalysisContainer        = analysisContainer;
     _analysisResultProcessor = analysisResultProcessor;
     _kataraiApp = kataraiApp;
 }
Exemplo n.º 2
0
        private string CreateJsonObject(PlayerImplementationRunResult playerImplementationRunResult,
                                        PlayerTestsRunResult playerTestsRunResult,
                                        PlayerFeedback playerFeedback,
                                        string attemptName,
                                        IKataraiApp kataraiApp,
                                        string playerPath,
                                        IFileSystem fileSystem)
        {
            var attemptCreationTime = GetAttemptCreationTime(attemptName);

            var kataStartTime = GetKataStartTime(attemptCreationTime, kataraiApp);

            return(JsonConvert.SerializeObject(new
            {
                userName = GetUserName(),
                attemptName,
                timestamp = GetTimestamp(),
                attemptCreationTime,
                kataStartTime,
                playerImplementationRunResult,
                playerTestsRunResult,
                overallAnalysisResult = playerFeedback,
                appVersion = GetAppVersion(),
                kataName = _kataHelper.GetKataName(attemptName),
                kata = GetKataFilesContents(playerPath, fileSystem)
            }, new JsonSerializerSettings
            {
                ContractResolver = new CamelCasePropertyNamesContractResolver(),
                NullValueHandling = NullValueHandling.Ignore
            }));
        }
Exemplo n.º 3
0
        private static MainWindowViewModel Create(
            IEventAggregator eventAggregator         = null,
            IKataAttemptRepository attemptRepository = null,
            IGenerateAndLaunchKataCommand generateAndLaunchKataCommand = null,
            ISettingsManager settingsManager = null,
            IPlayerNotifier playerNotifier   = null,
            IKataraiApp kataraiApp           = null)
        {
            settingsManager = settingsManager ?? CreateSubstituteSettingsManager();
            var viewModel = new MainWindowViewModel(
                eventAggregator ?? Substitute.For <IEventAggregator>(),
                kataraiApp ?? Substitute.For <IKataraiApp>(),
                playerNotifier ?? Substitute.For <IPlayerNotifier>(),
                attemptRepository ?? Substitute.For <IKataAttemptRepository>(),
                generateAndLaunchKataCommand ?? Substitute.For <IGenerateAndLaunchKataCommand>(),
                Substitute.For <ISendFeedbackCommand>(),
                Substitute.For <IShowMainWindowCommand>(),
                Substitute.For <IHideMainWindowCommand>(),
                Substitute.For <IExitApplicationCommand>(),
                settingsManager,
                Substitute.For <IOpenKataSolutionCommand>(),
                Substitute.For <IShowReminderSettingsCommand>(),
                Substitute.For <IShowAttemptsCommand>(),
                Substitute.For <IShowCompletedKatasCommand>(),
                Substitute.For <IShowAttemptsPerWeekCommand>(),
                Substitute.For <IAbandonAttemptCommand>(),
                Substitute.For <IShowAboutWindowCommand>());

            viewModel.KataraiApp = new KataraiApp(settingsManager);
            return(viewModel);
        }
Exemplo n.º 4
0
 public GameMonitor(IKataraiApp kataraiApp)
 {
     if (kataraiApp == null)
     {
         throw new ArgumentNullException("kataraiApp");
     }
     _kataraiApp = kataraiApp;
 }
Exemplo n.º 5
0
        private DateTime GetKataStartTime(DateTime attemptCreationTime, IKataraiApp kataraiApp)
        {
            var kataStartTime = attemptCreationTime;
            var kataTimer     = kataraiApp.AttemptGameState.KataTimer;

            if (kataTimer != null && kataTimer.StartTime > DateTime.MinValue)
            {
                kataStartTime = kataTimer.StartTime;
            }
            return(kataStartTime);
        }
Exemplo n.º 6
0
        public void Log(ProgressEvent progressEvent, IKataraiApp kataraiApp)
        {
            var playerPath  = GetPlayerPath(kataraiApp);
            var attemptName = GetAttemptName(playerPath);

            if (!attemptName.Contains("-"))
            {
                return;
            }
            var jsonObject = CreateJsonObject(progressEvent, attemptName);

            _splunkAppender.Log(jsonObject, "katarai_progress");
        }
Exemplo n.º 7
0
        public void Log(PlayerImplementationRunResult playerImplementationRunResult,
                        PlayerTestsRunResult playerTestsRunResult,
                        PlayerFeedback playerFeedback,
                        IKataraiApp kataraiApp,
                        IFileSystem fileSystem)
        {
            var playerPath  = GetPlayerPath(kataraiApp);
            var attemptName = GetAttemptName(playerPath);

            if (!attemptName.Contains("-"))
            {
                return;
            }
            var jsonObject = CreateJsonObject(playerImplementationRunResult, playerTestsRunResult, playerFeedback, attemptName, kataraiApp, playerPath, fileSystem);

            _splunkAppender.Log(jsonObject, "katarai");
        }
Exemplo n.º 8
0
        private static RunKataAnalysisCommand CreateRunKataAnalysisCommand(IPlayerNotifier playerNotifier = null, ISettingsManager settingsManager = null, IAnalysisContainer analysisContainer = null, IAnalysisRunnerFactory analysisRunnerFactory = null, IAnalysisResultProcessor analysisResultProcessor = null, KataraiSettings kataraiSettings = null, IKataraiApp kataraiApp = null)
        {
            playerNotifier  = playerNotifier ?? Substitute.For <IPlayerNotifier>();
            kataraiSettings = kataraiSettings ?? new KataraiSettings();
            if (settingsManager == null)
            {
                settingsManager = Substitute.For <ISettingsManager>();
                settingsManager.FetchCurrentSettings().Returns(kataraiSettings);
            }
            analysisContainer       = analysisContainer ?? Substitute.For <IAnalysisContainer>();
            analysisResultProcessor = analysisResultProcessor ?? Substitute.For <IAnalysisResultProcessor>();
            analysisRunnerFactory   = analysisRunnerFactory ?? Substitute.For <IAnalysisRunnerFactory>();
            kataraiApp = kataraiApp ?? Substitute.For <IKataraiApp>();
            var runKataAnalysisCommand = new RunKataAnalysisCommand(playerNotifier, settingsManager, analysisContainer, analysisRunnerFactory, analysisResultProcessor, kataraiApp);

            return(runKataAnalysisCommand);
        }
Exemplo n.º 9
0
        public MainWindowViewModel(
            IEventAggregator eventAggregator,
            IKataraiApp kataraiApp,
            IPlayerNotifier playerNotifier,
            IKataAttemptRepository attemptRepository,
            IGenerateAndLaunchKataCommand generateKataCommand,
            ISendFeedbackCommand sendFeedbackCommand,
            IShowMainWindowCommand showMainWindowCommand,
            IHideMainWindowCommand hideMainWindowCommand,
            IExitApplicationCommand exitApplicationCommand,
            ISettingsManager settingsManager,
            IOpenKataSolutionCommand openKataSolutionCommand,
            IShowReminderSettingsCommand showReminderSettingsCommand,
            IShowAttemptsCommand showAttemptsCommand,
            IShowCompletedKatasCommand showCompletedKatasCommand,
            IShowAttemptsPerWeekCommand showAttemptsPerWeekCommand,
            IAbandonAttemptCommand abandonAttemptCommand,
            IShowAboutWindowCommand showAboutWindowCommand)
        {
            if (eventAggregator == null)
            {
                throw new ArgumentNullException(nameof(eventAggregator));
            }
            if (kataraiApp == null)
            {
                throw new ArgumentNullException(nameof(kataraiApp));
            }
            if (playerNotifier == null)
            {
                throw new ArgumentNullException(nameof(playerNotifier));
            }
            if (attemptRepository == null)
            {
                throw new ArgumentNullException(nameof(attemptRepository));
            }
            if (generateKataCommand == null)
            {
                throw new ArgumentNullException(nameof(generateKataCommand));
            }
            if (sendFeedbackCommand == null)
            {
                throw new ArgumentNullException(nameof(sendFeedbackCommand));
            }
            if (showMainWindowCommand == null)
            {
                throw new ArgumentNullException(nameof(showMainWindowCommand));
            }
            if (hideMainWindowCommand == null)
            {
                throw new ArgumentNullException(nameof(hideMainWindowCommand));
            }
            if (exitApplicationCommand == null)
            {
                throw new ArgumentNullException(nameof(exitApplicationCommand));
            }
            if (openKataSolutionCommand == null)
            {
                throw new ArgumentNullException(nameof(openKataSolutionCommand));
            }
            if (showReminderSettingsCommand == null)
            {
                throw new ArgumentNullException(nameof(showReminderSettingsCommand));
            }
            if (showAttemptsCommand == null)
            {
                throw new ArgumentNullException(nameof(showAttemptsCommand));
            }
            if (showCompletedKatasCommand == null)
            {
                throw new ArgumentNullException(nameof(showCompletedKatasCommand));
            }
            if (showAttemptsPerWeekCommand == null)
            {
                throw new ArgumentNullException(nameof(showAttemptsPerWeekCommand));
            }
            if (abandonAttemptCommand == null)
            {
                throw new ArgumentNullException(nameof(abandonAttemptCommand));
            }
            if (showAboutWindowCommand == null)
            {
                throw new ArgumentNullException(nameof(showAboutWindowCommand));
            }
            _eventAggregator            = eventAggregator;
            _kataraiApp                 = kataraiApp;
            _playerNotifier             = playerNotifier;
            _attemptRepository          = attemptRepository;
            _settingsManager            = settingsManager;
            ShowReminderSettingsCommand = WrapWithLogging(showReminderSettingsCommand);
            ShowAttemptsCommand         = WrapWithLogging(showAttemptsCommand);
            ShowCompletedKatasCommand   = WrapWithLogging(showCompletedKatasCommand);
            ShowAttemptsPerWeekCommand  = WrapWithLogging(showAttemptsPerWeekCommand);
            AbandonAttemptCommand       = WrapWithLogging(abandonAttemptCommand);
            GenerateKataSolution        = WrapWithLogging(generateKataCommand);
            RegisterNewKataAttemptEvent();
            SendFeedbackCommand     = sendFeedbackCommand;
            ShowWindowCommand       = WrapWithLogging(showMainWindowCommand);
            HideWindowCommand       = WrapWithLogging(hideMainWindowCommand);
            ExitApplicationCommand  = exitApplicationCommand;
            ShowAboutWindowCommand  = showAboutWindowCommand;
            OpenKataSolutionCommand = WrapWithLogging(openKataSolutionCommand);

            Katas = _attemptRepository.GetKataInfos();
            LoadSettings();
            IsAlwaysOnTop  = settingsManager.IsAlwaysOnTopOn();
            ShouldShowHint = settingsManager.IsShowHintOn();
            NotificationVisibilityTimeSeconds = settingsManager.GetNotificationVisibilityTime();
            RegisterAbandonAttemptEvent();

            Initialize();
            KataMenuItems = new ObservableCollection <MenuItem>();
            FeedbackItems = new ObservableCollection <string>();
            SetupKataMenuItems();
            _eventAggregator.Subscribe(this);
        }
Exemplo n.º 10
0
 private string GetPlayerPath(IKataraiApp kataraiApp)
 {
     return(kataraiApp.SettingsManager.FetchCurrentSettings().PlayerPath);
 }