Ejemplo n.º 1
0
        //设置手牌 (空手牌 赋值)

        public void SetHand(int seatPos, Poker poker)
        {
            //判断是否需要加载
            List <MaJiangCtrl_PaiJiu> handPokerList = GetHand(seatPos);

            if (handPokerList == null)
            {
                return;
            }

            for (int i = 0; i < handPokerList.Count; i++)
            {
                if (handPokerList[i].Poker.index == poker.index)
                {
                    AppDebug.Log(string.Format("加载有数据的牌"));
                    MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(seatPos, poker, "Hand");

                    ctrl.transform.SetParent(handPokerList[i].transform.parent);
                    ctrl.transform.localScale       = handPokerList[i].transform.localScale;
                    ctrl.transform.localPosition    = handPokerList[i].transform.localPosition;
                    ctrl.transform.localEulerAngles = handPokerList[i].transform.localEulerAngles;
                    PushMaJiangToPool(handPokerList[i].gameObject);
                    handPokerList[i] = ctrl;
                }
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// 座位摸牌 摸牌到场景手牌上
 /// </summary>
 /// <param name="majiang">摸的牌</param>
 public void DrawPoker(MaJiangCtrl_PaiJiu majiang)
 {
     //设置
     majiang.gameObject.SetParent(m_HandContainer.transform);
     majiang.SetPokerStatus(false);
     m_HandContainer.Sort();
 }
Ejemplo n.º 3
0
        //摸牌
        public MaJiangCtrl_PaiJiu DrawMaJiang(int toSeatPos, Poker poker /*, bool isInitPoker, bool isLast = false*/)
        {
            if (m_ListWall == null || m_ListWall.Count <= 0)
            {
                AppDebug.ThrowError("摸的牌墙木有牌了阿!!!!");
                return(null);
            }
            //MaJiangCtrl_PaiJiu majiang = null;


            MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(toSeatPos, poker, "Hand");

            //ctrl.transform.SetParent(majiang.transform.parent);
            //ctrl.transform.position = majiang.transform.position;
            //ctrl.transform.rotation = majiang.transform.rotation;
            //m_WallPool.Despawn(majiang.transform);
            if (!m_DicHand.ContainsKey(toSeatPos))
            {
                m_DicHand.Add(toSeatPos, new List <MaJiangCtrl_PaiJiu>());
            }

            m_DicHand[toSeatPos].Add(ctrl);
            //--OverplusWallCount;
            //m_ListWall[0].transform.GetComponent<MeshRenderer>().enabled = false;
            PushMaJiangToPool(m_ListWall[0].gameObject);
            m_ListWall.RemoveAt(0);
            return(ctrl);
        }
Ejemplo n.º 4
0
 public void CreateWall()
 {
     for (int i = 0; i < m_nMaJiangCount; ++i)
     {
         MaJiangCtrl_PaiJiu majiang = SpawnMaJiang(1, null, "Table");
         m_ListWall.Add(majiang);
     }
 }
Ejemplo n.º 5
0
 /// <summary>
 ///  清空牌墙
 /// </summary>
 public void ClearWall()
 {
     for (int i = m_ListWall.Count - 1; i >= 0; i--)
     {
         MaJiangCtrl_PaiJiu deletePoker = m_ListWall[i];
         m_ListWall.Remove(deletePoker);
         //存入对象池
         PushMaJiangToPool(deletePoker.gameObject);
     }
     m_ListWall.Clear();
 }
Ejemplo n.º 6
0
        public void SetUI(MaJiangCtrl_PaiJiu majiang)
        {
            Majiang = majiang;
            majiang.gameObject.SetParent(this.transform);
            //majiang.transform.SetAsFirstSibling();

            majiang.SetPokerStatus(false);


            //SetPokerStatus(false);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 切牌动画
        /// </summary>
        /// <param name="wallList">牌墙list</param>
        /// <param name="dun">切第几墩 </param>
        /// <param name="onComplete">回调</param>
        public void CutPokerAni(List <MaJiangCtrl_PaiJiu> wallList, int dun, System.Action onComplete)
        {
            MaJiangCtrl_PaiJiu pokerOne = wallList[(2 * dun)];
            MaJiangCtrl_PaiJiu pokerTwe = wallList[(2 * dun + 1)];

            //改变顺序  选择距离远的切
            bool tou = dun < (wallList.Count / 4); //是否距离头部近

            Debug.Log(string.Format("是否距离头部近:{0}", tou));
            pokerOne.transform.SetSiblingIndex(tou ? (pokerOne.transform.parent.childCount - 1) : 0);
            pokerTwe.transform.SetSiblingIndex(tou ?(pokerOne.transform.parent.childCount - 1):1);

            wallList.Remove(pokerOne);
            wallList.Remove(pokerTwe);
            wallList.Insert(tou ? (wallList.Count) : 0, pokerOne);
            wallList.Insert(tou ? (wallList.Count) : 1, pokerTwe);


            //上移
            pokerOne.transform.DOMove(pokerOne.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => {
                //移动至头尾
                pokerOne.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 2) : 0) + new Vector3(0, -15, 0), 0.7f).OnComplete(() => {
                    //全部归位
                    for (int i = 0; i < wallList.Count; i++)
                    {
                        if (i == wallList.Count - 1)
                        {
                            wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f).OnComplete(() => {
                                if (onComplete != null)
                                {
                                    onComplete();
                                }
                            });
                        }
                        else
                        {
                            wallList[i].transform.DOLocalMove(m_WallContainer.GetPos(i), 0.4f);
                        }
                    }
                });
            });

            pokerTwe.transform.DOMove(pokerTwe.transform.position + new Vector3(0, 15, 0), 0.3f).OnComplete(() => {
                pokerTwe.transform.DOLocalMove(m_WallContainer.GetPos(tou ? (wallList.Count - 1) : 1) + new Vector3(0, -15, 0), 0.7f);
            });
        }
