예제 #1
0
        public List <GameObject> GetSortTalkList(int sex, DVoidInt CallBack)
        {
            _sex = sex;
            List <GameObject> lis = new List <GameObject>();

            string[] talkValue = sex == 0 ? WomanSortTalk : ManSortTalk;
            for (int i = 0; i < talkValue.Length; i++)
            {
                GameObject text = Instantiate(SortTalkTemp);
                text.name = i + "";
                var textScp = text.GetComponent <Text>();
                textScp.text      = talkValue[i];
                textScp.alignment = TextAnchor.MiddleLeft;
                textScp.fontSize  = FontSize;
                textScp.color     = Color.white;

                text.GetComponent <Button>().onClick.AddListener(() =>
                {
                    CallBack(int.Parse(text.name));
                });
                lis.Add(text);
            }

            return(lis);
        }
예제 #2
0
        public List <GameObject> GetExpressIcon(DVoidInt CallBack)
        {
            List <GameObject> lis = new List <GameObject>();

            foreach (KeyValuePair <int, List <Sprite> > item in _dicExpress)
            {
                GameObject itemExp = Instantiate(ExpressTemp);
                itemExp.name = item.Key + "";

                Sprite sprExp = Instantiate(item.Value[0]);

                Image itemExpImg = itemExp.GetComponent <Image>();
                itemExpImg.sprite = sprExp;
                itemExpImg.SetNativeSize();

                Button itemExpBtn = itemExp.GetComponent <Button>();
                itemExpBtn.onClick.AddListener(() =>
                {
                    CallBack(int.Parse(itemExp.name));
                });

                lis.Add(itemExp);
            }

            lis.Sort((a, b) =>
            {
                return(a.name.CompareTo(b.name));
            });

            return(lis);
        }
예제 #3
0
        public override void GetGangData(ISFSObject obj, DVoidSfsObject sendCall)
        {
            List <FindGangData> findList = FindCanGang();

            //如果不能杠财神,则移除可能是财神的牌
            if (_cargs2.ContainsKey(Gangcaishen) && _cargs2.GetUtfString(Gangcaishen) == "0")
            {
                foreach (var findGangData in findList)
                {
                    if (findGangData.cards[0] == Laizi)
                    {
                        findList.Remove(findGangData);
                        break;
                    }
                }
            }

            DVoidInt sendCallArray = index =>
            {
                YxDebug.Log("发送服务器 杠 " + findList[index].cards);
                if (findList[index].type != UtilDef.DefInt)
                {
                    obj.PutInt(RequestKey.KeyType, findList[index].type);
                }
                if (findList[index].ttype != UtilDef.DefInt)
                {
                    obj.PutInt(RequestKeyOther.KeyTType, findList[index].ttype);
                }
                if (findList[index].cards != null && findList[index].ttype != MjRequestData.CPG_ZhuaGang)
                {
                    obj.PutIntArray(RequestKey.KeyCards, findList[index].cards);
                }
                else if (findList[index].cards != null && findList[index].ttype == MjRequestData.CPG_ZhuaGang)
                {
                    obj.PutInt(RequestKey.KeyOpCard, findList[index].cards[0]);
                }

                sendCall(obj);
            };

            //如果找到的杠 大于1
            if (findList.Count > 1)
            {
                YxDebug.Log("通知UI 提示杠选择 " + findList.Count);
                var lisiCard = findList.Select(t => t.cards).ToList();
                //通知UI提示选择
                EventDispatch.Dispatch((int)UIEventId.CgChoose, new EventData(lisiCard, sendCallArray, _outPutMahjong));
            }
            else
            {
                sendCallArray(0);
            }
        }
