Example #1
0
 public void Hu()
 {
     if (MJUtils.Hu())
     {
         Game.SocketGame.DoHu();
     }
 }
Example #2
0
 internal void Zhidui(int card)
 {
     if (MJUtils.TingZhidui())
     {
         Game.SocketGame.DoZhidui(card);
     }
 }
Example #3
0
 public void TingLiang(int card)
 {
     if (MJUtils.TingLiang())
     {
         Game.SocketGame.DoTingLiang(card);
     }
 }
Example #4
0
 public void Ting()
 {
     if (MJUtils.Ting())
     {
         Game.SocketGame.DoTing();
     }
 }
Example #5
0
    private void SetupUI()
    {
        detail.Time_Text.text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
        ClearCard();
        PrefabUtils.ClearChild(detail.Grid_GridLayoutGroup);

        if (null != RoomMgr.huSyn)
        {
            detail.Title_TextMeshProUGUI.text = MJUtils.GetHuType(RoomMgr.huSyn.resultType);

            if (RoomMgr.huSyn.resultType == MJUtils.HU_LiuJu)
            {
                foreach (GameOperPlayerSettle settle in RoomMgr.huSyn.detail)
                {
                    if (settle.position == Game.MJMgr.MyPlayer.postion)
                    {
                        SetupSub(detail.RoundAccountSub0_RoundAccountSub, settle, RoomMgr.huSyn.card);
                    }
                    else
                    {
                        GameObject      child = PrefabUtils.AddChild(detail.Grid_GridLayoutGroup, detail.RoundAccountSub1_RoundAccountSub);
                        RoundAccountSub sub   = child.GetComponent <RoundAccountSub>();
                        SetupSub(sub, settle);
                    }
                }
            }
            else
            {
                foreach (GameOperPlayerSettle settle in RoomMgr.huSyn.detail)
                {
                    if (settle.position == RoomMgr.huSyn.position)
                    {
                        SetupSub(detail.RoundAccountSub0_RoundAccountSub, settle, RoomMgr.huSyn.card);
                    }
                    else
                    {
                        GameObject      child = PrefabUtils.AddChild(detail.Grid_GridLayoutGroup, detail.RoundAccountSub1_RoundAccountSub);
                        RoundAccountSub sub   = child.GetComponent <RoundAccountSub>();
                        SetupSub(sub, settle);
                    }
                }
            }
        }

        PrefabUtils.ClearChild(detail.SingleCard_UIItem);
        SpawnCard(detail.SingleCard_UIItem.transform, Game.MJMgr.cardHui); //TODO wxd 结算界面的显示

        detail.M0_UIItem.gameObject.SetActive(MJUtils.HasWanfa(MJUtils.MODE_DAIHUI));
        detail.M1_UIItem.gameObject.SetActive(false);
        detail.M2_UIItem.gameObject.SetActive(false);
        detail.M3_UIItem.gameObject.SetActive(false);

        detail.M4_UIItem.gameObject.SetActive(false);
        detail.M5_UIItem.gameObject.SetActive(false);
        detail.M6_UIItem.gameObject.SetActive(false);
        detail.M7_UIItem.gameObject.SetActive(false);

        // TODO 结算界面
    }
Example #6
0
 public void ZhiGang()
 {
     if (MJUtils.ZhiGang())
     {
         int card = RoomMgr.actionNotify.gangList[0];
         Game.SocketGame.DoZhiGang(card);
     }
 }
