示例#1
0
        //刷新中鱼的数据
        public void RefleshData(List <MJType> dataList, int playerId)
        {
            int SpaceW = GameGD.MJ_BOTTOM_CPG_W;

            ResetSpriteBG(SpaceW, dataList.Count);

            Vector3 pos = new Vector3(-(dataList.Count - 1) / 2.0f * SpaceW, 0, 0);

            for (int i = 0; i < dataList.Count; i++)
            {
                MJ mj = AddMJ(DataCenter.Instance.gamedata.PlayerID, dataList[i], MJ_STAGE.CPG);
                mj.transform.localPosition = pos;
                pos.x += SpaceW;
                if (DataCenter.Instance.players[playerId].gameOver.IsZhongYu(dataList[i]))
                {
                    mj.sprite.color = Color.green;
                }
            }

            sprite_鱼.gameObject.SetActive(false);

            if (DataCenter.Instance.gamedata.GameArea == AREA_ENUM.桂林)
            {
                sprite_鱼.gameObject.SetActive(true);
            }
        }
示例#2
0
 /// <summary>
 /// 生成打出去的麻将
 /// </summary>
 private void SpawnMJ_OUT()
 {
     for (int i = 0; i < data.MJ_OUT_List.Count; i++)
     {
         MJ mj = AddMJ(data.MJ_OUT_List[i], MJ_STAGE.OUT);
     }
 }
示例#3
0
 /// <summary>
 /// 生成手中的麻将
 /// </summary>
 private void SpawnMJ_IN()
 {
     for (int i = 0; i < data.MJ_IN_List.Count; i++)
     {
         MJ mj = AddMJ(data.MJ_IN_List[i], MJ_STAGE.IN);
     }
 }
示例#4
0
        private MJ AddMJ(int playerId, MJType type, MJ_STAGE stage, bool bBack = false)
        {
            MJ mj = _MJ_Mgr.SpawnMJ(transform, type, playerId, stage, bBack, null);

            mj.transform.parent = transform;

            return(mj);
        }
示例#5
0
        protected virtual void SpawnMJ_CPG(CPG_Struct data)
        {
            for (int i = 0; i < data.MJList.Count; i++)
            {
                if (data.type == CPG_TYPE.暗杠)
                {
                    if (i < 3 || dir != SEAT_DIR.DIR_BOTTOM)
                    {
                        AddMJ(data.MJList[i], MJ_STAGE.CPG, true);
                        continue;
                    }
                }
                MJ mj = AddMJ(data.MJList[i], MJ_STAGE.CPG);
                switch (data.dir)
                {
                case SEAT_DIR.DIR_BOTTOM:
                    break;

                case SEAT_DIR.DIR_RIGHT:
                    if (i == 2)
                    {
                        mj.sprite.color = Color.green;
                    }
                    break;

                case SEAT_DIR.DIR_TOP:
                    if (data.type == CPG_TYPE.杠)
                    {
                        if (i == 3)
                        {
                            mj.sprite.color = Color.green;
                        }
                    }
                    else
                    {
                        if (i == 1)
                        {
                            mj.sprite.color = Color.green;
                        }
                    }
                    break;

                case SEAT_DIR.DIR_LEFT:
                    if (i == 0)
                    {
                        mj.sprite.color = Color.green;
                    }
                    break;

                case SEAT_DIR.DIR_NULL:
                    break;

                default:
                    break;
                }
            }
        }
示例#6
0
        protected override void OnDragDropStart()
        {
            base.OnDragDropStart();
            MJ mj = GetComponent <MJ>();

            if (mj)
            {
                mj.Depth += 1000;
            }
        }
示例#7
0
        private MJ AddMJ(int playerId, MJType type, MJ_STAGE stage, bool bBack = false)
        {
            MJ mj = _MJ_Mgr.SpawnMJ(transform, type, playerId, stage, bBack, null);

            mj.Depth            = 2000;
            mj.transform.parent = transform;
            MJList.Add(mj);
            //NGUITools.SetDirty(mj);
            return(mj);
        }
示例#8
0
        private void ShowCurChuPai(int playerId)
        {
            MJ mj = GetPlayerPanel(playerId).LastOutMJ;

            if (mj != null)
            {
                SetCurChuMJ(mj);
                ViewCenter.Instance.GetPanel <Panel_UI>(PanelType.UIManager).ShowChuPai(GameGD.GetSeatDir(playerId), mj.type);
                //UIManager.Instance.ShowChuPai(GameGD.GetSeatDir(playerId), mj.type);
            }
        }
