예제 #1
0
        /// <summary>
        /// 发牌
        /// </summary>
        public void DealPoker(int seatPos, bool isAni)
        {
            SeatEntity seat = RoomJuYouProxy.Instance.GetSeatBySeatId(seatPos);

            if (seat == null)
            {
                return;
            }

            List <MaJiangCtrl_JuYou> majiangs = new List <MaJiangCtrl_JuYou>();

            List <MaJiangCtrl_JuYou> majiangsHand = MahJongManager_JuYou.Instance.GetHand(seat.Index);

            //手里的牌
            for (int j = 0; j < seat.PokerList.Count; ++j)
            {
                if (majiangsHand == null || j >= majiangsHand.Count)
                {
                    MaJiangCtrl_JuYou majiang = null;

                    majiang = MahJongManager_JuYou.Instance.DrawMaJiang(seat.Index, seat.PokerList[j]);
                    majiangs.Add(majiang);
                }
            }



            if (majiangs.Count > 0)
            {
                m_Seats[seat.Index].DrawPoker(majiangs, false);
            }
        }
예제 #2
0
        /// <summary>
        /// 座位弃牌
        /// </summary>
        public void OnSeatDiscardPoker()
        {
            //找到手牌
            List <MaJiangCtrl_JuYou> handPokerList = MahJongManager_JuYou.Instance.GetHand(m_nSeatIndex);

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

            List <MaJiangCtrl_JuYou> TablePokerList = MahJongManager_JuYou.Instance.GetDicTable(m_nSeatIndex);

            //if (TablePokerList != null && TablePokerList.Count >= 16) Debug.Log("弃掉桌面牌" + m_nSeatIndex+ "TablePokerList.Count"+ TablePokerList.Count);
            if (TablePokerList != null && TablePokerList.Count >= 16)
            {
                MahJongManager_JuYou.Instance.ClearDicTable(m_nSeatIndex);
            }

            for (int i = 0; i < handPokerListCount; i++)
            {
                AppDebug.Log(string.Format("座位Index{0}弃牌{1}", m_nSeatIndex, handPokerList[0].Poker.ToChinese()));
                MaJiangCtrl_JuYou majiang = MahJongManager_JuYou.Instance.ClearHandPoker(m_nSeatIndex, handPokerList[0].Poker);

                if (majiang != null)
                {
                    majiang.gameObject.SetParent(m_DeskTopContainer.transform);
                    majiang.gameObject.layer        = m_DeskTopContainer.gameObject.layer;
                    majiang.transform.localPosition = m_DeskTopContainer.GetLocalPos(majiang.transform);
                }
            }

            //if (TablePokerList != null && TablePokerList.Count > 18) MahJongManager_JuYou.Instance.ClearDicTable(m_nSeatIndex);
        }
예제 #3
0
        /// <summary>
        /// 开局
        /// </summary>
        /// <param name="room"></param>
        /// <param name="isPlayAnimation"></param>
        public void Begin(RoomEntity room, bool isPlayAnimation)
        {
            //CompassCtrl.Instance.SetNormal(); //<--------------指南针控制
            //UIItemTingTip.Instance.Close();
            //m_UISceneMaJiang3DView.Begin();
            //m_UIScenePaiJiu3DView.               //设置开局的

            //====================初始化墙====================
            InitWall(isPlayAnimation);

            //===================摸牌=======================
            if (!isPlayAnimation)
            {
                for (int i = 0; i < room.SeatList.Count; i++)
                {
                    SeatEntity seat = room.SeatList[i];
                    //桌面上的牌
                    for (int j = 0; j < seat.TablePokerList.Count; j++)
                    {
                        MaJiangCtrl_JuYou majiang = MahJongManager_JuYou.Instance.DrawMaJiang(seat.Index, seat.TablePokerList[j]);

                        //清空摸到手里的已出过的牌
                        if (seat.TablePokerList.Count > 0)
                        {
                            m_Seats[seat.Index].OnSeatDiscardPoker();
                        }
                        //if (seat.TablePokerList.Count > 0) MahJongManager_JuYou.Instance.ClearDicTable(seat.Index);
                    }

                    List <MaJiangCtrl_JuYou> majiangs = new List <MaJiangCtrl_JuYou>();
                    //手里的牌
                    for (int j = 0; j < seat.PokerList.Count; ++j)
                    {
                        if (seat == RoomJuYouProxy.Instance.PlayerSeat)
                        {
                            AppDebug.Log(string.Format("---PlayerSeat---------重连房间座位手牌{0}", seat.PokerList[j].ToChinese()));
                        }
                        MaJiangCtrl_JuYou majiang = null;

                        majiang = MahJongManager_JuYou.Instance.DrawMaJiang(seat.Index, seat.PokerList[j]);
                        majiangs.Add(majiang);
                    }
                    m_Seats[seat.Index].DrawPoker(majiangs, true);
                }
            }
            else
            {
                //// 清空手牌
                // for (int i = 0; i < room.SeatList.Count; i++)
                // {
                //     SeatCtrl_JuYou seatCtrl = m_Seats[room.SeatList[i].Index];
                //     if (seatCtrl != null) seatCtrl.OnSeatDiscardPoker();
                // }

                //其他动画
                m_UISceneJuYou3DView.Begin(RoomJuYouProxy.Instance.CurrentRoom);

                //StartCoroutine(BeginAnimation(/*isReplay*/));
            }
        }
