Ejemplo n.º 1
0
    //初始化牌的值和位置
    void InitMahjongPos()
    {
        if (MahjongManger.Instance.iniAnimationStatus < 2 && !MahjongManger.Instance.bPongGang)
        {
            return;
        }
        MahjongManger.Instance.bPongGang = false;

        //   Debug.LogError("iniAnimationStatus:================:" + MahjongManger.Instance.iniAnimationStatus);
        MahjongManger.Instance.iniAnimationStatus = 0;
        PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData;

        pppd.CurrentCradSort(2);
        MahjongManger.Instance.GetFirstMahjongPos(0);
    }
Ejemplo n.º 2
0
    /// <summary>
    /// 打出牌之后的操作
    /// </summary>
    /// <param name="status">1表示正常打出牌,2表示碰杠的处理</param>
    public void PutCard(int status)
    {
        #region 关闭提示
        showM[] show = transform.parent.parent.parent.GetComponentsInChildren <showM>();
        //Debug.LogError("down" + show.Length);
        for (int i = 0; i < show.Length; i++)
        {
            if (show[i].isOpen)
            {
                show[i].Stop();
                for (int j = 0; j < show[i].m.Length; j++)
                {
                    show[i].m[j].enabled = false;
                }
                show[i].isOpen = false;
            }
        }
        #endregion 关闭提示
        Vector3 firstPos            = Vector3.zero; //第一张麻将的位置
        PlayerPlayingPanelData pppd = GameData.Instance.PlayerPlayingPanelData;
        pppd.isCanHandCard = false;
        if (status == 1 && pppd.iPlayerHostStatus == 0)
        {
            //发送出牌请求
            byte value = Convert.ToByte(bMahjongValue.ToString("x8"));
            NetMsg.ClientDiscardTileReq msg = new NetMsg.ClientDiscardTileReq();
            msg.iUserId         = GameData.Instance.PlayerNodeDef.iUserId;
            msg.byDrawSeaBottom = bMahjongValue;
            MahjongManger.Instance.TingFirstValue = msg.byDrawSeaBottom;
            NetworkMgr.Instance.GameServer.SendDiscardTileReq(msg);
            MahjongManger.Instance.isEndPutAnimation = false;
            UIMainView.Instance.PlayerPlayingPanel.TingShow.SetActive(false);
            MahjongManger.Instance.HideTingLogo();
        }


        //隐藏该麻将
        //transform.localScale = Vector3.one * 0.001f;
        iState = 0;
        //获取第一张麻将的位置
        //firstPos = MahjongManger.Instance.GetFirstMahjongPos(0);
        firstPos = MahjongManger.Instance.FirstPos;
        //获取打出牌的下标
        for (int i = 0; i < pppd.usersCardsInfo[0].listCurrentCards.Count; i++)
        {
            if (bMahjongValue == pppd.usersCardsInfo[0].listCurrentCards[i].cardNum && iMahId == pppd.usersCardsInfo[0].listCurrentCards[i].MahId)
            {
                pppd.usersCardsInfo[0].listCurrentCards.RemoveAt(i);
                MahjongManger.Instance.iputCardIndex = i;
                break;
            }
        }


        int deadcardValue = -1;
        int mahid         = -1;
        if (MahjongManger.Instance.PlayerDealHandCrad != null)
        {
            deadcardValue = MahjongManger.Instance.PlayerDealHandCrad.bMahjongValue;
            mahid         = MahjongManger.Instance.PlayerDealHandCrad.iMahId;
        }
        //判断打出的牌是不是摸到的手牌
        if (isDealCard)
        {
            isDealCard = false;
        }
        else
        {
            //对list进行排序,获取手牌的下标
            pppd.CurrentCradSort(0);
            pppd.CurrentCradSort(0);
            //处理玩家吃碰之后的打牌操作
            if (deadcardValue == -1 && mahid == -1)
            {
                if (pppd.isSpwanSpecialCard)
                {
                    pppd.isSpwanSpecialCard = false;
                    MahjongManger.Instance.insertCardIndex = pppd.usersCardsInfo[0].listCurrentCards.Count;
                }
                else
                {
                    MahjongManger.Instance.insertCardIndex = -1;
                    MahjongManger.Instance.iputCardIndex  -= 1;
                }
            }
            else
            {
                for (int i = 0; i < pppd.usersCardsInfo[0].listCurrentCards.Count; i++)
                {
                    if (deadcardValue == pppd.usersCardsInfo[0].listCurrentCards[i].cardNum && mahid == pppd.usersCardsInfo[0].listCurrentCards[i].MahId)
                    {
                        MahjongManger.Instance.insertCardIndex = i;
                        break;
                    }
                }
            }

            Mahjong[] mah = new Mahjong[Mathf.Abs(MahjongManger.Instance.insertCardIndex - MahjongManger.Instance.iputCardIndex)];


            if (Mathf.Abs(MahjongManger.Instance.insertCardIndex - MahjongManger.Instance.iputCardIndex) > 0)
            {
                mah = MahjongManger.Instance.GetWillMoveCard();
            }

            //调用移动方法插入手牌
            if (mah.Length > 0)
            {
                for (int i = 0; i < mah.Length; i++)
                {
                    mah[i].MoveSelf(MahjongManger.Instance.MoveStatus, 1);
                }
            }

            //Debug.LogError("这张麻将的信息,deadcardValue:" + deadcardValue + ",mahid:" + mahid);

            if (deadcardValue != -1 && mahid != -1)
            {
                MahjongManger.Instance.flyMahjongIndexPos(firstPos);
            }
            else
            {
                MahjongManger.Instance.GetFirstMahjongPos(0);
            }
        }

        int index = pppd.GetOtherPlayerShowPos(pppd.bySeatNum + 1) - 1;
        if (status == 1)
        {
            byte value = bMahjongValue;
            //if (PlayerPrefs.HasKey("TingOneCard"))
            //{
            //    if (PlayerPrefs.GetInt("TingOneCard") == 1 && pppd.playingMethodConf.byDiscardSeeReadHandTile == 0)
            //    {
            //        value = 255;
            //    }
            //}
            pppd.iSpwanCardNum--;
            //先在同一个位置产生一个对应的预置体,然后移动
            transform.localScale = Vector3.zero;
            GameObject go = Instantiate(Resources.Load <GameObject>("Game/Ma/TabelBigCard"));
            go.transform.SetParent(UIMainView.Instance.PlayerPlayingPanel._Cards[0].transform.Find("currentGroup"));
            go.name = "TabelBigCard";
            go.transform.localPosition    = transform.localPosition;
            go.transform.localScale       = Vector3.one * 1.2f;
            go.transform.localEulerAngles = Vector3.zero;
            UIMainView.Instance.PlayerPlayingPanel.ChangeCardNum(go.transform.Find("Image/num").GetComponent <Image>(), value, index);
            go.GetComponent <Mahjong>().bMahjongValue = value;
            go.GetComponent <Mahjong>().PutCardAnimator(pppd.bySeatNum, value, 1);
            PoolManager.Unspawn(gameObject);
        }
        else
        {
        }
        isDealCard = false;
    }