예제 #4
0
        public virtual void SetChooseCg(List <int[]> cgList, DVoidInt call, int outPutCard = UtilDef.NullMj)
        {
            gameObject.SetActive(true);
            CgGroup.Clear();

            for (int i = 0; i < cgList.Count; i++)
            {
                var valueList = new List <int>(cgList[i]);
                if (valueList.Count < 4 && outPutCard != UtilDef.NullMj)
                {
                    valueList.Add(outPutCard);
                }

                valueList.Sort((a, b) =>
                {
                    if (a > b)
                    {
                        return(1);
                    }
                    if ((a < b))
                    {
                        return(-1);
                    }
                    return(0);
                });

                UiCardGroup group = D2MahjongMng.Instance.GetGroup(valueList.ToArray(), EnD2MjType.Me, true);
                CgGroup.AddUiCdGroup(group);
                int i1 = i;
                group.SetClickCallFunc(() =>
                {
                    UtilFunc.OutPutArray(cgList[i1], "选着的牌");
                    call(i1);
                    gameObject.SetActive(false);
                });
            }

            CgGroup.Sort(1);
        }
예제 #5
0
        protected void OnBuZhangFinish(ISFSObject data)
        {
            IsBuZhangFinish = true;
            DVoidInt leaveNum = value => { LeaveMahjongCnt -= value; };

            EventDispatch.Dispatch((int)GameEventId.BuZhang, new EventData(BuZhang, leaveNum));
            //补张的牌 添加到手牌中
            foreach (var buData in BuZhang)
            {
                if (buData.Chair == 0)
                {
                    foreach (var card in buData.BuZhangCards)
                    {
                        UserHardCard[PlayerSeat].Remove(card);
                    }

                    foreach (var card in buData.Cards)
                    {
                        UserHardCard[PlayerSeat].Add(card);
                    }
                }
            }
        }
예제 #6
0
        /// <summary>
        /// 获取抓牌数据
        /// </summary>
        /// <param name="cardValue"></param>
        /// <returns></returns>
        private EventData GetInEventData(int cardValue)
        {
            _getInMahjong = cardValue;
            EventData data = new EventData(_getInMahjong);

            if (_laizi != UtilDef.NullMj && _laizi == _getInMahjong)
            {
                //判断赖子是春夏秋冬
                if (_laizi >= 96 && _laizi < 100)
                {
                    if ((_getInMahjong >= 96) && (_getInMahjong < 100))
                    {
                        data.data2 = 1;
                    }
                }
                else if ((_laizi >= 100) && (_laizi < 104)) //判断赖子是梅兰竹菊
                {
                    if (_getInMahjong >= 100 && _getInMahjong < 104)
                    {
                        data.data2 = 1;
                    }
                }
                else
                {
                    data.data2 = _laizi;
                }
            }

            //如果有补张数据 加入补张数据
            if (CurrSeat == BuZhangGetInSeat && BuZhangGetIn.Count != 0)
            {
                DVoidInt leaveNum = cardNum => { LeaveMahjongCnt -= cardNum; };
                data.data3 = BuZhangGetIn;
                data.data4 = leaveNum;
            }
            return(data);
        }
예제 #7
0
        protected IEnumerator BuZhangAnimation(List <BuZhangData> data, DVoidInt leaveNum)
        {
            var count = data.Count;

            for (int i = 0; i < count; i++)
            {
                var zhangData = data[i];
                if (zhangData != null)
                {
                    //移除手牌中的
                    HardMj[zhangData.Chair].RemoveMahjong(new List <int>(zhangData.BuZhangCards));
                    //添加到胡牌中
                    Hu[zhangData.Chair].GetInMahjong(zhangData.BuZhangCards);
                    yield return(new WaitForSeconds(0.2f));

                    var walPopMjlen = zhangData.BuZhangCards.Length;
                    for (int j = 0; j < walPopMjlen; j++)
                    {
                        OnRevWallMahjongFinish();
                    }
                    leaveNum(zhangData.BuZhangCards.Length);
                    //添加到手牌中
                    HardMj[zhangData.Chair].GetInMahjongWithRoat(zhangData.Cards);
                    yield return(new WaitForSeconds(GameConfig.GetInCardRoteTime + GameConfig.GetInCardWaitTime + 0.3f));
                }
            }
            foreach (var hardCards in HardMj)
            {
                if (hardCards)
                {
                    hardCards.SortHandMahjong();
                }
            }
            //开局补张以后检索一遍自己手牌有没有漏掉的财神
            CheckCaishenBug();
        }
예제 #8
0
 public virtual void SetChooseCg(List <int[]> cgList, DVoidInt call, List <int> hzlzg, DVoidInt gCall, int outPutCard = UtilDef.NullMj)
 {
 }