Example #7
0
    void OnClickChiBtn()
    {
        Game.SoundManager.PlayClick();

        if (MJUtils.Chi() || MJUtils.TingChi())
        {
            List <GameOperChiArg> list = RoomMgr.actionNotify.chiArg;
            //List<int[]> list = Game.MJMgr.MyPlayer.GetChiList (Game.MJMgr.lastDropCard);
            if (null != list && list.Count > 0)
            {
                detail.CtrlPanel_UIItem.gameObject.SetActive(false);

                if (list.Count == 1)
                {
                    GameOperChiArg chiArg = list[0];

                    Game.MJMgr.MyPlayer.Chi(chiArg);
                    //Game.SoundManager.PlayChi ();
                    //detail.DropButton_Button.gameObject.SetActive(true);
                }
                else
                {
                    ClearSelectPanel();
                    detail.SelectPanel_UIItem.gameObject.SetActive(true);
                    List <int> sortTemp = new List <int> ();
                    for (int i = list.Count - 1; i >= 0; i--)
                    //for (int i = 0; i < list.Count; i++)
                    {
                        GameOperChiArg chiArg = list[i];

                        GameObject selectGroup = PrefabUtils.AddChild(detail.SelectRoot_HorizontalLayoutGroup, detail.GroupButton_Button.gameObject);
                        selectGroup.SetActive(true);

                        sortTemp.Clear();
                        sortTemp.Add(chiArg.myCard1);
                        sortTemp.Add(chiArg.myCard2);
                        sortTemp.Add(chiArg.targetCard);
                        sortTemp.Sort();

                        foreach (int card in sortTemp)
                        {
                            GameObject card0 = Game.PoolManager.MjPool.Spawn(card.ToString());
                            card0.transform.SetParent(selectGroup.transform);
                            card0.transform.localScale    = Vector3.one;
                            card0.transform.localRotation = Quaternion.identity;
                        }

                        Button btn = selectGroup.GetComponent <Button> ();
                        btn.onClick.AddListener(() => {
                            Game.MJMgr.MyPlayer.Chi(chiArg);
                            detail.SelectPanel_UIItem.gameObject.SetActive(false);
                            //detail.DropButton_Button.gameObject.SetActive(true);
                        });
                    }
                }
            }
        }
    }
Example #8
0
 void OnClickTingPengBtn()
 {
     Game.SoundManager.PlayClick();
     Game.Instance.Ting = true;
     if (MJUtils.TingPeng())
     {
         OnClickPengBtn();
     }
 }
Example #9
0
    public void Peng()
    {
        if (MJUtils.Peng() || MJUtils.TingPeng())
        {
            int card = RoomMgr.actionNotify.pengArg;

            Game.SocketGame.DoPeng(card);
        }
    }
Example #10
0
    public void Chi(GameOperChiArg chiArg)
    {
        int card = chiArg.targetCard;

        if (MJUtils.Chi() || MJUtils.TingChi())
        {
            Game.SocketGame.DoChi(chiArg.myCard1, chiArg.myCard2);
        }
    }
Example #11
0
 public void Gang()
 {
     if (MJUtils.AnGang() || MJUtils.MinGang() || MJUtils.BuGang())
     {
         int card = RoomMgr.actionNotify.pengArg;
         Debug.Log("card:" + card);
         Game.SocketGame.DoGang(card);
     }
 }
Example #12
0
 string ActionsStrOne(int act, string name, int action)
 {
     if (MJUtils.CanAct(act, action))
     {
         return(name + "/");
     }
     else
     {
         return("");
     }
 }
Example #13
0
    public void OnGameOperPlayerActionNotify(GameOperPlayerActionNotify data)
    {
        RoomMgr.actionNotify = data;

        int position           = data.position;
        int actions            = data.actions;
        int lastActionPosition = data.lastActionPosition;
        int lastActionCard     = data.lastActionCard;

        string pengArg = "";

        if (MJUtils.Peng())
        {
            pengArg = GetCardStr(data.pengArg);
        }

        string chi = "";

        if (MJUtils.Chi())
        {
            int count = data.chiArg.Count;
            for (int i = 0; i < count; i++)
            {
                GameOperChiArg arg = data.chiArg[i];
                chi += "[" + GetCardStr(arg.myCard1) + "," + GetCardStr(arg.myCard2) + "]-" + GetCardStr(arg.targetCard) + " ";
            }
        }

        Debug.LogFormat("===<color=blue>提示</color>,最后操作[{0}]; 牌[{1}]", strs[lastActionPosition], GetCardStr(lastActionCard));
        Debug.LogFormat("===<color=blue>提示</color>,{0} <color=yellow>{1}</color>,[{2}] 支对:[{3}],听列表:[{4}]", strs[data.position], ActionStr(data.actions), pengArg + chi, ToStr(data.tingDzs), ToStr(data.tingList));

        if (lastActionPosition >= 0 && lastActionCard > 0)
        {
            MJPlayer   p  = Game.MJMgr.GetPlayerByPosition(lastActionPosition);
            GameObject go = p.dropCardLayout.last;
            if (null != go)
            {
                MJEntity et = go.GetComponent <MJEntity>();
                if (null != et)
                {
                    Game.MJMgr.LastDropCard = et;
                    Game.MJMgr.targetFlag.gameObject.SetActive(true);
                    Game.MJMgr.targetFlag.position = go.transform.position;
                }
            }
        }
        else
        {
            Game.MJMgr.targetFlag.gameObject.SetActive(false);
        }

        EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage);
    }
