public Coroutine Show(UnoGamePlayData.Uno_FinishGame_Data _finishGameData)
    {
        if (currentState == State.Show)
        {
            return(null);
        }
        currentState = State.Show;
        myCanvasGroup.blocksRaycasts = true;
        myText.transform.localScale  = Vector3.one * 0.5f;

        bool _isMePlayingAndWin = false;

        for (int i = 0; i < _finishGameData.listPlayersData.Count; i++)
        {
            if (_finishGameData.listPlayersData[i].isWin)
            {
                UnoGamePlayData.Uno_FinishGame_Data.Player_Data _playerFinish      = _finishGameData.listPlayersData[i];
                UnoGamePlayData.Uno_PlayerPlayingData           _playerPlayingData = Uno_GamePlay_Manager.instance.unoGamePlayData.listPlayerPlayingData[_playerFinish.indexCircle];
                if (_playerPlayingData.isMe &&
                    Uno_GamePlay_Manager.instance.unoGamePlayData.CheckIsPlaying(_playerPlayingData.userData.sessionId))
                {
                    _isMePlayingAndWin = true;
                }
            }
        }

        string _stResult = string.Empty;

        switch (_finishGameData.reasonFinish)
        {
        case UnoGamePlayData.Uno_FinishGame_Data.Reason.PlayerWin:
            if (_isMePlayingAndWin)
            {
                _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_Victory");
            }
            else
            {
                _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_Finish");
            }
            break;

        case UnoGamePlayData.Uno_FinishGame_Data.Reason.OnePlayerInTable:
            _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_Finish");
            break;

        case UnoGamePlayData.Uno_FinishGame_Data.Reason.NoGlobalCards:
            _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_NoGlobalCards");
            break;

        case UnoGamePlayData.Uno_FinishGame_Data.Reason.TimeOut:
            _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_TimeOut");
            break;

        default:
            _stResult = MyLocalize.GetString("Uno/FinishGame_Reason_Finish");
            break;
        }
        myText.text = _stResult.ToUpper();

        if (tweenCanvasGroup != null)
        {
            LeanTween.cancel(tweenCanvasGroup.uniqueId);
            tweenCanvasGroup = null;
        }
        if (tweenMyText != null)
        {
            LeanTween.cancel(tweenMyText.uniqueId);
            tweenMyText = null;
        }
        if (actionShowOrHide != null)
        {
            StopCoroutine(actionShowOrHide);
            actionShowOrHide = null;
        }
        actionShowOrHide = DoActionShow();
        return(StartCoroutine(actionShowOrHide));
    }
Ejemplo n.º 2
0
    public IEnumerator DoActionShowGoldWinToPlayerAtFinishGame(UnoGamePlayData.Uno_FinishGame_Data _finishGameData, System.Action _onFinished)
    {
        double _totalBet = unoGamePlayData.totalBet * 0.95;

        panelTotalBet.SetBet((long)_totalBet);
        yield return(panelTotalBet.Show(false));

        yield return(null);

        List <IEnumerator>     _listActionShowEffGoldFly = new List <IEnumerator>();
        List <Uno_PlayerGroup> _tmpListPlayerGroup       = new List <Uno_PlayerGroup>();

        for (int i = 0; i < _finishGameData.listPlayersData.Count; i++)
        {
            UnoGamePlayData.Uno_FinishGame_Data.Player_Data _playerFinish = _finishGameData.listPlayersData[i];
            if (!_playerFinish.isWin)
            {
                continue;
            }
            UnoGamePlayData.Uno_PlayerPlayingData _playerPlayingData = unoGamePlayData.listPlayerPlayingData[_playerFinish.indexCircle];
            int             _indexChair  = _playerPlayingData.indexChair;
            Uno_PlayerGroup _playerGroup = Uno_GamePlay_Manager.instance.listPlayerGroup[_indexChair];
            _tmpListPlayerGroup.Add(_playerGroup);
            Vector2 _startPoint = panelTotalBet.imgIconChip.transform.position;
            Vector2 _endPoint   = _playerGroup.panelPlayerInfo.transform.position;

            _listActionShowEffGoldFly.Add(MyConstant.DoActionShowEffectGoldFly(goldPrefab, goldObjectPoolManager, sortingLayerManager.sortingLayerInfo_GoldObject
                                                                               , _startPoint, _endPoint, 10, 1f, 0.8f, () => {
                if (Uno_GamePlay_Manager.instance.CanPlayMusicAndSfx())
                {
                    MyAudioManager.instance.PlaySfx(GameInformation.instance.globalAudioInfo.sfx_Gold);
                }
            }));
        }
        CoroutineChain.Start
        .Parallel(_listActionShowEffGoldFly.ToArray());
        yield return(Yielders.Get(1.1f));

        panelTotalBet.SetBet(0, false);

        if (_tmpListPlayerGroup.Count > 0)
        {
            if (Uno_GamePlay_Manager.instance.CanPlayMusicAndSfx())
            {
                MyAudioManager.instance.PlaySfx(GameInformation.instance.globalAudioInfo.sfx_Gold);
            }
        }

        for (int i = 0; i < _tmpListPlayerGroup.Count; i++)
        {
            Vector3 _posStartPanelGoldBonus = _tmpListPlayerGroup[i].panelPlayerInfo.imgAvatar.transform.position;
            StartCoroutine(MyConstant.DoActionShowPopupWinGold(panelBonusGoldPrefab, effectPoolManager, Uno_GamePlay_Manager.instance.myCanvas.transform
                                                               , _posStartPanelGoldBonus, 0f, _finishGameData.goldWin));
            _tmpListPlayerGroup[i].panelPlayerInfo.RefreshGoldInfo();
        }
        if (myPanelUserInfo.currentState == PanelUserInfoInGameController.State.Show)
        {
            myPanelUserInfo.RefreshGoldInfo();
        }
        else
        {
            myPanelUserInfo.RefreshGoldInfo(true);
        }

        yield return(Yielders.Get(0.5f));

        yield return(panelTotalBet.Hide(false));

        if (_onFinished != null)
        {
            _onFinished();
        }
    }