Пример #1
0
        //0 以左对齐,1 中心对齐
        public void Sort(int sortType)
        {
            mStartPos     = 0;
            mGroupsLength = 0;
            for (int i = 0; i < mGroups.Count; i++)
            {
                UiCardGroup cardGroup = mGroups[i];
                mStartPos = mStartPos + cardGroup.Width / 2;
                cardGroup.transform.localPosition = new Vector3(mStartPos, 0);
                mStartPos      = mStartPos + cardGroup.Width / 2;
                mStartPos     += Interval;
                mGroupsLength += cardGroup.Width;
            }
            mGroupsLength += (mGroups.Count - 1) * Interval;
            float addDis = 0;

            if (sortType == 0)
            {
                addDis = -Size.x / 2;
            }
            else if (sortType == 1)
            {
                addDis = -mGroupsLength / 2;
            }
            for (int i = 0; i < mGroups.Count; i++)
            {
                UiCardGroup cardGroup = mGroups[i];
                cardGroup.transform.localPosition += new Vector3(addDis, 0);
            }
        }
Пример #2
0
        public UiCardGroup SetCard(int value)
        {
            UiCardGroup uiGroupCard = GameCenter.Assets.GetUIMahjongGroupSmall(new int[] { value });

            CardGroup.AddUiCdGroup(uiGroupCard);
            return(uiGroupCard);
        }
Пример #3
0
        public static UiCardGroup Create(GameObject[] objList, Vector2 MjSize, Sprite bg, EnGroupType cpgType = EnGroupType.None)
        {
            GameObject  obj = new GameObject();
            UiCardGroup ret = obj.AddComponent <UiCardGroup>();

            ret._mjSize = MjSize;
            ret.AddObj(objList);
            //根据暗杠的形式摆牌
            //if (cpgType == EnGroupType.AnGang)
            //{
            //    ret.SortAnGangGroup();
            //    return ret;
            //}
            ret.Sort();
            if (bg != null)
            {
                Image imgBg = obj.AddComponent <Image>();
                imgBg.sprite = bg;
                imgBg.type   = Image.Type.Sliced;
                //设置底图大小 要比大
                RectTransform rtf = obj.GetComponent <RectTransform>();
                rtf.sizeDelta = new Vector2(ret.mObjList.Count * ret._mjSize.x + 20, ret._mjSize.y + 20);
                obj.AddComponent <Button>();
            }
            return(ret);
        }
Пример #4
0
        public UiCardGroup SetCards(IList <int> array)
        {
            if (null == array || array.Count == 0)
            {
                return(null);
            }
            UiCardGroup uiGroupCard = GameCenter.Assets.GetUIMahjongGroupSmall(array);

            CardGroup.AddUiCdGroup(uiGroupCard);
            return(uiGroupCard);
        }
Пример #5
0
 public void SetCpgCard(List <CpgData> cpgList)
 {
     if (null == cpgList || cpgList.Count == 0)
     {
         return;
     }
     for (int i = 0; i < cpgList.Count; i++)
     {
         UiCardGroup uiGroup = GameCenter.Assets.GetUIMahjongGroup(cpgList[i].AllCards(), UIMahjongType.Small, cpgList[i].Type);
         CardGroup.AddUiCdGroup(uiGroup);
     }
 }
Пример #6
0
        public void Open(ChooseCgArgs args)
        {
            base.Open();
            CgGroup.Clear();
            CancelBtn.onClick.RemoveAllListeners();
            CancelBtn.onClick.AddListener(Close);
            List <int[]> cgList = args.FindList;

            if (cgList == null || cgList.Count == 0)
            {
                return;
            }
            for (int i = 0; i < cgList.Count; i++)
            {
                var valueList = new List <int>(cgList[i]);
                if (valueList.Count > 4)
                {
                    continue;
                }
                if (valueList.Count < 4 && args.OutPutCard > 0)
                {
                    valueList.Add(args.OutPutCard);
                }
                valueList.Sort((a, b) =>
                {
                    if (a > b)
                    {
                        return(1);
                    }
                    if ((a < b))
                    {
                        return(-1);
                    }
                    return(0);
                });
                UiCardGroup group = GameCenter.Assets.GetUIMahjongGroupBig(valueList.ToArray(), isHaveBg: true);
                CgGroup.AddUiCdGroup(group);
                int index = i;
                group.SetClickCallFunc(() =>
                {
                    args.ConfirmAction(index);
                    base.Close();
                });
            }
            CgGroup.Sort(1);
        }
