示例#1
0
        public virtual MahjongItem ThrowOutByValue(int value)
        {
            MahjongItem Mahjong = null;

            for (int i = MahjongList.Count - 1; i >= 0; i--)
            {
                if (MahjongList[i].Value == value)
                {
                    Mahjong = MahjongList[i];
                }
            }
            if (Mahjong == null)
            {
                Mahjong = GetMahjongItemByValue(value);
            }
            Mahjong.ShowNormal();
            MahjongManager.Instance.ExchangeByValue(value, Mahjong);
            MahjongList.Remove(Mahjong);
            SortMahjongForHand();
            if (GameConfig.GetInEffect)
            {
                PickUpMahjongAction(Mahjong);
            }
            else
            {
                SetMahjongPos();
            }
            MahjongManager.Instance.Recycle(Mahjong);
            LastGetIn = null;
            return(Mahjong);
        }
示例#2
0
 public override void OnReset()
 {
     base.OnReset();
     StartIndex = 0;
     ResetWallStartPos();
     MahjongList.Clear();
 }
示例#3
0
        public override void SetLastCardPos(int value)
        {
            if (value == UtilDef.NullMj || MahjongList.Find(item => item.Value == value) == null)//当前不是抓牌 是吃碰杠后的
            {
                base.SetLastCardPos(value);
                return;
            }

            if (MahjongList.Count > 1)
            {
                MahjongItem findItem = MahjongList.Find((item) =>
                {
                    return(item.Value == value);
                });
                if (findItem != null)
                {
                    MahjongList.Remove(findItem);
                }

                MahjongList.Add(findItem);

                SetMahjongPos();

                findItem.transform.localPosition = GetHardLastMjPos();
            }
        }
示例#4
0
        public virtual MahjongItem ThrowOut(int value)
        {
            MahjongItem Mahjong = GetMahjongItemByValue(value);

            Mahjong.ShowNormal();

            MahjongManager.Instance.ExchangeByValue(value, Mahjong);

            MahjongList.Remove(Mahjong);

            SortMahjongForHand();

            if (GameConfig.GetInEffect)
            {
                PickUpMahjongAction(Mahjong);
            }
            else
            {
                SetMahjongPos();
            }

            MahjongManager.Instance.Recycle(Mahjong);

            LastGetIn = null;

            return(Mahjong);
        }
示例#5
0
        /// <summary>
        /// 倒序摸牌
        /// </summary>
        /// <returns></returns>
        public MahjongItem RevPopMahjong()
        {
            int index    = 0;
            var mayIndex = MahjongList.Count - 2;

            if (mayIndex >= 0 && MahjongList.Count % 2 == 0)
            {
                index = mayIndex;
            }
            else
            {
                index = MahjongList.Count - 1;
            }
            MahjongItem item = MahjongList[index];

            MahjongList.RemoveAt(index);
            MahjongManager.Instance.Recycle(item);

            if (MahjongList.Count <= 0)
            {
                EventDispatch.Dispatch((int)GameEventId.RevWallMahjongFinish, new EventData());
            }

            return(item);
        }
示例#6
0
        //用来处理 获取最后麻将时候 index 的偏移

        public override MahjongItem GetLastMj()
        {
            MahjongItem item = null;

            if (MahjongList.Count == 0)
            {
                return(null);
            }
            else if (MahjongList.Count == 1)
            {
                item = MahjongList[0];
                MahjongList.RemoveAt(0);
                return(item);
            }
            int index = MahjongList.Count - 2;

            if (MahjongList[index].transform.position.y > 0.4f)
            {
                item = MahjongList[index];
                MahjongList.RemoveAt(index);
                return(item);
            }
            item = MahjongList[index + 1];
            MahjongList.RemoveAt(index + 1);
            return(item);
        }
示例#7
0
        public virtual MahjongItem PopMahjong()
        {
            MahjongItem item = MahjongList[MahjongList.Count - 1];

            MahjongList.RemoveAt(MahjongList.Count - 1);
            MahjongManager.Instance.Recycle(item);
            return(item);
        }
示例#8
0
        public void RemoveAllMj()
        {
            foreach (MahjongItem item in MahjongList)
            {
                MahjongManager.Instance.Recycle(item);
            }

            MahjongList.Clear();
        }
示例#9
0
        //当抢杠胡
        public virtual void OnQiangganghu(int value)
        {
            MahjongItem findItem = MahjongList.Find((item) =>
            {
                return(item.Value == value);
            });

            MahjongManager.Instance.Recycle(findItem);
            MahjongList.Remove(findItem);
            SortMahjongForHand();
            findItem.gameObject.SetActive(false);
        }
示例#10
0
        protected virtual void SortMahjongForHand()
        {
            if (MahjongList.Count < 2)
            {
                return;
            }
            //这里是假的排序 把最后一张牌 放在那里 是随机放的
            var index = Random.Range(0, MahjongList.Count - 2);
            var last  = MahjongList[MahjongList.Count - 1];

            MahjongList.Remove(last);
            MahjongList.Insert(index, last);
        }
示例#11
0
        public void RemoveMahjong(int value, bool sort = true)
        {
            MahjongItem item = GetMahjongItemByValue(value);

            if (item != null)
            {
                MahjongList.Remove(item);
                MahjongManager.Instance.Recycle(item);
            }

            if (sort)
            {
                SetMahjongPos();
            }
        }
示例#12
0
        public MahjongItem PopMahjong()
        {
            MahjongItem item = MahjongList[StartIndex];

            MahjongList.RemoveAt(StartIndex);
            MahjongManager.Instance.Recycle(item);

            if (StartIndex >= MahjongList.Count)
            {
                StartIndex = 0;
                EventDispatch.Dispatch((int)GameEventId.WallMahjongFinish, new EventData());
            }

            return(item);
        }
示例#13
0
        public void PopMahjong(int cnt)
        {
            for (int i = 0; i < cnt; i++)
            {
                MahjongItem item = MahjongList[StartIndex];
                MahjongList.RemoveAt(StartIndex);
                MahjongManager.Instance.Recycle(item);

                if (StartIndex >= MahjongList.Count)
                {
                    StartIndex = 0;
                    EventDispatch.Dispatch((int)GameEventId.WallMahjongFinish, new EventData(cnt - (i + 1)));
                    break;
                }
            }
        }
示例#14
0
        public void RemoveMahjong(List <int> value, bool sort = true)
        {
            for (int i = 0; i < value.Count; i++)
            {
                MahjongItem item = GetMahjongItemByValue(value[i]);
                if (item != null)
                {
                    MahjongList.Remove(item);
                    MahjongManager.Instance.Recycle(item);
                }
            }

            if (sort)
            {
                SetMahjongPos();
            }
        }
示例#15
0
        public virtual void RemoveMahjongByValue(int value, bool sort = true)
        {
            MahjongItem temp = MahjongList.Find((a) => { return(a.Value == value); });

            if (temp != null)
            {
                MahjongList.Remove(temp);
                MahjongManager.Instance.Recycle(temp);
            }
            else
            {
                MahjongItem item = GetMahjongItemByValue(value);
                if (item != null)
                {
                    MahjongList.Remove(item);
                    MahjongManager.Instance.Recycle(item);
                }
            }

            if (sort)
            {
                SetMahjongPos();
            }
        }