コード例 #1
0
ファイル: RacesModule.cs プロジェクト: icfpcontest2020/galaxy
        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));
        }
コード例 #2
0
ファイル: RacesModule.cs プロジェクト: icfpcontest2020/galaxy
 private static ComputerCommand <OsState> RunBonusPuzzle(OsState osState, RacesState state, in long bonusId)