Ejemplo n.º 8
0
        /// <summary>
        ///  加载麻将
        /// </summary>
        /// <param name="seatPos"></param>
        /// <param name="poker"></param>
        /// <param name="layer"></param>
        /// <returns></returns>
        public MaJiangCtrl_PaiJiu SpawnMaJiang(int seatPos, Poker poker, string layer)
        {
            //MaJiangCtrl_PaiJiu ctrl = m_WallPool.Spawn((poker == null || poker.color == 0) ? "1_1" : poker.ToString()).gameObject.GetOrCreatComponent<MaJiangCtrl>();


            MaJiangCtrl_PaiJiu ctrl         = LoadMaJiang((poker == null || poker.type == 0) ? PrefabName : poker.ToString()).GetOrCreatComponent <MaJiangCtrl_PaiJiu>();
            string             materialName = "mj_green";
            string             materialPath = string.Format("download/{0}/source/modelsource/materials/{1}.drb", ConstDefine.GAME_NAME, materialName);

            AssetBundleManager.Instance.LoadOrDownload <Material>(materialPath, materialName, (Material go) =>
            {
                ctrl.GetComponentInChildren <Renderer>().material = go;
            }, 1);
            //bool isUniversal = MahJongHelper.CheckUniversal(poker, RoomMaJiangProxy.Instance.GetSeatBySeatId(seatPos).UniversalList);

            ctrl.Init(poker);
            ctrl.gameObject.SetLayer(LayerMask.NameToLayer(layer));
            return(ctrl);
        }
Ejemplo n.º 9
0
        //弃牌 由座位一个一个弃牌
        public MaJiangCtrl_PaiJiu ClearHandPoker(int seatPos, Poker poker)
        {
            List <MaJiangCtrl_PaiJiu> lst = m_DicHand[seatPos];

            //从手牌里找牌
            MaJiangCtrl_PaiJiu majiang = null;

            for (int i = 0; i < lst.Count; ++i)
            {
                if (lst[i].Poker.size == poker.size && lst[i].Poker.type == poker.type)
                {
                    majiang = lst[i];
                    lst.Remove(lst[i]);
                    //lst.RemoveAt(i);
                    break;
                }
            }

            if (majiang == null)
            {
                AppDebug.ThrowError("没找到要打的牌!!!!!!" + poker.ToString());
            }

            MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(seatPos, poker, "Table");

            if (majiang != null)
            {
                ctrl.transform.position = majiang.transform.position;
                ctrl.transform.rotation = majiang.transform.rotation;
                PushMaJiangToPool(majiang.gameObject);//删除
                //m_WallPool.Despawn(majiang.transform);//删除
            }

            //把牌放桌面上
            if (!m_DicTable.ContainsKey(seatPos))
            {
                m_DicTable.Add(seatPos, new List <MaJiangCtrl_PaiJiu>());
            }
            m_DicTable[seatPos].Add(ctrl);
            return(ctrl);
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 清空手牌
        /// </summary>
        public void ClearHandPoker()
        {
            //找到手牌
            List <MaJiangCtrl_PaiJiu> handPokerList = MahJongManager_PaiJiu.Instance.GetHand(m_nSeatPos);

            if (handPokerList == null)
            {
                return;
            }
            int handPokerListCount = handPokerList.Count;

            for (int i = 0; i < handPokerListCount; i++)
            {
                AppDebug.Log(string.Format("座位{0}弃牌{1}", m_nSeatPos, handPokerList[0].Poker.ToChinese()));

                MaJiangCtrl_PaiJiu majiang = MahJongManager_PaiJiu.Instance.ClearHandPoker(m_nSeatPos, handPokerList[0].Poker);

                majiang.gameObject.SetParent(m_DeskTopContainer.transform);
                majiang.gameObject.layer        = m_DeskTopContainer.gameObject.layer;
                majiang.transform.localPosition = m_DeskTopContainer.GetLocalPos(majiang.transform);
            }
        }
Ejemplo n.º 11
0
        public List <MaJiangCtrl_PaiJiu> DrawMaJiangWall(List <Poker> pokermWall)
        {
            for (int i = 0; i < pokermWall.Count; i++)
            {
                if (i > m_ListWall.Count - 1)
                {
                    break;
                }

                MaJiangCtrl_PaiJiu ctrl = SpawnMaJiang(1, pokermWall[i], "Table");

                GameObject majiang = m_ListWall[i].gameObject;
                ctrl.transform.SetParent(majiang.transform.parent);
                ctrl.transform.SetSiblingIndex(majiang.transform.GetSiblingIndex());
                ctrl.transform.position = majiang.transform.position;
                ctrl.transform.rotation = majiang.transform.rotation;

                m_ListWall[i] = ctrl;
                PushMaJiangToPool(majiang);
            }

            return(m_ListWall);
        }