예제 #4
0
        //public void CreateWall()
        //{
        //    for (int i = 0; i < m_nMaJiangCount; ++i)
        //    {
        //        MaJiangCtrl_JuYou majiang = SpawnMaJiang(1, null, "Hand");
        //        m_ListWall.Add(majiang);
        //    }
        //}

        public void CreateWall()
        {
            for (int i = 0; i < m_nMaJiangCount; ++i)
            {
                MaJiangCtrl_JuYou majiang = SpawnMaJiang(1, null, "Hand");
                m_ListWall.Add(majiang);
            }
        }
예제 #5
0
        public MaJiangCtrl_JuYou SpawnMaJiang(int seatPos, Poker poker, string layer)
        {
            MaJiangCtrl_JuYou ctrl = m_WallPool.Spawn((poker == null || poker.color == 0) ? "1_1" : poker.ToString()).gameObject.GetOrCreatComponent <MaJiangCtrl_JuYou>();

            //====================麻将颜色==============================================
            //if (string.IsNullOrEmpty(m_CurrentColor))
            //{
            //    AppDebug.LogError("颜色是空的???");
            //    string materialName = "mj_dif";
            //    string materialPath = string.Format("download/{0}/source/modelsource/materials/{1}.drb", ConstDefine.GAME_NAME, materialName);
            //    AssetBundleManager.Instance.LoadOrDownload<Material>(materialPath, materialName, (Material go) =>
            //    {
            //        if (go != null)
            //        {
            //            ctrl.GetComponent<Renderer>().material = go;
            //        }
            //    }, 1);
            //}
            //else
            //{
            //    string materialName = string.Format("mj_{0}", m_CurrentColor);
            //    string materialPath = string.Format("download/{0}/source/modelsource/materials/{1}.drb", ConstDefine.GAME_NAME, materialName);
            //    AssetBundleManager.Instance.LoadOrDownload<Material>(materialPath, materialName, (Material go) =>
            //    {
            //        if (go != null)
            //        {
            //            ctrl.GetComponent<Renderer>().material = go;
            //        }
            //        else
            //        {
            //            string materialName1 = "mj_dif";
            //            string materialPath1 = string.Format("download/{0}/source/modelsource/materials/{1}.drb", ConstDefine.GAME_NAME, materialName1);
            //            AssetBundleManager.Instance.LoadOrDownload<Material>(materialPath1, materialName1, (Material go1) =>
            //            {
            //                if (go1 != null)
            //                {
            //                    ctrl.GetComponent<Renderer>().material = go1;
            //                }
            //            }, 1);
            //        }
            //    }, 1);
            //}
            // ============================================================

            //bool isUniversal = MahJongHelper.CheckUniversal(poker, RoomJuYouProxy.Instance.GetSeatBySeatId(seatPos).UniversalList);
            ctrl.Init(poker);
            ctrl.gameObject.SetLayer(LayerMask.NameToLayer(layer));

            m_AllPoker.Add(ctrl);
            return(ctrl);
        }