示例#9
0
 private void SetCurSelectMJ(MJ mj)
 {
     if (curSelectMJ != null)
     {
         curSelectMJ.TranslatePosition(new Vector3(0, -GameGD.MJ_SELECT_OFFSET, 0));
     }
     curSelectMJ = mj;
     if (curSelectMJ != null)
     {
         curSelectMJ.TranslatePosition(new Vector3(0, GameGD.MJ_SELECT_OFFSET, 0));
     }
 }
示例#10
0
        public MJ SpawnMJ(Transform parent, MJType type, int playerId, MJ_STAGE stage, bool bBack, Panel_Player playerPanel)
        {
            Transform ts = pool.Spawn(prefab, pool.transform);

            ts.transform.localScale = Vector3.one;
            MJ mj = ts.GetComponent <MJ>();

            mj.Init(type, stage, playerId, playerPanel);
            int w = 0, h = 0;

            GetSpriteWH(ref w, ref h, playerId, stage);
            mj.InitSprite(GetSpriteName(type, playerId, stage, bBack), w, h);
            return(mj);
        }
示例#11
0
        private void SetCurChuMJ(MJ mj)
        {
            if (mj == null)
            {
                return;
            }

            if (DataCenter.Instance.gamedata.CurChuMJ != null)
            {
                DataCenter.Instance.gamedata.CurChuMJ.ShowArrow(false);
            }
            DataCenter.Instance.gamedata.CurChuMJ = mj;
            DataCenter.Instance.gamedata.CurChuMJ.ShowArrow(true);
            Debuger.Log("ChuMJ :" + mj.type);
        }
示例#12
0
        public void ChuPai(MJ mj)
        {
            if (!IsChuPaing)
            {
                return;
            }

            MJType type     = mj.type;
            int    playerId = mj.PlayerID;

            if (GD.SIMULATE_CHUPAI)
            {
                ChuPai(playerId, type);
                GameApp.Instance.GoToNextPlayer();
            }

            Debuger.Log("ControlCenter ChuPai !  " + type + "  " + playerId);
            DealCommand.Instance.SendChuPai(type);
        }
示例#13
0
 public void ShowTingPai(List <MJType> mjList)
 {
     DestroyAllTingPaiMJ();
     if (mjList.Count > 0)
     {
         GameUtility.FindDeepChild(TingPaiTrans.gameObject, "胡牌").gameObject.SetActive(true);
         Vector3 pos = Vector3.zero;
         for (int i = 0; i < mjList.Count; i++)
         {
             MJ mj = AddMJ(mjList[i], MJ_STAGE.CPGResult);
             mj.transform.parent        = TingPaiTrans;
             mj.transform.localPosition = pos;
             TingPaiMJList.Add(mj);
             pos.x += GameGD.MJ_BOTTOM_CPG_RESULT_W;
         }
     }
     else
     {
         GameUtility.FindDeepChild(TingPaiTrans.gameObject, "胡牌").gameObject.SetActive(false);
     }
 }
示例#14
0
        protected void DespawnMJ(MJ mj)
        {
            _MJMgr.DespawnMJ(mj.transform);
            switch (mj.stage)
            {
            case MJ_STAGE.IN:
                MJ_IN_List.Remove(mj);
                break;

            case MJ_STAGE.OUT:
                MJ_OUT_List.Remove(mj);
                break;

            case MJ_STAGE.CPG:
                MJ_CPG_List.Remove(mj);
                break;

            default:
                break;
            }
        }
示例#15
0
        public void ShowResultMJ(List <Result_Struct> data, ResultType type)
        {
            DespawnAllResultMJ();
            int count = 0;

            for (int i = 0; i < data.Count; i++)
            {
                if (data[i].type == type)
                {
                    for (int j = 0; j < data[i].MJList.Count; j++)
                    {
                        MJ  mj    = AddMJ(data[i].MJList[j], MJ_STAGE.CPGResult);
                        int index = i;
                        if (type == ResultType.吃)
                        {
                            UIEventListener.Get(mj.gameObject).onClick += delegate
                            {
                                ControlCenter.Instance.Btn_Result_OnClick_Send(type, index);
                                DespawnAllResultMJ();
                            };
                        }
                        else if (type == ResultType.暗杠)
                        {
                            MJType mjType = data[i].MJList[0];
                            UIEventListener.Get(mj.gameObject).onClick += delegate
                            {
                                ControlCenter.Instance.Btn_Result_OnClick_Send(type, -1, mjType);
                                DespawnAllResultMJ();
                            };
                        }

                        Vector3 pos = Vector3.zero;
                        mj.transform.parent        = ResultMJMgrTrans;
                        mj.transform.localPosition = new Vector3(count * (GameGD.MJ_BOTTOM_CPG_RESULT_W - 2) + i * 20, 0);
                        ResultMJList.Add(mj);
                        count++;
                    }
                }
            }
        }