Example #14
0
 void OnMouseDown()
 {
     if (!Game.MJMgr.HangUp)
     {
         if (MJUtils.DropCard())
         {
             if (IsMine() && IsHandCard())
             {
                 OnClickDrop();
             }
         }
     }
 }
Example #15
0
    void OnUpdateCtrlPanel(params object[] args)
    {
        bool chu        = MJUtils.DropCard();
        bool chi        = MJUtils.Chi();
        bool peng       = MJUtils.Peng();
        bool angang     = MJUtils.AnGang();
        bool bugang     = MJUtils.BuGang();
        bool zhigang    = MJUtils.ZhiGang();
        bool hu         = MJUtils.Hu();
        bool ting       = MJUtils.Ting();
        bool tingLiang  = MJUtils.TingLiang();
        bool tingChi    = MJUtils.TingChi();
        bool tingPeng   = MJUtils.TingPeng();
        bool tingZhidui = MJUtils.TingZhidui();

        bool showPanel = (chi || peng || angang || bugang || zhigang || ting || hu || tingChi || tingPeng || tingZhidui);

        detail.CtrlPanel_UIItem.gameObject.SetActive(showPanel);
        detail.ChiButton_Button.gameObject.SetActive(chi);
        detail.PengButton_Button.gameObject.SetActive(peng);
        detail.AnGangButton_Button.gameObject.SetActive(angang);
        detail.BuGangButton_Button.gameObject.SetActive(bugang);
        detail.ZhiGangButton_Button.gameObject.SetActive(zhigang);
        detail.TingButton_Button.gameObject.SetActive(ting);
        detail.HuButton_Button.gameObject.SetActive(hu);
        detail.TingChiButton_Button.gameObject.SetActive(tingChi);
        detail.TingPengButton_Button.gameObject.SetActive(tingPeng);
        detail.ZhiduiButton_Button.gameObject.SetActive(tingZhidui);

        print("   ================  update ui  " + tingLiang + " , " + TingLiangFlag);
        if (tingLiang) //tingliang #0 按原本架构进入UI刷新。
        {
            Debug.Log("收到听亮消息,需打出亮牌");
            TingLiangFlag = true;
            SetTingLiangUI();
        }
        else if (TingLiangFlag)  // 保证界面会注销。
        {
            ResetCard();
        }

        if (chu && Game.Instance.Ting)
        {
            Game.MaterialManager.TurnOffHandCard();
        }
    }
Example #16
0
    void OnClickTingBtn()
    {
        Game.SoundManager.PlayClick();

        bool ting = MJUtils.Ting();

        //bool tingChi = MJUtils.TingChi();
        //bool tingPeng = MJUtils.TingPeng();
        //bool tingZhidui = MJUtils.TingZhidui();

        //bool t = ting || tingChi || tingPeng;
        if (ting)
        {
            Game.SocketGame.DoTing();
            Game.Instance.Ting = true;
            detail.CtrlPanel_UIItem.gameObject.SetActive(false);
        }
    }
