private static ComputerCommand <OsState> HandleUiEvent(OsState osState, RacesState state, V click) { var control = AppControl(osState, state); var clickedArea = control.GetClickedArea(click); if (clickedArea == null) { return(RenderUI(osState, state)); } if (clickedArea.EventId == NextStageEventId) { return(osState.SwitchToStage(OsModule.GamesManagementStageId, GameManagementModule.Stage.InitialStageState)); } if (clickedArea.EventId == ShowRaceDetailsId) { state.SelectedRaceIndex = clickedArea.Argument; return(RenderUI(osState, state)); } if (clickedArea.EventId == CloseRaceDetailsEventId) { state.Status = RacesStatus.Galaxy; state.SelectedRaceIndex = -1; return(RenderUI(osState, state)); } if (clickedArea.EventId == RunBonusPuzzleEventId) { return(RunBonusPuzzle(osState, state, clickedArea.Argument)); } if (clickedArea.EventId == ShowLasersSpecEventId) { state.Status = RacesStatus.ShowLasersSpec; return(RenderUI(osState, state)); } if (clickedArea.EventId == ShowDetonateSpecEventId) { state.Status = RacesStatus.ShowDetonateSpec; return(RenderUI(osState, state)); } return(RenderUI(osState, state)); }
private static ComputerCommand <OsState> RunBonusPuzzle(OsState osState, RacesState state, in long bonusId)