// Use this for initialization void Start() { player = this.GetComponent <MJPlayer> (); //EventDispatcher.AddEventListener (MessageCommand.MJ_DragCard, OnDragCard); //EventDispatcher.AddEventListener (MessageCommand.MJ_DropCard, OnDropCard); }
void PlayZimoHu(MJPlayer player, GameOperPlayerHuSyn data) { Game.MaterialManager.TurnOnHandCard(); player.handCardLayout.PlayHu(); Game.SoundManager.PlayWin(); Vector3 pos = player.DragCard(data.card, true); if (!PlayHuEffect(data.position)) { Game.SoundManager.PlayEffect(27); Game.SoundManager.PlayZimo(data.position); GameObject eff = Game.PoolManager.EffectPool.Spawn("zimou _EF"); eff.transform.position = pos; Game.PoolManager.EffectPool.Despawn(eff, 5); } if (!data.skipHuSettle) { Game.Delay(3, () => { Game.SoundManager.PlaySettleSound(); Game.DialogMgr.PushDialog(UIDialog.SettleRoundDialog); }); } }
void PlayHu(MJPlayer player, GameOperPlayerHuSyn data) { Vector3 pos = player.handCardLayout.DragCard(data.card, Game.MJMgr.LastDropCard.gameObject); Game.MaterialManager.TurnOnHandCard(); player.handCardLayout.PlayHu(); Game.SoundManager.PlayHu(data.position); if (!PlayHuEffect(data.position)) { EventDispatcher.DispatchEvent(MessageCommand.PlayEffect, data.position, "huUI_EF"); GameObject eff = Game.PoolManager.EffectPool.Spawn("hu_EF"); eff.transform.position = pos; Game.PoolManager.EffectPool.Despawn(eff, 3); } if (!data.skipHuSettle) { Game.Delay(3, () => { Game.SoundManager.PlaySettleSound(); Game.DialogMgr.PushDialog(UIDialog.SettleRoundDialog); }); } }
public MJPlayer GetPlayerByPosition(int position) { int index = Game.MJMgr.GetIndexByPosition(position); MJPlayer player = Game.MJMgr.players[index]; return(player); }
/// <summary> /// 发牌 /// </summary> /// <param name="viewSeat"></param> /// <param name="paiValue"></param> /// <returns></returns> public IEnumerator SendCard(int viewSeat, int paiValue, bool sendHead = true) { yield return(null); MJItem item; if (sendHead) { if (index == -1) { index = 135; } item = _mjItemMgr.MJItemList[index--]; } else { if (lastIndex == 136) { lastIndex = 0; } item = _mjItemMgr.MJItemList[lastIndex]; if (lastIndex % 2 == 0) { lastIndex += 2; } else { lastIndex--; } } MJPlayer player = _mjPlayerList[viewSeat]; StartCoroutine(player.SentCard(paiValue, item)); }
/// <summary> /// 出牌 /// </summary> /// <param name="viewSeat"></param> /// <param name="paiValue"></param> /// <returns></returns> public IEnumerator OutCard(int viewSeat, int paiValue) { yield return(null); MJPlayer player = _mjPlayerList[viewSeat]; StartCoroutine(player.OutCard(paiValue)); }
//void OnDragCard(params object[] args){ // if (player.IsActive) { // Game.Delay (1f, () => { // Game.MJMgr.dropIndex = player.HandCards.Count -1; // player.DropCard (); // }); // } //} void OnDropCard(params object[] args) { MJPlayer dropCardPlayer = (MJPlayer)args [0]; if (dropCardPlayer != player) { EventDispatcher.DispatchEvent(MessageCommand.MJ_Pass); } }
public void Bao(int dice, int oldBao) { IsBusy = true; MJPlayer player = Game.MJMgr.GetPlayerByPosition(position); //Time.timeScale = 0.1f; bool hasOldBao = (oldBao != -1); if (hasOldBao) { HideBaoEffect(); Game.SoundManager.PlayHuanBao(player.postion); int card = oldBao; //Game.SoundManager.PlayCardSound(card); if (player.baoRoot.childCount > 0) { Transform old = player.baoRoot.GetChild(0); Game.PoolManager.CardPool.Despawn(old.gameObject); } Transform dropCLTrans = player.dropCardLayout.transform; int childCount = dropCLTrans.childCount; anim.gameObject.SetActive(true); Vector3 toPos = player.dropCardLayout.GetLocalPos(childCount); Vector3 endPos = dropCLTrans.TransformPoint(toPos); hand.transform.position = endPos; GameObject child = Game.PoolManager.CardPool.Spawn(card.ToString()); //Game.MJMgr.LastDropCard = child.GetComponent<MJEntity>(); //Game.MJMgr.LastDropCard.Card = card; Transform cardTrans = child.transform; cardTrans.SetParent(handMJRoot); cardTrans.localPosition = Vector3.zero; cardTrans.localRotation = Quaternion.identity; cardTrans.localScale = Vector3.one; anim.Play("Drop"); handAnima.OnDropCallback = () => { Game.SoundManager.PlayDropCard(); player.dropCardLayout.AddCard(card, child); MJCardGroup.TryDragCard(); //MJCardGroup.DragBaoCard(dice); Game.Delay(0.5f, () => { PutBao(); }); }; } else { MJCardGroup.TryDragCard(); //MJCardGroup.DragBaoCard(); PutBao(); } }
/// <summary> /// 根据本地座位index == 0 判断是否为手牌 /// </summary> /// <returns></returns> bool IsMine() { MJPlayer player = this.GetComponentInParent <MJPlayer>(); //lvlinsong index为本地chairid序号 0为自身的座位 if (null != player && player.index == 0) { return(true); } return(false); }
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); }
IEnumerator doLicensing(List <GameOperHandCardSyn> handCards) { float waitTime = 0.3f; foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); player.handCardLayout.PlayDefault(); } yield return(new WaitForEndOfFrame()); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); for (int i = 0; i < 6; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } Game.SoundManager.PlayGet4Card(); } yield return(new WaitForSeconds(waitTime)); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); for (int i = 6; i < 12; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } Game.SoundManager.PlayGet4Card(); } yield return(new WaitForSeconds(waitTime)); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); int sCard = hc.handCards[12]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } }
/// <summary> /// 操作牌 /// </summary> /// <param name="viewSeat"></param> /// <param name="oper"></param> /// <returns></returns> public IEnumerator OperateCard(int viewSeat, MJOperatorModel oper, int outCardViewSeat) { yield return(null); MJPlayer player = _mjPlayerList[viewSeat]; MJItem item = null; if (outCardViewSeat != -1) { item = _mjPlayerList[viewSeat].GetLastOutCard(); } StartCoroutine(player.OperateCard(oper, item)); }
void Init() { //资源加载管理 _mjResMgr = new MJResMgr(); //加载麻将桌 GameObject tablePrefab = _mjResMgr.CreateMJTable(); GameObject _mjTableObj = GameObject.Instantiate(tablePrefab, this.transform) as GameObject; //_mjTableObj.name = tablePrefab.name; _mjTable = _mjTableObj.GetComponent <MJTable>(); //加载麻将mesh _mjResMgr.LoadMJMesh(); //加载骰子 GameObject dicePrefab = _mjResMgr.CreateDice(); GameObject _dice = Instantiate(dicePrefab, _mjTable.transform) as GameObject; if (_dice != null) { _dice.transform.localPosition = new Vector3(0, 0.7f, 0); _mjDice = _dice.GetComponent <MJDice>(); } //加载摄像机管理 _mjCamera = new MJCameraMgr(); _mjCamera.Init(); //加载玩家控制类 _mjPlayerList = new List <MJPlayer>(); GameObject playersPoint = new GameObject("Players"); GameObject playerPrefab = _mjResMgr.CreatePlayers(); for (int i = 0; i < 4; ++i) { GameObject _player = Instantiate(playerPrefab, playersPoint.transform) as GameObject; _player.name = playerPrefab.name + i; _player.transform.localEulerAngles = new Vector3(0, -90 * i, 0); if (_player != null) { MJPlayer mjPlayer = _player.GetComponent <MJPlayer>(); if (mjPlayer != null) { mjPlayer.viewSeat = i; _mjPlayerList.Add(mjPlayer); } } } //加载麻将子管理类 _mjItemMgr = new MJItemMgr(); _mjItemMgr.InitMJItem(); //测试 InitTestMahjong(); }
void OnGameOperBaoChangeSyn(GameOperBaoChangeSyn data) { HandAnima.IsBusy = true; int dice = data.dice; int oldBao = data.oldBao; int position = data.position; Debug.LogFormat("===换宝:{0} oldBao:{1} dice:[{2}]", strs[data.position], GetCardStr(oldBao), dice); //Debug.LogFormat("===OnGameOperBaoChangeSyn:" + Utils.ToStr(data)); MJPlayer player = Game.MJMgr.GetPlayerByPosition(position); player.MJHand.Bao(dice, oldBao); }
void SetupSub(RoundAccountSub sub, GameOperPlayerSettle settle, int huCard = -1) { MJPlayer mjPlayer = Game.MJMgr.GetPlayerByPosition(settle.position); MjData data = Game.MJMgr.MjData[settle.position]; sub.detail.Name_Text.text = data.player.nickName; sub.detail.ID_Text.text = "ID:" + data.player.playerId; if (settle.fanNum > 0) { sub.detail.Fan_TextMeshProUGUI.text = string.Format("+{0}分", settle.fanNum); } else { sub.detail.Fan_TextMeshProUGUI.text = string.Format("{0}分", settle.fanNum); } Game.MJMgr.MjData[settle.position].player.coin = settle.coin; Game.MJMgr.MjData[settle.position].player.score = settle.score; //sub.detail.ResultType_Text.text = settle.resultType.ToString(); string fans = ""; foreach (string fan in settle.fanDetail) { //if (fan.Contains("庄家")) continue; fans += fan.Trim() + " "; } sub.detail.TingInfo_Text.text = fans; bool IsMakers = Game.MJMgr.MakersPosition == settle.position; sub.detail.ZhuangFlag_Image.gameObject.SetActive(IsMakers); foreach (int card in mjPlayer.tableCardLayout.TableCards) { SpawnCard(sub.detail.TableCards_GridLayoutGroup.transform, card); } foreach (int card in settle.handcard) { SpawnCard(sub.detail.Handcards_GridLayoutGroup.transform, card); } if (huCard > 0) { SpawnCard(sub.detail.Handcards_GridLayoutGroup.transform, huCard); } }
// Use this for initialization //void Start () { // player = this.GetComponent<MJPlayer> (); // EventDispatcher.AddEventListener (MessageCommand.MJ_DragCard, OnDragCard); // EventDispatcher.AddEventListener (MessageCommand.MJ_DropCard, OnDropCard); //} //void OnDestroy(){ // EventDispatcher.RemoveEventListener (MessageCommand.MJ_DragCard, OnDragCard); // EventDispatcher.RemoveEventListener (MessageCommand.MJ_DropCard, OnDropCard); //} //void OnDragCard(params object[] args){ // MJPlayer dragCardPlayer = (MJPlayer)args [0]; // int card = (int)args [1]; // if (dragCardPlayer == player) { // // 可能同时存在多个可以杠的,跟吃一样 // bool gang = false;// player.CanAnGang (card) || player.CanAddGang (card); // bool hu = player.CanHu (card); // if (gang || hu) { // EventDispatcher.DispatchEvent (MessageCommand.MJ_UpdateCtrlPanel,false,false,gang,hu); // } // } //} void OnDropCard(params object[] args) { MJPlayer dropCardPlayer = (MJPlayer)args [0]; //if (dropCardPlayer != player) { // // 判断其他玩家 吃 碰 杠 胡 // bool chi = player.CanChi (card); // bool peng = player.CanPeng (card); // bool gang = false;// player.CanGang (card); // bool hu = player.CanHu (card); // if (chi || peng || gang || hu) { // // player.turnState = PlayerTurnState.NeedCard; // EventDispatcher.DispatchEvent (MessageCommand.MJ_UpdateCtrlPanel,chi,peng,gang,hu); // } else { // EventDispatcher.DispatchEvent (MessageCommand.MJ_Pass); // } //} }
void OnGameOperPlayerHuSyn(GameOperPlayerHuSyn data) { string huInfo = GetHuStr(data.resultType); string winInfo = GetHuStr(data.winType); Debug.LogFormat("===HuSyn:{0}[炮:{1}] card:{2} bao:[{3}] Hu:{4}/Win:{5}", (data.position < 0) ? "流局" : strs[data.position], (data.paoPosition < 0) ? "无" : strs[data.paoPosition], GetCardStr(data.card), GetCardStr(data.bao), huInfo, winInfo); RoomMgr.huSyn = data; if (RoomMgr.huSyn.resultType == MJUtils.HU_LiuJu) { Game.SoundManager.PlayFall(); if (!data.skipHuSettle) { Game.Delay(3, () => { Game.SoundManager.PlaySettleSound(); Game.DialogMgr.PushDialog(UIDialog.SettleRoundDialog); }); } return; } MJPlayer player = Game.MJMgr.GetPlayerByPosition(data.position); bool isMy = player.index == 0; if (data.resultType == MJUtils.HU_ShouPao)//收炮提前判断。只放特效,不用记录数据。 { Game.SoundManager.PlayEffect(28); GameObject eff = Game.PoolManager.EffectPool.Spawn("shandian_EF"); eff.transform.position = Game.MJMgr.LastDropCard.transform.position; Game.PoolManager.EffectPool.Despawn(eff, 5); player.MJHand.PlayShouPao(data.card, isMy); return; } List <GameOperPlayerSettle> list = data.detail; foreach (GameOperPlayerSettle s in list) { Debug.LogFormat("===OnGameOperPlayerHuSyn:{0} fanNum:{1} handcard:[{2}]", strs[s.position], s.fanNum, ToStr(s.handcard)); if (s.position == data.position) { player.handCardLayout.Refresh(s.handcard); } } bool zimo = (data.paoPosition == -1 || data.paoPosition == data.position); if (zimo) { PlayZimoHu(player, data); } else { bool isPao = false; if (-1 != data.paoPosition) { Game.SoundManager.PlayEffect(28); MJPlayer paoPlayer = Game.MJMgr.GetPlayerByPosition(data.paoPosition); GameObject eff = Game.PoolManager.EffectPool.Spawn("shandian_EF"); eff.transform.position = Game.MJMgr.LastDropCard.transform.position; Game.PoolManager.EffectPool.Despawn(eff, 5); isPao = paoPlayer.index == 0; } Game.Delay(1, () => { bool isWin = player.index == 0; if (isWin) { Game.SoundManager.PlayWin(); } else if (isPao) { Game.SoundManager.PlayLose(); } PlayHu(player, data); }); } }
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); } }
void LicensingOnReconnect(List <GameOperHandCardSyn> handCards) { foreach (GameOperHandCardSyn hc in handCards) { Debug.LogFormat("===CardSyn: {0} HandCard[{1}],DropCards[{2}],TableCards[{3}],reconnect:{4},jiuyaocards{5}", strs[hc.position], ToStr(hc.handCards), ToStr(hc.cardsBefore), ToStr(hc.downCards, true), true, ToStr(hc.yaojiuCards)); MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); player.dropCardLayout.Clear(); player.tableCardLayout.Clear(); player.handCardLayout.Clear(); player.handCardLayout.PlayDefault(); player.jiuYaoCardLayout.Clear(); for (int i = 0; i < hc.handCards.Count; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard); MJCardGroup.TryDragCard(); } for (int i = 0; i < hc.cardsBefore.Count; i++) { int sCard = hc.cardsBefore[i]; player.dropCardLayout.AddCard(sCard); MJCardGroup.TryDragCard(); } for (int i = 0; i < hc.yaojiuCards.Count; i++) { int sCard = hc.yaojiuCards[i]; player.jiuYaoCardLayout.AddCard(sCard); MJCardGroup.TryDragCard(); } for (int i = 0; i < hc.downCards.Count; i++) { int sCard = hc.downCards[i]; int card1 = (sCard & 0xff); int card2 = ((sCard >> 8) & 0xff); int card3 = ((sCard >> 16) & 0xff); if (card3 == 0xf) //杠特殊处理 //TODO 技术债务 { player.tableCardLayout.AddCard(card1); player.tableCardLayout.AddCard(card1); player.tableCardLayout.AddCard(card1); player.tableCardLayout.AddCard(card1); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); Game.Instance.Gang = true; MJCardGroup.TryDragCard();//杠摸 } else { player.tableCardLayout.AddCard(card1); player.tableCardLayout.AddCard(card2); player.tableCardLayout.AddCard(card3); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); } } } }
void OnGameOperStartSyn(GameOperStartSyn data) { Debug.LogFormat("===StartSyn(seq[" + data.seq + "]):" + Utils.ToStr(data)); Game.Instance.state = GameState.Playing; Game.SoundManager.PlayRoundStartSound(); RoomMgr.gameOperStartSyn = data; Game.MJMgr.Clear(); Game.MJMgr.CardLeft = data.cardLeft; print(" ============ data.guiCard ============== " + data.guiCards.Count + " / " + data.guiCards[0]); Game.MJMgr.tmpHui = data.guiCards[0]; //Game.MJMgr.Init(); Game.Instance.Ting = false; //Game.IsBusy = false; //Game.MJMgr.HangUp = false; for (int i = 0; i < Game.MJMgr.MjData.Length; i++) { if (null != Game.MJMgr.MjData[i]) { Player player = Game.MJMgr.MjData[i].player; if (null != player) { player.ting = false; } } } Game.MJMgr.MakersPosition = data.bankerPos; // 庄家位置 MJPlayer banker = Game.MJMgr.GetPlayerByPosition(data.bankerPos); Game.MJMgr.Shuffle(); if (data.reconnect) { Game.MJTable.Dice(data.dice1, data.dice2); LicensingOnReconnect(data.playerHandCards); } else { banker.MJHand.PlayDize(data.dice1, data.dice2); LicensingOnStart(data.playerHandCards); Game.MJTable.PlayShuffle(); Game.Delay(1, () => { Game.MJMgr.Licensing(data.playerHandCards); }); } if (Game.UIMgr.IsSceneActive(UIPage.PlayPage)) { EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage); } else { Game.UIMgr.PushScene(UIPage.PlayPage); } }
bool PlayHuEffect(int position) { string HuEffectUI = ""; string HuEffectScene = ""; switch (RoomMgr.huSyn.winType) { case MJUtils.HU_BaoZhongBao: { Game.SoundManager.PlayEffect(21); HuEffectUI = "bzbUI_EF"; HuEffectScene = "baozhongbao_EF"; break; } case MJUtils.HU_DaiLou: { Game.SoundManager.PlayEffect(23); HuEffectUI = "louUI_EF"; HuEffectScene = "lou_EF"; break; } case MJUtils.HU_GuaDaFeng: { Game.SoundManager.PlayEffect(29); HuEffectUI = "ljfUI_EF"; HuEffectScene = "longjuanfeng_EF"; break; } case MJUtils.HU_HongZhong: { Game.SoundManager.PlayEffect(25); HuEffectUI = "hzmtfUI_EF"; HuEffectScene = "hzmtf_EF"; break; } //case MJUtils.HU_Hu: //TODO 为什么屏蔽了? // { // Game.SoundManager.PlayEffect(26); // HuEffectUI = "huUI_EF"; // HuEffectScene = "hu_EF"; // break; // } case MJUtils.HU_KaiPaiZha: { Game.SoundManager.PlayEffect(24); HuEffectUI = "zhaUI_EF"; HuEffectScene = "zhadang_EF"; break; } case MJUtils.HU_MoBao: { Game.SoundManager.PlayEffect(22); HuEffectUI = "mbhUI_EF"; HuEffectScene = "mobaohu_EF"; break; } default: { return(false); } } EventDispatcher.DispatchEvent(MessageCommand.PlayEffect, position, HuEffectUI); MJPlayer player = Game.MJMgr.GetPlayerByPosition(position); GameObject eff = Game.PoolManager.EffectPool.Spawn(HuEffectScene); eff.transform.position = player.EffectPos.position; Game.PoolManager.EffectPool.Despawn(eff, 5); return(true); }
public bool IsMine() { MJPlayer player = this.GetComponentInParent <MJPlayer>(); return(null != player && player.index == 0); }
IEnumerator doLicensing(List <GameOperHandCardSyn> handCards) { float waitTime = 0.3f; foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); player.handCardLayout.PlayDefault(); } yield return(new WaitForEndOfFrame()); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); for (int i = 0; i < 6; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } Game.SoundManager.PlayGet4Card(); } yield return(new WaitForSeconds(waitTime)); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); for (int i = 6; i < 12; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } Game.SoundManager.PlayGet4Card(); } yield return(new WaitForSeconds(waitTime)); foreach (GameOperHandCardSyn hc in handCards) { MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); int sCard = hc.handCards[12]; player.handCardLayout.AddCard(sCard, true); MJCardGroup.TryDragCard(); } //yield 可能要yield。 //刚摸完牌的时候: if ((RoomMgr.playerGamingSyn != null) && ((RoomMgr.playerGamingSyn.wanfa & MJUtils.MODE_SHUAIJIUYAO) != 0)) { Game.UIMgr.PushScene(UIPage.JiuYaoPage); } else //跳过界面,直接准备完成 { Game.SocketGame.DoREADYL(1, 2); } if (tmpHui != -1) //根据传来的会牌值 判断是否要显示最后一张牌 { cardHui = tmpHui; MJCardGroup.ShowHuiCard(cardHui); EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage); } }
//int[] wins = new int[] { // MJUtils.HU_BaoZhongBao, // MJUtils.HU_DaiLou, // MJUtils.HU_GuaDaFeng, // MJUtils.HU_HongZhong, // MJUtils.HU_Hu, // MJUtils.HU_KaiPaiZha, // MJUtils.HU_MoBao //}; //void _OnGameOperPlayerHuSyn(GameOperPlayerHuSyn data) //{ // string huInfo = GetHuStr(data.resultType); // string winInfo = GetHuStr(data.winType); // Debug.LogFormat("===HuSyn:{0}[炮:{1}] card:{2} bao:[{3}] Hu:{4}/Win:{5}", (data.position < 0) ? "流局" : strs[data.position], (data.paoPosition < 0) ? "无" : strs[data.paoPosition], GetCardStr(data.card), GetCardStr(data.bao), huInfo, winInfo); // RoomMgr.huSyn = data; // if (RoomMgr.huSyn.resultType != MJUtils.HU_LiuJu) // { // MJPlayer player = Game.MJMgr.GetPlayerByPosition(data.position); // MjData pData = Game.MJMgr.MjData[data.position]; // bool zimo = (data.paoPosition == -1 || data.paoPosition == data.position); // List<GameOperPlayerSettle> list = data.detail; // foreach (GameOperPlayerSettle s in list) // { // Debug.LogFormat("===OnGameOperPlayerHuSyn:{0} fanNum:{1} handcard:[{2}]", strs[s.position], s.fanNum, ToStr(s.handcard)); // if (s.position == data.position) // { // player.handCardLayout.Refresh(s.handcard); // } // } // if (zimo) // { // Game.SoundManager.PlayEffect(27); // Game.SoundManager.PlayZimo(data.position); // player.DragCard(data.card, true); // } // else // { // if (-1 != data.paoPosition) // { // Game.SoundManager.PlayEffect(28); // MJPlayer paoPlayer = Game.MJMgr.GetPlayerByPosition(data.paoPosition); // GameObject eff = Game.PoolManager.EffectPool.Spawn("shandian_EF"); // eff.transform.position = Game.MJMgr.LastDropCard.transform.position; // Game.PoolManager.EffectPool.Despawn(eff, 2); // } // Game.SoundManager.PlayHu(data.position); // player.handCardLayout.DragCard(data.card, Game.MJMgr.LastDropCard.gameObject); // } // Game.MaterialManager.TurnOnHandCard(); // player.handCardLayout.PlayHu(); // PlayHuEffect(data.position); // bool isMy = player.index == 0; // if (isMy) // { // Game.SoundManager.PlayWin(); // } // else // { // if (data.paoPosition != -1) // { // MJPlayer paoPplayer = Game.MJMgr.GetPlayerByPosition(data.paoPosition); // isMy = paoPplayer.index == 0; // if (isMy) // { // Game.SoundManager.PlayLose(); // } // } // } // } // else // { // Game.SoundManager.PlayFall(); // } // if (!data.skipHuSettle) // { // Game.Delay(3, () => // { // Game.SoundManager.PlaySettleSound(); // Game.DialogMgr.PushDialog(UIDialog.SettleRoundDialog); // IsBusy = false; // }); // } //} void OnGameOperPlayerHuSyn(GameOperPlayerHuSyn data) { string huInfo = GetHuStr(data.resultType); string winInfo = GetHuStr(data.winType); Debug.LogFormat("===HuSyn:{0}[炮:{1}] card:{2} bao:[{3}] Hu:{4}/Win:{5}", (data.position < 0) ? "流局" : strs[data.position], (data.paoPosition < 0) ? "无" : strs[data.paoPosition], GetCardStr(data.card), GetCardStr(data.bao), huInfo, winInfo); RoomMgr.huSyn = data; if (RoomMgr.huSyn.resultType == MJUtils.HU_LiuJu) { Game.SoundManager.PlayFall(); if (!data.skipHuSettle) { Game.Delay(3, () => { Game.SoundManager.PlaySettleSound(); Game.DialogMgr.PushDialog(UIDialog.SettleRoundDialog); }); } return; } MJPlayer player = Game.MJMgr.GetPlayerByPosition(data.position); MjData pData = Game.MJMgr.MjData[data.position]; List <GameOperPlayerSettle> list = data.detail; foreach (GameOperPlayerSettle s in list) { Debug.LogFormat("===OnGameOperPlayerHuSyn:{0} fanNum:{1} handcard:[{2}]", strs[s.position], s.fanNum, ToStr(s.handcard)); if (s.position == data.position) { player.handCardLayout.Refresh(s.handcard); } //////////////////////// if (!RoomMgr.IsSingeRoom()) { if (!RoomMgr.IsVipRoom()) { if (Game.MJMgr.MjData[s.position].player.coin + s.fanNum * Game.Instance.baseScore < 0) { Game.MJMgr.MjData[s.position].player.coin = 0; } else { Game.MJMgr.MjData[s.position].player.coin += s.fanNum * Game.Instance.baseScore; } } else { Game.MJMgr.MjData[s.position].player.score += s.fanNum; } EventDispatcher.DispatchEvent(MessageCommand.MJ_UpdatePlayPage); } //////////////////////// } bool zimo = (data.paoPosition == -1 || data.paoPosition == data.position); if (zimo) { PlayZimoHu(player, data); } else { bool isPao = false; if (-1 != data.paoPosition) { Game.SoundManager.PlayEffect(28); MJPlayer paoPlayer = Game.MJMgr.GetPlayerByPosition(data.paoPosition); GameObject eff = Game.PoolManager.EffectPool.Spawn("shandian_EF"); eff.transform.position = Game.MJMgr.LastDropCard.transform.position; Game.PoolManager.EffectPool.Despawn(eff, 5); isPao = paoPlayer.index == 0; } Game.Delay(1, () => { bool isWin = player.index == 0; if (isWin) { Game.SoundManager.PlayWin(); } else if (isPao) { Game.SoundManager.PlayLose(); } PlayHu(player, data); }); } }
void LicensingOnReconnect(List <GameOperHandCardSyn> handCards) { foreach (GameOperHandCardSyn hc in handCards) { Debug.LogFormat("===CardSyn: {0} HandCard[{1}],DropCards[{2}],TableCards[{3}],reconnect:{4}", strs[hc.position], ToStr(hc.handCards), ToStr(hc.cardsBefore), ToStr(hc.downCards, true), true); MJPlayer player = Game.MJMgr.GetPlayerByPosition(hc.position); player.dropCardLayout.Clear(); player.tableCardLayout.Clear(); player.handCardLayout.Clear(); player.handCardLayout.PlayDefault(); for (int i = 0; i < hc.handCards.Count; i++) { int sCard = hc.handCards[i]; player.handCardLayout.AddCard(sCard); MJCardGroup.TryDragCard(); } for (int i = 0; i < hc.cardsBefore.Count; i++) { int sCard = hc.cardsBefore[i]; player.dropCardLayout.AddCard(sCard); MJCardGroup.TryDragCard(); } for (int i = 0; i < hc.downCards.Count; i++) { /* if (hc.handCards[0] == -1) * { * int sCard = hc.downCards[i]; * int card1 = (sCard & 0xff); * int card2 = ((sCard >> 8) & 0xff); * int card3 = ((sCard >> 16) & 0xff); * int card4 = ((sCard >> 24) & 0xff); * * * if (card1 == card2 && card1 == card3) * { * if (card4 != 0) * { * player.tableCardLayout.AddCard(-1); * player.tableCardLayout.AddCard(-1); * player.tableCardLayout.AddCard(-1); * player.tableCardLayout.AddCard(-1); * }else * { * player.tableCardLayout.AddCard(card1); * player.tableCardLayout.AddCard(card2); * player.tableCardLayout.AddCard(card3); * * } * }else * { * player.tableCardLayout.AddCard(card1); * player.tableCardLayout.AddCard(card2); * player.tableCardLayout.AddCard(card3); * * } * * MJCardGroup.TryDragCard(); * MJCardGroup.TryDragCard(); * MJCardGroup.TryDragCard(); * if (card1 == card2 && card1 == card3) * { * if (card4 != 0) * MJCardGroup.TryDragCard(); * } * } * else */ { int sCard = hc.downCards[i]; int card1 = (sCard & 0xff); int card2 = ((sCard >> 8) & 0xff); int card3 = ((sCard >> 16) & 0xff); int card4 = ((sCard >> 24) & 0xff); player.tableCardLayout.AddCard(card1); player.tableCardLayout.AddCard(card2); player.tableCardLayout.AddCard(card3); if (card1 == card2 && card1 == card3) { if (card4 != 0) { //player.tableCardLayout.AddCard(card4); player.tableCardLayout.ChangeCard(card4); } } MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); MJCardGroup.TryDragCard(); if (card1 == card2 && card1 == card3) { if (card4 != 0) { MJCardGroup.TryDragCard(); } } } } } }