private void _onConfirmTurnButton()
    {
        string instructionTextKey = "Pass device to " + _matchState.playerGroup.GetNextPlayer().name;

        _passController.Start(instructionTextKey, () =>
        {
            Assert.IsNotNull(onEndTurn);
            onEndTurn();

            _refreshHandView(activePlayer);
            _playfieldView.SetActivePlayer(activePlayer.index);
        });
    }
    private void _endPlayerTurn(bool serverOverride)
    {
        if (!serverOverride && localPlayer.id != activePlayer.id)
        {
            return;
        }

        Assert.IsNotNull(onEndTurn);
        onEndTurn(_moveRequests);

        _moveRequests.Clear();

        _refreshHandView(localPlayer);
        _playfieldView.SetActivePlayer(activePlayer.index);
    }
    public void Start(GameMatchState matchState)
    {
        _matchState = matchState;

        _setupFX();

        _passController = new PassInterludeController();

        viewFactory.CreateAsync <PlayFieldView>("PlayFieldView", (_view) =>
        {
            _playfieldView = _view as PlayFieldView;
            view           = _view;

            _playfieldView.onIntroFinishedEvent += _playfieldView_OnIntroTransitionEvent;
            _playfieldView.confirmButton.onClick.AddListener(_onConfirmTurnButton);
            _playfieldView.undoButton.onClick.AddListener(_onUndoButton);
            _playfieldView.exitButton.onClick.AddListener(_onExitButton);

            _playfieldView.SetActivePlayer(activePlayer.index);

            for (int i = 0; i < _matchState.playerGroup.playerCount; ++i)
            {
                PlayerState player = _matchState.playerGroup.GetPlayerByIndex(i);
                _playfieldView.SetPlayerName(i, player.name);
                _playfieldView.SetPlayerScore(i, player.score);
            }

            _setupActiveCustomersView(_playfieldView.staticCardLayer);
            _createPlayerHandView(kLocalPlayerIndex, _playfieldView.staticCardLayer);
        });
    }
    public void Start(GameMatchState matchState)
    {
        _matchState = matchState;

        _setupFX();

        viewFactory.CreateAsync <PlayFieldView>("PlayFieldView", (_view) =>
        {
            _playfieldView = _view as PlayFieldView;
            view           = _view;

            _playfieldView.onIntroFinishedEvent += _playfieldView_OnIntroTransitionEvent;
            _playfieldView.confirmButton.onClick.AddListener(_onConfirmTurnButton);
            _playfieldView.undoButton.onClick.AddListener(_onUndoButton);
            _playfieldView.exitButton.onClick.AddListener(_onExitButton);

            _playfieldView.SetActivePlayer(activePlayer.index);

            if (_networkManager.isConnected)
            {
                _playfieldView.SetThisPlayer(PhotonNetwork.player.NickName);
            }

            for (int i = 0; i < _matchState.playerGroup.playerCount; ++i)
            {
                PlayerState player = _matchState.playerGroup.GetPlayerByIndex(i);
                _playfieldView.SetPlayerName(i, player.name);
                _playfieldView.SetPlayerScore(i, player.score);
            }

            _setupActiveCustomersView(_playfieldView.staticCardLayer);
            _createPlayerHandView(localPlayer.index, _playfieldView.staticCardLayer);

            //_shockClockController = new ShockClockController();
            //_shockClockController.Start(10.0, PhotonNetwork.time, onTimerCallback);
            viewFactory.CreateAsync <ShockClockView>("ShockClockView", (clock) =>
            {
                _shockClockView           = clock as ShockClockView;
                _shockClockView.timerText = "10";
            }, _playfieldView.staticCardLayer);
        });
    }