Пример #7
0
        public void SetCpgCard(List <CpgModel> cpgList)
        {
            if (null == cpgList || cpgList.Count == 0)
            {
                return;
            }
            for (int i = 0; i < cpgList.Count; i++)
            {
                EnGroupType cpgType = EnGroupType.None;
                if (cpgList[i].Type == CpgProtocol.AnGang)
                {
                    cpgType = EnGroupType.AnGang;
                }

                UiCardGroup uiGroup = GameCenter.Assets.GetUIMahjongGroup(cpgList[i].Cards, UIMahjongType.Small, cpgType);
                CardGroup.AddUiCdGroup(uiGroup);
            }
        }
Пример #8
0
 public void AddUiCdGroup(UiCardGroup cardGroup)
 {
     cardGroup.transform.SetParent(transform);
     cardGroup.transform.localScale = Vector3.one;
     mGroups.Add(cardGroup);
 }
Пример #9
0
        public UiCardGroup GetUIMahjongGroup(IList <int> cards, UIMahjongType uiType, EnGroupType cpgType = EnGroupType.None, bool isHaveBg = false)
        {
            Vector2 mjSize = Vector2.zero;

            GameObject[] list = new GameObject[cards.Count];
            UiCardGroup  cardGroup;

            switch (uiType)
            {
            case UIMahjongType.Big:
                mjSize = mSizeBig;
                break;

            case UIMahjongType.Small:
                mjSize = mSizeSmall;
                break;
            }
            if (cpgType == EnGroupType.XFDan || cpgType == EnGroupType.YaoDan || cpgType == EnGroupType.JiuDan || cpgType == EnGroupType.ZFBDan)
            {
                List <int>            cardsList = new List <int>();
                Dictionary <int, int> dic       = new Dictionary <int, int>();
                for (int i = 0; i < cards.Count; i++)
                {
                    if (!dic.ContainsKey(cards[i]))
                    {
                        dic[cards[i]] = 1;
                        cardsList.Add(cards[i]);
                    }
                    else
                    {
                        dic[cards[i]]++;
                    }
                }
                GameObject[] xjfdList = new GameObject[cardsList.Count];
                for (int i = 0; i < cardsList.Count; i++)
                {
                    if (dic.ContainsKey(cardsList[i]))
                    {
                        xjfdList[i] = GetUIMahjong(cardsList[i], uiType);
                        if (dic[cardsList[i]] > 1)
                        {
                            //GameObject temp = MahjongUtility.GetScriptableAssets<MahjongMiscAssets>().GetAssetToObj("NumSign" + dic[cardsList[i]]);
                            GameObject temp = GameUtils.GetAssets <GameObject>("NumSign" + dic[cardsList[i]]);
                            temp.SetActive(false);
                            var obj = Instantiate(temp);
                            if (obj != null)
                            {
                                obj.transform.parent        = xjfdList[i].transform;
                                obj.transform.localRotation = Quaternion.Euler(0, 0, 0);
                                obj.gameObject.layer        = xjfdList[i].gameObject.layer;
                                switch (uiType)
                                {
                                case UIMahjongType.Big:
                                    obj.transform.localPosition = new Vector3(-20, -37, 0);
                                    obj.transform.localScale    = Vector3.one * 0.7f;
                                    break;

                                case UIMahjongType.Small:
                                    obj.transform.localPosition = new Vector3(-7, -3f, 0);
                                    obj.transform.localScale    = Vector3.one * 0.4f;
                                    break;
                                }
                                obj.SetActive(true);
                            }
                        }
                    }
                }
                cardGroup = UiCardGroup.Create(xjfdList, mjSize, isHaveBg ? MahjongCardAssets.TileBackground : null, cpgType);
            }
            else
            {
                for (int i = 0; i < cards.Count; i++)
                {
                    //暗杠时显示背面, 第四张要反过来
                    if (cpgType == EnGroupType.AnGang && i < 3)
                    {
                        list[i] = GetUIMahjongBg(uiType);
                    }
                    else
                    {
                        list[i] = GetUIMahjong(cards[i], uiType);
                    }
                }
                cardGroup = UiCardGroup.Create(list, mjSize, isHaveBg ? MahjongCardAssets.TileBackground : null, cpgType);
            }
            return(cardGroup);
        }