public void Hu() { if (MJUtils.Hu()) { Game.SocketGame.DoHu(); } }
internal void Zhidui(int card) { if (MJUtils.TingZhidui()) { Game.SocketGame.DoZhidui(card); } }
public void TingLiang(int card) { if (MJUtils.TingLiang()) { Game.SocketGame.DoTingLiang(card); } }
public void Ting() { if (MJUtils.Ting()) { Game.SocketGame.DoTing(); } }
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 结算界面 }
public void ZhiGang() { if (MJUtils.ZhiGang()) { int card = RoomMgr.actionNotify.gangList[0]; Game.SocketGame.DoZhiGang(card); } }
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); }); } } } } }
void OnClickTingPengBtn() { Game.SoundManager.PlayClick(); Game.Instance.Ting = true; if (MJUtils.TingPeng()) { OnClickPengBtn(); } }
public void Peng() { if (MJUtils.Peng() || MJUtils.TingPeng()) { int card = RoomMgr.actionNotify.pengArg; Game.SocketGame.DoPeng(card); } }
public void Chi(GameOperChiArg chiArg) { int card = chiArg.targetCard; if (MJUtils.Chi() || MJUtils.TingChi()) { Game.SocketGame.DoChi(chiArg.myCard1, chiArg.myCard2); } }
public void Gang() { if (MJUtils.AnGang() || MJUtils.MinGang() || MJUtils.BuGang()) { int card = RoomMgr.actionNotify.pengArg; Debug.Log("card:" + card); Game.SocketGame.DoGang(card); } }
string ActionsStrOne(int act, string name, int action) { if (MJUtils.CanAct(act, action)) { return(name + "/"); } else { return(""); } }
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); }
void OnMouseDown() { if (!Game.MJMgr.HangUp) { if (MJUtils.DropCard()) { if (IsMine() && IsHandCard()) { OnClickDrop(); } } } }
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(); } }
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); } }
//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(); } }
//这里给服务器发送杠消息 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); //} }
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); }); } } } }
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); } }
// 麻将上下可选择 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); } }