예제 #6
0
        private void ClearPokerList(List <MaJiangCtrl_JuYou> lst)
        {
            MaJiangCtrl_JuYou majiang = null;

            for (int i = lst.Count - 1; i >= 0; --i)
            {
                majiang = lst[i];
                lst.Remove(majiang);
                if (majiang != null)
                {
                    m_WallPool.Despawn(majiang.transform);
                }
                else
                {
                    AppDebug.ThrowError("没找到要丢弃的牌!!!!!!" + lst[i].ToString());
                }
            }
        }
예제 #7
0
        protected override void OnPlayerClick()
        {
            base.OnPlayerClick();

            //如果点击的是UI 不做处理
            if (EventSystem.current.IsPointerOverGameObject())
            {
                return;
            }

            Ray ray = HandPokerCamera.ScreenPointToRay(Input.mousePosition);

            RaycastHit[] hitArr = Physics.RaycastAll(ray, Mathf.Infinity, 1 << LayerMask.NameToLayer("PlayerHand"));
            Debug.Log(hitArr.Length);
            if (hitArr.Length > 0)
            {
                MaJiangCtrl_JuYou ctrl = hitArr[0].collider.gameObject.GetComponent <MaJiangCtrl_JuYou>();
                AudioEffectManager.Instance.Play("dianpai", Vector3.zero, false);

                //for (int q = 0; q < RoomMaJiangProxy.Instance.PlayerSeat.HoldPoker.Count; ++q)
                //{
                //    if (MahJongHelper.HasPoker(ctrl.Poker, RoomMaJiangProxy.Instance.PlayerSeat.HoldPoker[q]))
                //    {
                //        List<MaJiangCtrl> hand = MahJongManager.Instance.GetHand(RoomMaJiangProxy.Instance.PlayerSeat.Pos);
                //        for (int i = 0; i < hand.Count; ++i)
                //        {
                //            if (MahJongHelper.ContainPoker(hand[i].Poker, RoomMaJiangProxy.Instance.PlayerSeat.HoldPoker[q]))
                //            {
                //                hand[i].Hold(true, false);
                //            }
                //        }
                //        return;
                //    }
                //}


                if (!ctrl.IsBeenPlayed)
                {
                    JuYouGameCtrl.Instance.OnPokerClick(ctrl);
                }
            }
        }
예제 #8
0
        /// <summary>
        /// 丢弃手牌
        /// </summary>
        /// <param name="seatIndex"></param>
        public MaJiangCtrl_JuYou ClearHandPoker(int seatIndex, Poker poker)
        {
            List <MaJiangCtrl_JuYou> lst = m_DicHand[seatIndex];

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

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

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

            MaJiangCtrl_JuYou ctrl = SpawnMaJiang(seatIndex, poker, "Table");

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

            //把牌放桌面上
            if (!m_DicTable.ContainsKey(seatIndex))
            {
                m_DicTable.Add(seatIndex, new List <MaJiangCtrl_JuYou>());
            }
            m_DicTable[seatIndex].Add(ctrl);
            return(ctrl);
        }
예제 #9
0
        /// <summary>
        /// 摸牌
        /// </summary>
        /// <param name="fromSeatIndex">从哪摸</param>
        /// <param name="toSeatIndex">摸到哪</param>
        /// <param name="poker">摸啥牌</param>
        /// <returns></returns>
        public MaJiangCtrl_JuYou DrawMaJiang(int toSeatIndex, Poker poker)
        {
            if (CurrentWallIndex >= m_ListWall.Count)
            {
                CurrentWallIndex = 0;
            }

            if (m_ListWall == null || m_ListWall.Count <= CurrentWallIndex)
            {
                AppDebug.ThrowError("摸的牌墙木有牌了阿!!!!");
                return(null);
            }
            MaJiangCtrl_JuYou majiang = null;

            //MaJiangCtrl majiang = null;


            majiang = m_ListWall[CurrentWallIndex++];


            MaJiangCtrl_JuYou ctrl = SpawnMaJiang(toSeatIndex, poker, toSeatIndex == 0? "PlayerHand" : "Hand");

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

            m_DicHand[toSeatIndex].Add(ctrl);
            --OverplusWallCount;
            return(ctrl);
        }