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.") });