Example #17
0
    //void OnClickHuBtn()
    //{
    //    Game.MJMgr.MyPlayer.Hu();
    //    detail.CtrlPanel_UIItem.gameObject.SetActive(false);

    //    //		Game.SoundManager.PlayHu ();
    //}

    void OnUpdateCtrlPanel(params object[] args)
    {
        bool chu  = MJUtils.DropCard();
        bool chi  = MJUtils.Chi();
        bool peng = MJUtils.Peng();
        //bool hu = false;// MJUtils.CanChi(actions);
        bool minggang = MJUtils.MinGang();
        bool bugang   = MJUtils.BuGang();
        bool angang   = MJUtils.AnGang();
        bool gang     = angang || minggang || bugang;

        bool ting       = MJUtils.Ting();
        bool tingChi    = MJUtils.TingChi();
        bool tingPeng   = MJUtils.TingPeng();
        bool tingZhidui = MJUtils.TingZhidui();

        //bool showPanel = (!Game.Instance.Ting)&& (chi || peng || ting || tingChi || tingPeng || tingZhidui);
        bool showPanel = (chi || peng || ting || tingChi || tingPeng || tingZhidui || gang);

        /*      Debug.LogError("minggang:" + minggang);
         *    Debug.LogError("angang:" + angang);
         *    Debug.LogError("(!Game.Instance.Ting)&& (chi || peng || ting || tingChi || tingPeng || tingZhidui):" + ((!Game.Instance.Ting) && (chi || peng || ting || tingChi || tingPeng || tingZhidui)));
         *    Debug.LogError("showPanel:" + showPanel);
         *    Debug.LogError("gang:" + gang);
         */
        detail.CtrlPanel_UIItem.gameObject.SetActive(showPanel);
        detail.ChiButton_Button.gameObject.SetActive(chi);
        detail.PengButton_Button.gameObject.SetActive(peng);
        detail.GangButton_Button.gameObject.SetActive(gang);
        detail.DropButton_Button.gameObject.SetActive(chu /* || ting*/);
        detail.TingButton_Button.gameObject.SetActive(ting);
        detail.HuButton_Button.gameObject.SetActive(false);
        detail.TingChiButton_Button.gameObject.SetActive(tingChi);
        detail.TingPengButton_Button.gameObject.SetActive(tingPeng);
        detail.ZhiduiButton_Button.gameObject.SetActive(tingZhidui);

        if (chu)
        {
            Game.MaterialManager.TurnOffHandCard();
        }
    }
Example #18
0
 //这里给服务器发送杠消息
 public void DoGang(int card)
 {
     if (MJUtils.MinGang())
     {
         DoGameOperPlayerActionSyn(MJUtils.ACT_MIN_GANG, card);
     }
     else if (MJUtils.BuGang())
     {
         DoGameOperPlayerActionSyn(MJUtils.ACT_BU_GANG, card);
     }
     else if (MJUtils.AnGang())
     {
         DoGameOperPlayerActionSyn(MJUtils.ACT_AN_GANG, card);
     }
     //if (Game.Instance.Ting)
     //{
     //    DoGameOperPlayerActionSyn(MJUtils.ACT_TING_PENG, card);
     //}
     //else
     //{
     //    DoGameOperPlayerActionSyn(MJUtils.ACT_PENG, card);
     //}
 }
Example #19
0
    void OnClickZhiduiBtn()
    {
        Game.SoundManager.PlayClick();
        if (MJUtils.TingZhidui())
        {
            ClearSelectPanel();

            List <int> list = RoomMgr.actionNotify.tingDzs;
            if (null != list && list.Count > 0)
            {
                detail.CtrlPanel_UIItem.gameObject.SetActive(false);
                detail.SelectPanel_UIItem.gameObject.SetActive(true);

                for (int i = 0; i < list.Count; i++)
                {
                    int card = list[i];

                    GameObject selectGroup = PrefabUtils.AddChild(detail.SelectRoot_HorizontalLayoutGroup, detail.GroupButton_Button.gameObject);

                    GameObject card0 = Game.PoolManager.MjPool.Spawn(card.ToString());
                    card0.transform.SetParent(selectGroup.transform);
                    card0.transform.localScale    = Vector3.one;
                    card0.transform.localRotation = Quaternion.identity;

                    Button btn = selectGroup.GetComponent <Button>();
                    btn.onClick.AddListener(() =>
                    {
                        Game.MJMgr.MyPlayer.Zhidui(card);
                        detail.SelectPanel_UIItem.gameObject.SetActive(false);
                        EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage);
                        //Game.SoundManager.PlayChi();
                        //detail.DropButton_Button.gameObject.SetActive(true);
                    });
                }
            }
        }
    }
