Example #1
0
        public override async UniTask <GameState> TickAsync(CancellationToken token)
        {
            _buttonContainerUseCase.ActivateButton(true);

            // ボタン入力待ち
            var input = await _buttonController.PushButton().ToUniTask(true, token);

            _buttonContainerUseCase.ActivateButton(false);

            switch (input)
            {
            case InputType.None:
                return(GameState.None);

            case InputType.MoveLeft:
            case InputType.MoveRight:
                await _stageObjectContainerUseCase.MoveAsync(input, token);

                break;

            case InputType.RotateLeft:
            case InputType.RotateRight:
                await(
                    _stageObjectContainerUseCase.RotateAsync(input, token),
                    _stageView.RotateAsync(input, token)
                    );
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }

            return(GameState.Move);
        }