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