Ejemplo n.º 1
0
 private void CreateItems(GangStruct card, eMJInstructionsType _type)
 {
     if (card == null || card.cards == null)
     {
         return;
     }
     if (_type == eMJInstructionsType.GANG)     //杠
     {
         if (card.gangType == eGangType.ANGANG) //暗杠
         {
             InitAngang(mCardGang, card.cards[0]);
         }
         else
         {
             InitPengItems(mCardGang, card.cards[0], card.cards[0], card.cards[0], card.cards[0]);
         }
     }
     else
     {
         int len = card.cards.Count;
         if (len == 3)
         {
             InitPengItems(mThreeLie, card.cards[0], card.cards[1], card.cards[2]);
         }
         else if (len == 4)
         {
             InitPengItems(mCardGang, card.cards[0], card.cards[1], card.cards[2], card.cards[3]);
         }
     }
 }
Ejemplo n.º 2
0
 public void SetPengNum(eMJInstructionsType _type, int myseatid, PengStruct cards)
 {
     SetArrowShow(false);
     if (cards.cards.Count == 1)
     {
         SetNum(_type, cards.cards[0], cards.cards[0], cards.cards[0]);
     }
     else if (cards.cards.Count < 4)
     {
         SetNum(_type, cards.cards[0], cards.cards[1], cards.cards[2]);
     }
     else
     {
         SetNum(_type, cards.cards[0], cards.cards[1], cards.cards[2], cards.cards[3]);
     }
     if (_type == eMJInstructionsType.PENG)//碰
     {
         if (cards.otherSeatId != null && cards.otherSeatId != myseatid && cards.otherSeatId != 0)
         {
             SetArrowPos(myseatid, cards.otherSeatId, 3);
         }
     }
     //else if (_type == eOptStatus)//吃
     //{
     //    mChiPanel.SetActive(true);
     //    SetChiPanelPos((eMJChiType)cards.type);
     //}
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 设置杠牌
 /// </summary>
 /// <param name="_type"></param>
 /// <param name="myseatid"></param>
 /// <param name="cards"></param>
 /// <param name="playerPosType"></param>
 public void SetGangNum(eMJInstructionsType _type, int myseatid, GangStruct cards, PlayerPosType playerPosType)
 {
     SetArrowShow(false);
     mOtherAngang.SetActive(false);
     if (cards.cards.Count == 1)
     {
         SetNum(_type, cards.cards[0], cards.cards[0], cards.cards[0], cards.cards[0]);
     }
     else if (cards.cards.Count < 4)
     {
         SetNum(_type, cards.cards[0], cards.cards[1], cards.cards[2]);
     }
     else
     {
         SetNum(_type, cards.cards[0], cards.cards[1], cards.cards[2], cards.cards[3]);
     }
     if (_type == eMJInstructionsType.GANG && (cards.gangType == eGangType.DIANGANG || cards.gangType == eGangType.WANGANG))//普通杠
     {
         if (cards.otherSeatId != null && cards.otherSeatId != myseatid && cards.otherSeatId != 0)
         {
             SetArrowPos(myseatid, cards.otherSeatId, 4);
         }
     }
     if (_type == eMJInstructionsType.GANG && cards.gangType == eGangType.ANGANG)//暗杠
     {
         SetAnGang(playerPosType);
     }
 }
Ejemplo n.º 4
0
    /// <summary>
    /// 设置数字
    /// </summary>
    /// <param name="num1">第1个数字</param>
    /// <param name="num2">第2个数字</param>
    /// <param name="num3">第3个数字</param>
    /// <param name="num4">第4个数字,如果为-1表示没有第四个</param>
    private void SetNum(eMJInstructionsType instype, int num1, int num2, int num3, int num4 = -1)
    {
        mInsType = instype;

        //设置数据
        mNum[0] = num1;
        mNum[1] = num2;
        mNum[2] = num3;
        mNum[3] = num4;
        mNum[4] = num4;


        mMeshs[0].mesh = mRoot.mMeshs[num1];
        mMeshs[1].mesh = mRoot.mMeshs[num2];
        mMeshs[2].mesh = mRoot.mMeshs[num3];
        if (num4 == -1)
        {
            mMeshs[3].gameObject.SetActive(false);
        }
        else
        {
            mMeshs[3].gameObject.SetActive(true);
            mMeshs[3].mesh = mRoot.mMeshs[num4];
        }
        mMeshs[4].gameObject.SetActive(false);
    }
Ejemplo n.º 5
0
    public void InitHuCard(eMJInstructionsType instype, List <HuStruct> cards)
    {
        if (mHuGrid == null)
        {
            return;
        }
        int           len     = cards == null ? 0 : cards.Count;
        int           gridLen = mHuCardList.Count;
        MjCollectCard card;

        for (int i = 0; i < len; i++)
        {
            if (i < gridLen)
            {
                card = mHuCardList[i];
            }
            else
            {
                card = NGUITools.AddChild(mHuGrid.gameObject, mHuCard.gameObject).GetComponent <MjCollectCard>();
                mHuCardList.Add(card);
            }
            card.gameObject.SetActive(true);
            //设置数字
            card.SetNum(cards[i].card, mPlayerPosType);
            card.SetHuCardIsGL(cards[i].isGl);//设置胡牌 是否高亮
        }
        for (int i = len; i < gridLen; i++)
        {
            mHuCardList[i].gameObject.SetActive(false);
        }
        mHuGrid.Reposition();
    }
Ejemplo n.º 6
0
    public void InitGangCard(eMJInstructionsType instype, List <GangStruct> cards)
    {
        if (mPengGrid == null)
        {
            return;
        }
        int        len     = cards == null ? 0 : cards.Count;
        int        gridLen = mGangCardList.Count;
        MjPengCard card;

        for (int i = 0; i < len; i++)
        {
            if (i < gridLen)
            {
                card = mGangCardList[i];
            }
            else
            {
                card = NGUITools.AddChild(mPengGrid.gameObject, mPengCard.gameObject).GetComponent <MjPengCard>();
                mGangCardList.Add(card);
            }
            card.gameObject.SetActive(true);

            //设置数字
            card.SetGangNum(instype, mMySeatid, cards[i], mPlayerPosType);
        }
        for (int i = len; i < gridLen; i++)
        {
            mGangCardList[i].gameObject.SetActive(false);
        }
        mPengGrid.Reposition();
    }
Ejemplo n.º 7
0
    public CardsInfoStruct[] allPlayersCardsInfoStruct;              //所有玩家的牌的数据


    #region 主动操作牌
    /// <summary>
    /// 主动操作牌
    /// </summary>
    /// <param name="data"></param>
    public void InstructionsCard(MJoptInfoData data, ref int lastOutCard)
    {
        eMJInstructionsType _type = data.ins;
        CardsStruct         chicard;

        switch (_type)
        {
        case eMJInstructionsType.GUO:     //过
            break;

        case eMJInstructionsType.GANG:     //杠
            chicard = AddGangCard(ref mPlayerInfo.gangList, data, lastOutCard);

            break;

        case eMJInstructionsType.PENG:     //碰
            chicard = AddPengCard(ref mPlayerInfo.pengList, data, lastOutCard);
            //chicard.card.Sort();
            break;

        case eMJInstructionsType.HIT:     //打牌
            AddHitCard(ref mPlayerInfo.hitList, data);
            lastOutCard = data.cards[0];
            break;

        case eMJInstructionsType.MO:     //摸牌
            //if (mHandCard != null)//摸起来的牌加到手牌中并且去掉摸起来的牌
            MJGameModel.Inst.leaveCardNum--;
            MJGameModel.Inst.mStartGameData.startInfo.leaveCardNum--;
            if (data.seatId == MJGameModel.Inst.mMySeatId)
            {
                if (!MJGameModel.Inst.isHasFixeCard)
                {
                    if (data.cards[0] > MJGameModel.Inst.eFixe[0] && data.cards[0] < MJGameModel.Inst.eFixe[1])
                    {
                        MJGameModel.Inst.isHasFixeCard = true;
                    }
                }
                mHandCard.currCard = data.cards[0];
            }
            else if (mOtherCard != null)
            {
                mOtherCard.isHasCurrCard = true;
            }
            break;

        case eMJInstructionsType.YPDX:
        case eMJInstructionsType.HU:    //胡
            chicard = AddHuCard(ref mPlayerInfo.mHuCard, data, lastOutCard);
            if (data.seatId == MJGameModel.Inst.mMySeatId)
            {
                MJGameModel.Inst.isHu = mPlayerInfo.mHuCard != null;
            }
            break;
        }
    }
Ejemplo n.º 8
0
 private void CreateCardList(List <GangStruct> list, eMJInstructionsType _type)
 {
     if (list == null)
     {
         return;
     }
     for (int i = 0; i < list.Count; i++)
     {
         CreateItems(list[i], _type);
     }
 }
Ejemplo n.º 9
0
    /// <summary>
    /// 获取特效配置表
    /// </summary>
    /// <param name="insType">操作类型</param>
    /// <returns></returns>
    private MJGameInsEffectConfig GetInsEffectConfig(eMJInstructionsType insType)
    {
        string     index = insType.GetHashCode().ToString();
        ConfigDada con   = ConfigManager.GetConfigs <MJGameInsEffectConfig>().Find(o => o.conIndex.Equals(index));

        if (con == null)
        {
            return(null);
        }
        return(con as MJGameInsEffectConfig);
    }
Ejemplo n.º 10
0
    /// <summary>
    /// 被动接受的指令
    /// </summary>
    /// <param name="data"></param>
    /// <param name="lastOutCard"></param>
    public void PassiveInstructionsCard(MJoptInfoData data, ref int lastOutCard)
    {
        eMJInstructionsType _type = data.ins;

        switch (_type)
        {
        case eMJInstructionsType.CHI:
        case eMJInstructionsType.PENG:
            if (mPlayerInfo.hitList != null)
            {
                mPlayerInfo.hitList.RemoveAt(mPlayerInfo.hitList.Count - 1);
            }
            lastOutCard = 0;
            break;

        case eMJInstructionsType.GANG:
            if (data.cards.Count <= 4)
            {
                if (mPlayerInfo.hitList != null)
                {
                    mPlayerInfo.hitList.RemoveAt(mPlayerInfo.hitList.Count - 1);
                }
                lastOutCard = 0;
            }
            break;

        case eMJInstructionsType.HU:
            if (mPlayerInfo.hitList != null && lastOutCard != 0)
            {
                if (data.subType == (int)eHuSubType.QGH)
                {
                    if (!data.huGl)
                    {
                        if (mHandCard != null && data.otherSeatId == mPlayerInfo.seatId)
                        {
                            if (mHandCard.cards != null)
                            {
                                mHandCard.cards.Remove(data.cards[0]);
                            }
                            else
                            {
                                mOtherCard.cardsNum--;
                            }
                        }
                    }
                }
                mPlayerInfo.hitList.RemoveAt(mPlayerInfo.hitList.Count - 1);
                lastOutCard = 0;
            }
            break;
        }
    }
Ejemplo n.º 11
0
 /// <summary>
 /// 设置当前打出牌位置
 /// </summary>
 /// <param name="player"></param>
 /// <param name="ins"></param>
 public void SetCurCardEffect(MJPlayerBase player, eMJInstructionsType ins, Vector3 offset)
 {
     if (ins == eMJInstructionsType.HIT)
     {
         player.SetCurOutCardEffect(true);
     }
     else
     {
         if (MJGameModel.Inst.mLastOutCard == 0)
         {
             player.SetCurOutCardEffect(false);
         }
     }
 }
Ejemplo n.º 12
0
    public void InitPengCards(eMJInstructionsType instype, List <PengStruct> cards)
    {
        if (mPengGrid == null)
        {
            return;
        }
        int len = cards == null ? 0 : cards.Count;
        List <MjPengCard> cardlist;

        if (instype == eMJInstructionsType.PENG)
        {
            cardlist = mChiCardList;
        }
        //else if (instype == eOptStatus.PENG)
        //    cardlist = mPengCardList;
        else
        {
            cardlist = mOtherCardList;
        }
        int        gridLen = cardlist.Count;
        MjPengCard card;

        for (int i = 0; i < len; i++)
        {
            if (i < gridLen)
            {
                card = cardlist[i];
            }
            else
            {
                card = NGUITools.AddChild(mPengGrid.gameObject, mPengCard.gameObject).GetComponent <MjPengCard>();
                cardlist.Add(card);
            }
            card.gameObject.SetActive(true);

            //设置数字
            card.SetPengNum(instype, mMySeatid, cards[i]);
        }
        for (int i = len; i < gridLen; i++)
        {
            cardlist[i].gameObject.SetActive(false);
        }
        mPengGrid.Reposition();
        //SetPengCardPos(len);
    }
Ejemplo n.º 13
0
 public void InitHuCards(eMJInstructionsType instype, List <HuStruct> cards, int huType = -1)
 {
     if (cards != null && cards.Count > 0)
     {
         mHuTag.gameObject.SetActive(true);
         UITexture a = mHuTag.GetComponent <UITexture>();
         if (a != null)
         {
             a.mainTexture = mHuTexture;
         }
         if (huType == (int)eHuType.ZIMO)
         {
             //显示成自摸
             if (a != null)
             {
                 a.mainTexture = mZiMoTexture;
             }
         }
         a.MakePixelPerfect();
     }
     mPlayer.InitHuCard(instype, cards);
 }
Ejemplo n.º 14
0
    /// <summary>
    /// 主动操作牌
    /// </summary>
    /// <param name="data"></param>
    public void InstructionsCard(MJoptInfoData data, ref int lastOutCard)
    {
        eMJInstructionsType _type = data.ins;
        CardsStruct         chicard;

        switch (_type)
        {
        case eMJInstructionsType.GUO:     //过
            break;

        case eMJInstructionsType.GANG:     //杠
            if (gangList == null)
            {
                gangList = new List <GangStruct>();
            }
            chicard = AddGangCard(ref gangList, data, lastOutCard);

            break;

        case eMJInstructionsType.PENG:     //碰
            if (pengList == null)
            {
                pengList = new List <PengStruct>();
            }
            chicard = AddPengCard(ref pengList, data, lastOutCard);
            //chicard.card.Sort();
            break;

        case eMJInstructionsType.HIT:     //打牌
            if (hitList == null)
            {
                hitList = new List <int>();
            }
            AddHitCard(ref hitList, data);
            lastOutCard = data.cards[0];
            break;

        case eMJInstructionsType.MO:     //摸牌
            //if (mHandCard != null)//摸起来的牌加到手牌中并且去掉摸起来的牌
            MJGameModel.Inst.leaveCardNum--;
            MJGameModel.Inst.mStartGameData.startInfo.leaveCardNum--;
            if (handList != null)
            {
                if (!MJGameModel.Inst.isHasFixeCard && data.seatId == MJGameModel.Inst.mMySeatId)
                {
                    if (data.cards[0] > MJGameModel.Inst.eFixe[0] && data.cards[0] < MJGameModel.Inst.eFixe[1])
                    {
                        MJGameModel.Inst.isHasFixeCard = true;
                    }
                }
                currCard = data.cards[0];
            }
            else
            {
                isHasCurrCard = true;
            }
            break;

        case eMJInstructionsType.YPDX:
        case eMJInstructionsType.HU:    //胡
            if (huList == null)
            {
                huList = new List <HuStruct>();
            }
            chicard = AddHuCard(ref huList, data, lastOutCard);
            if (data.seatId == MJGameModel.Inst.mMySeatId)
            {
                MJGameModel.Inst.isHu = huList != null && huList.Count > 0;
            }
            break;
        }
    }
Ejemplo n.º 15
0
    /// <summary>
    /// 被动接受的指令
    /// </summary>
    /// <param name="data"></param>
    /// <param name="lastOutCard"></param>
    public void PassiveInstructionsCard(MJoptInfoData data, ref int lastOutCard)
    {
        eMJInstructionsType _type = data.ins;

        switch (_type)
        {
        case eMJInstructionsType.CHI:
        case eMJInstructionsType.PENG:
            if (hitList != null)
            {
                hitList.RemoveAt(hitList.Count - 1);
            }
            lastOutCard = 0;
            break;

        case eMJInstructionsType.GANG:
            if (data.cards.Count <= 4)
            {
                if (hitList != null)
                {
                    hitList.RemoveAt(hitList.Count - 1);
                }
                lastOutCard = 0;
            }
            break;

        case eMJInstructionsType.HU:
        case eMJInstructionsType.YPDX:
            if (hitList != null && lastOutCard != 0)
            {
                if (data.subType == (int)eHuSubType.QGH)    //抢杠胡移除一张手牌
                {
                    if (data.otherSeatId == seatId)
                    {
                        if (handList != null)    //自己
                        {
                            if (currCard > 0)    //如果有摸起来的牌就把摸起来的牌放入手牌
                            {
                                handList.Add(currCard);
                                currCard = 0;
                            }
                            handList.Remove(data.cards[0]);
                        }
                        else                   //其他人
                        {
                            if (isHasCurrCard) //如果有摸起来的牌就把摸起来的牌放入手牌
                            {
                                cardNum++;
                                isHasCurrCard = false;
                                currCard      = 0;
                            }
                            cardNum--;
                        }
                    }
                    if (!data.huGl)
                    {
                    }
                }
                else
                {
                    hitList.RemoveAt(hitList.Count - 1);
                }
                lastOutCard = 0;
            }
            break;
        }
    }
Ejemplo n.º 16
0
 public void InitGangCards(eMJInstructionsType instype, List <GangStruct> cards)
 {
     mPlayer.InitGangCard(instype, cards);
 }