Example #20
0
    void OnGameOperPlayerActionSyn(GameOperPlayerActionSyn data)
    {
        Debug.LogFormat("===<color=green>同步</color>[seq({0})]:{1} <color=yellow>{2}</color> 牌:[{3}]", data.seq, strs[data.position], ActionStr(data.action), ToStr(data.cardValue));

        int      position = data.position;
        MJPlayer player   = Game.MJMgr.GetPlayerByPosition(data.position);
        bool     isMy     = player.index == 0;

        if (MJUtils.DragCard(data.action))
        {
            int card = data.cardValue[0];
            player.DragCard(card, isMy);
        }
        else if (MJUtils.DropCard(data.action))
        {
            HandAnima.IsBusy = true;
            int card = data.cardValue[0];
            //Game.MJMgr.LastDropCardPlayer = player;

            player.MJHand.PlayDropCard(card, isMy);
        }
        else if (MJUtils.Peng(data.action))
        {
            player.MJHand.PlayPeng(data.cardValue[0], isMy);
        }
        //胡牌的动画
        else if (MJUtils.Hu(data.action))
        {
            player.MJHand.PlayHU(data.cardValue[0], isMy);
        }
        else if (MJUtils.Chi(data.action))
        {
            player.MJHand.PlayChi(data.cardValue[0], data.cardValue[1], isMy);
        }
        else if (MJUtils.AnGang(data.action))
        {
            player.MJHand.PlayGang(data.cardValue[0], isMy, 1);
        }
        else if (MJUtils.BuGang(data.action))
        {
            player.MJHand.PlayGang(data.cardValue[0], isMy, 2);
        }
        else if (MJUtils.ZhiGang(data.action))
        {
            player.MJHand.PlayGang(data.cardValue[0], isMy, 3);
        }
        else if (MJUtils.Ting(data.action))
        {
            player.MJHand.PlayTing(isMy);
        }
        else if (MJUtils.TingLiang(data.action))
        {
            player.MJHand.PlayTingLiang(data.cardValue[0], isMy);
        }
        else if (MJUtils.TingPeng(data.action))
        {
            player.MJHand.PlayPeng(data.cardValue[0], isMy);

            Game.Delay(0.5f, () =>
            {
                player.MJHand.PlayTing(isMy);
            });
        }
        else if (MJUtils.TingChi(data.action))
        {
            player.MJHand.PlayChi(data.cardValue[0], data.cardValue[1], isMy);

            Game.Delay(0.5f, () =>
            {
                player.MJHand.PlayTing(isMy);
            });
        }
        else if (MJUtils.TingZhidui(data.action))
        {
            Game.SoundManager.PlayZhidui(position);

            int card = data.cardValue[0];
            Game.MJMgr.MjData[position].player.ting = true;
            EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage);
            player.handCardLayout.PlayZhidui(card, isMy);
        }
        else if (MJUtils.ShuaiJiuYao(data.action))
        {
            player.MJHand.PlayShuaiJiuYao(data.cardValue.ToArray(), isMy);
        }
    }
Example #21
0
    //  麻将上下可选择  TODO
    //public delegate void EventHandler(MJEntity card);
    //public event EventHandler reSetPoisiton;
    //public event EventHandler onSendMessage;
    //public EventHandler tingLiangSendMessage;//TODO 因为不知道如何备份清空onSendMessage,将onSendMessage垄断成我的专属方法,所以用个新事件来独断这个event。

    void OnMouseDown()                                //按下
    {
        if (Game.MJMgr.HangUp)
        {
            return;
        }
        if (!(IsMine() && IsHandCard()))
        {
            return;
        }
        if (!isEnable)
        {
            return;
        }

        if (isCardUp)
        {
            SetSelect(!isSelect);
            return;
        }

        if (isSelect == false)
        {
            foreach (MJEntity me in Game.MJMgr.MyPlayer.handCardLayout.list)
            {
                if (me.isSelect)
                {
                    me.SetSelect(false);
                }
            }
            //if (reSetPoisiton != null)
            //{
            //    reSetPoisiton(this.GetComponent<MJEntity>());
            //isSelect = true;
            SetSelect(true);
            //}
        }
        else
        {
            if (MJUtils.DropCard())
            {
                Debug.Log("  drop card----------------  " + Card);
                //if(tingLiangSendMessage != null && MJUtils.TingLiang())
                //{
                //    tingLiangSendMessage(this.GetComponent<MJEntity>());
                //} else if (onSendMessage != null)     //发送消息
                //{
                //    onSendMessage(this.GetComponent<MJEntity>());
                //} else {
                OnClickDrop();
                //}
            }
            if (MJUtils.TingLiang())
            {
                Debug.Log("  tingliang card----------------  " + Card);
                Game.SoundManager.PlayClick();
                //Game.MJMgr.MyPlayer.TingLiang(Card);
                Game.SocketGame.DoTingLiang(Card);
                EventDispatcher.DispatchEvent(MessageCommand.TingLiangEnd);
            }
            isSelect = false;
            //SetSelect(false);
        }
    }