示例#1
0
        public IGameStep GetNextGameStep(GameStageEnum gameStage)
        {
            return(gameStage switch
            {
                GameStageEnum.CreateColumn => new CreateColumnGameStep(),
                GameStageEnum.FallColumn => new FallColumnGameStep(),
                GameStageEnum.CleanField => new CleanFieldGameStep(),
                GameStageEnum.CheckGameOver => new CheckGameOverGameStep(),

                _ => throw new NotImplementedException($"{nameof(GameStageEnum)}.{gameStage:G} is not implemented.")
            });
        public GameStageEnum SwitchStage(GameStageEnum currentGameStage)
        {
            return(currentGameStage switch
            {
                GameStageEnum.CreateColumn => GameStageEnum.FallColumn,
                GameStageEnum.FallColumn =>
                ContainerProvider.Resolve <IColumnDriver>().IsColumnInFinalPosition
                        ? GameStageEnum.CleanField
                        : GameStageEnum.FallColumn,
                GameStageEnum.CleanField => GameStageEnum.CheckGameOver,
                GameStageEnum.CheckGameOver => GameStageEnum.CreateColumn,

                _ => throw new NotImplementedException(
                    $"{nameof(GameStageEnum)}.{currentGameStage:G} is not implemented.")
            });