示例#16
0
        /// <summary>
        /// 添加麻将
        /// </summary>
        /// <param name="type">麻将类型</param>
        /// <param name="stage"> 是否是手中的麻将 </param>
        /// <returns></returns>
        protected virtual MJ AddMJ(MJType type, MJ_STAGE stage, bool bBack = false)
        {
            MJ mj = _MJMgr.SpawnMJ(transform, type, data.playerId, stage, bBack, this);

            switch (stage)
            {
            case MJ_STAGE.IN:
                MJ_IN_List.Add(mj);
                break;

            case MJ_STAGE.OUT:
                MJ_OUT_List.Add(mj);
                break;

            case MJ_STAGE.CPG:
                MJ_CPG_List.Add(mj);
                break;

            default:
                break;
            }
            return(mj);
        }
示例#17
0
        private IEnumerator ShowZhongYuLogic(List <MJType> dataList)
        {
            int SpaceW = GameGD.MJ_BOTTOM_CPG_W;

            ResetSpriteBG(SpaceW, dataList.Count);

            Vector3 pos = new Vector3(-(dataList.Count - 1) / 2.0f * SpaceW, 0, -1);

            int playerId = DataCenter.Instance.gamedata.PlayerID;

            for (int i = 0; i < dataList.Count; i++)
            {
                MJ mj = AddMJ(playerId, dataList[i], MJ_STAGE.CPG);
                mj.transform.localPosition = pos;
                mj.Depth = 2000;
                pos.x   += SpaceW;
                if (DataCenter.Instance.players[playerId].gameOver.IsZhongYu(dataList[i]))
                {
                    mj.sprite.color = Color.green;
                }
                yield return(new WaitForSeconds(0.5f));
            }
        }
示例#18
0
        protected override void OnDragDropRelease(GameObject surface)
        {
            base.OnDragDropRelease(surface);

            MJ   mj      = GetComponent <MJ>();
            bool bChuPai = false;

            if (surface != null)
            {
                Debuger.Log(surface);
                if (surface.name == "DragRegion" && ControlCenter.Instance.IsChuPaing)
                {
                    bChuPai = true;
                    ControlCenter.Instance.ChuPai(mj);
                }
            }

            if (!bChuPai)
            {
                mj.Depth -= 1000;
                ControlCenter.Instance.ResetPlayerPanelPosition(GetComponent <MJ>().PlayerID);
            }
        }
示例#19
0
 public override void SelectMJ(MJ mj, bool bClick = false)
 {
     //if (ControlCenter.Instance.IsChuPaing)
     {
         if (mj == curSelectMJ)
         {
             Debuger.Log("SelectMJ MJ :" + bClick);
             if (ControlCenter.Instance.IsChuPaing)
             {
                 if (bClick)
                 {
                     ControlCenter.Instance.ChuPai(mj);
                     curSelectMJ = null;
                 }
             }
             else
             {
                 //SetCurSelectMJ(null);
                 //if (curSelectMJ != null)
                 //{
                 //    curSelectMJ.TranslatePosition(new Vector3(0, -GameGD.MJ_SELECT_OFFSET, 0));
                 //    curSelectMJ = null;
                 //}
             }
         }
         else
         {
             SetCurSelectMJ(mj);
             //if (curSelectMJ != null)
             //{
             //    curSelectMJ.TranslatePosition(new Vector3(0, -GameGD.MJ_SELECT_OFFSET, 0));
             //}
             //mj.TranslatePosition(new Vector3(0, GameGD.MJ_SELECT_OFFSET, 0));
             //curSelectMJ = mj;
         }
     }
 }
示例#20
0
        protected override MJ AddMJ(MJType type, MJ_STAGE stage, bool bBack = false)
        {
            MJ  mj       = base.AddMJ(type, stage, bBack);
            int playerId = DataCenter.Instance.gamedata.PlayerID;

            if (stage == MJ_STAGE.IN &&
                ControlCenter.Instance.IsChuPaing
                )
            {
                bool bCanSelect = true;
                for (int i = 0; i < DataCenter.Instance.players[playerId].cannotChuMJList.Count; i++)
                {
                    if (type == DataCenter.Instance.players[playerId].cannotChuMJList[i])
                    {
                        bCanSelect = false;
                        break;
                    }
                }
                if (bCanSelect)
                {
                    if (!DataCenter.Instance.hFdata.IsHuiFanging)
                    {
                        MJ_Drag md = mj.GetComponent <MJ_Drag>();
                        if (md)
                        {
                            md.enabled = true;
                        }
                    }
                }
                else
                {
                    mj.SetColor(new Color(0.3f, 0.3f, 0.3f));
                }
            }
            return(mj);
        }
