/// <summary> /// Confirms that the user wants to stop the gamelet and, if so, stops the gamelet. /// </summary> /// <returns>True if the user chooses to stop the gamelet and the gamelet stops /// successfully, false otherwise.</returns> bool PromptStopGame(ref Gamelet gamelet) { string gameletName = gamelet.DisplayName; bool okToStop = _actionRecorder.RecordUserAction( ActionType.GameletPrepare, () => _dialogUtil.ShowYesNo(ErrorStrings.GameletBusyWithAnotherAccount(gameletName), ErrorStrings.StopRunningGame)); if (!okToStop) { return(false); } gamelet = StopGameOnGamelet(gamelet); return(gamelet != null); }
bool PromptToDeleteLaunch(GgpGrpc.Models.GameLaunch currentGameLaunch, List <Gamelet> gamelets, Gamelet selectedGamelet, ActionRecorder actionRecorder, string testAccount, string devAccount) { if (currentGameLaunch.GameLaunchState == GameLaunchState.IncompleteLaunch) { return(true); } bool thisInstance = selectedGamelet.Name == currentGameLaunch.GameletName; string instanceName = gamelets .SingleOrDefault(g => g.Name == currentGameLaunch.GameletName)?.DisplayName; bool okToStop = actionRecorder.RecordUserAction(ActionType.GameLaunchStopPrompt, () => _dialogUtil.ShowYesNo( ErrorStrings.LaunchExistsDialogText( thisInstance, instanceName, testAccount, devAccount), ErrorStrings.StopRunningGame)); if (!okToStop) { // Developer opted to not stop the existing launch. // Launch can not proceed. return(false); } return(true); }
public void RecordCancelableModal(bool completed) { bool ranTask = false; actionRecorder.RecordUserAction(MetricActionType, delegate() { ranTask = true; return(completed); }); var expectedStatus = completed ? DeveloperEventStatus.Types.Code.Success : DeveloperEventStatus.Types.Code.Cancelled; Assert.IsTrue(ranTask); logEvent.StatusCode = expectedStatus; logEvent.LatencyType = DeveloperLogEvent.Types.LatencyType.LatencyUser; metrics.Received(1).RecordEvent(EventType, logEvent); }
/// <summary> /// Select the first available gamelet, or let the user pick from multiple gamelets. /// Ensure the selected gamelet is in a valid state before returning. /// </summary> bool TrySelectGamelet(List <Gamelet> gamelets, out Gamelet result) { Gamelet gamelet = result = null; bool res = _actionRecorder.RecordUserAction(ActionType.GameletSelect, delegate { bool isValid; switch (gamelets.Count) { case 0: throw new ConfigurationException(ErrorStrings.NoGameletsFound); case 1: gamelet = gamelets[0]; isValid = true; break; default: gamelet = _gameletSelectionWindowFactory.Create(gamelets).Run(); isValid = gamelet != null; break; } if (!isValid) { return(false); } if (gamelet.State != GameletState.InUse && gamelet.State != GameletState.Reserved) { throw new InvalidStateException(ErrorStrings.GameletInUnexpectedState(gamelet)); } return(true); }); result = gamelet; return(res); }