示例#21
0
        public void UpdateData()
        {
            UpdateLabelInfo();
            Vector3    pos    = startMJPos;
            PlayerData data   = DataCenter.Instance.players[playerId];
            int        iSpace = GameGD.MJ_BOTTOM_CPG_W - 5;

            //吃碰杠的牌
            for (int i = 0; i < data.MJ_CPG_List.Count; i++)
            {
                CPG_Struct cs = data.MJ_CPG_List[i];
                for (int j = 0; j < cs.MJList.Count; j++)
                {
                    MJ mj = null;
                    if (cs.type == CPG_TYPE.暗杠)
                    {
                        if (j <= 2)
                        {
                            mj = AddMJ(DataCenter.Instance.gamedata.PlayerID, cs.MJList[j], MJ_STAGE.CPG, true);
                        }
                    }
                    if (mj == null)
                    {
                        mj = AddMJ(DataCenter.Instance.gamedata.PlayerID, cs.MJList[j], MJ_STAGE.CPG);
                    }

                    if (i != 0 || j != 0)
                    {
                        pos.x += iSpace;
                    }

                    switch (cs.dir)
                    {
                    case SEAT_DIR.DIR_BOTTOM:
                        break;

                    case SEAT_DIR.DIR_RIGHT:
                        if (j == 2)
                        {
                            mj.sprite.color = Color.green;
                        }
                        break;

                    case SEAT_DIR.DIR_TOP:
                        if (cs.type == CPG_TYPE.杠 || cs.type == CPG_TYPE.暗杠)
                        {
                            if (j == 3)
                            {
                                mj.sprite.color = Color.green;
                            }
                        }
                        else
                        {
                            if (j == 1)
                            {
                                mj.sprite.color = Color.green;
                            }
                        }
                        break;

                    case SEAT_DIR.DIR_LEFT:
                        if (j == 0)
                        {
                            mj.sprite.color = Color.green;
                        }
                        break;

                    case SEAT_DIR.DIR_NULL:
                        break;

                    default:
                        break;
                    }

                    Vector3 MJPos = pos;
                    if (cs.type == CPG_TYPE.杠 || cs.type == CPG_TYPE.暗杠)
                    {
                        if (j == 3)
                        {
                            MJPos.y += 10;
                            pos.x   -= iSpace;
                            MJPos.x -= 2 * iSpace;
                            pos.x   += 5;
                        }
                    }

                    mj.transform.localPosition = MJPos;
                }
                pos.x += 15;
            }

            //手中的牌
            if (data.MJ_CPG_List.Count != 0)
            {
                pos.x += 30;
            }

            for (int i = 0; i < data.MJ_IN_List.Count; i++)
            {
                MJ mj = AddMJ(DataCenter.Instance.gamedata.PlayerID, data.MJ_IN_List[i], MJ_STAGE.CPG);
                mj.transform.localPosition = pos;
                pos.x += GameGD.MJ_BOTTOM_CPG_W - 5;
            }



            //胡牌
            sprite_胡.gameObject.SetActive(false);
            if (data.gameOver.IsWin)
            {
                pos.x += 150;
                sprite_胡.gameObject.SetActive(true);
                sprite_胡.transform.localPosition = new Vector3(pos.x, sprite_胡.transform.localPosition.y, 0);
                pos.x += 50;
                MJ mj = AddMJ(DataCenter.Instance.gamedata.PlayerID, data.gameOver.huPaiMJType, MJ_STAGE.CPG);
                mj.transform.localPosition = pos;
                //mj.GetComponent<UISprite>().SetAnchor(sprite_胡,0,50)
                //mj.GetComponent<UISprite>().leftAnchor.relative = 1f;
                //mj.GetComponent<UISprite>().leftAnchor.absolute = 10;
            }

            //中鱼
            ShowZhongYu(false);
            if (DataCenter.Instance.players[playerId].gameOver.IsWin)
            {
                ShowZhongYu(DataCenter.Instance.players[playerId].gameOver.ZhongYuList);
            }

            label_DeFen.text = "" + DataCenter.Instance.players[playerId].gameOver.DeFen;
        }
示例#22
0
 private void DespawnResultMJ(MJ mj)
 {
     _MJMgr.DespawnMJ(mj.transform);
     ResultMJList.Remove(mj);
     UIEventListener.Get(mj.gameObject).onClick = null;
 }
示例#23
0
 private void DespawnMJ(MJ mj)
 {
     MJList.Remove(mj);
     _MJ_Mgr.DespawnMJ(mj.transform);
 }
示例#24
0
 private void DestroyTingPaiMJ(MJ mj)
 {
     _MJMgr.DespawnMJ(mj.transform);
     TingPaiMJList.Remove(mj);
 }
示例#25
0
 protected virtual void UpdatePosition_IN()
 {
     curSelectMJ = null;
 }
示例#26
0
 public virtual void SelectMJ(MJ mj, bool bClick = false)
 {
 }