public void ReconnectGameAction(MahJongGameAction action) { SetUserCardModel(); switch (action.Action) { case MahJongActionType.TouchCard: case MahJongActionType.PengCard: case MahJongActionType.ChiCard: SetCardsState(true); break; case MahJongActionType.StartTouchCard: case MahJongActionType.PlayCard: case MahJongActionType.GangCard: SetCardsState(false); break; case MahJongActionType.HuCard: break; case MahJongActionType.Guo: break; default: break; } }
private void SetTouchState(TouchState touchSate) { mTouchState = touchSate; if (mTouchState == TouchState.None) { mCacheTransform.localPosition = new Vector3(mCacheTransform.localPosition.x, 0, mCacheTransform.localPosition.z); } else if (mTouchState == TouchState.Selected) { mCacheTransform.localPosition = new Vector3(mCacheTransform.localPosition.x, 20, mCacheTransform.localPosition.z); } else if (mTouchState == TouchState.Play) { //发送出牌请求 MahJongGameAction requestPack = new MahJongGameAction() { Action = MahJongActionType.PlayCard }; requestPack.Cards = new List <Card>(); requestPack.Cards.Add(getCard); ActionParam actionParam = new ActionParam(requestPack); Net.Instance.Send((int)ActionType.GameAction, null, actionParam); //mCacheTransform.localPosition = new Vector3(mCacheTransform.localPosition.x, 0, mCacheTransform.localPosition.z); } }
protected override void SendParameter(NetWriter writer, ActionParam actionParam) { if (actionParam.HasValue) { MahJongGameAction requestPack = actionParam.GetValue <MahJongGameAction>(); writer.writeString("GameAction", JsonUtil.SerializeObject(requestPack)); } }
protected override void DecodePackage(NetReader reader) { responsePack = JsonUtil.DeserializeObject <MahJongGameAction>(reader.readString()); if (responsePack != null) { UIModelMgr.Instance.GetModel <UIGameModel>().HandleGameAction(responsePack); } }
private void OperateStartTouchCard(MahJongGameAction action) { if (mUserCardModel != null) { mUserCardModel.setHandCards(action.Cards); RefreshHandCards(); } }
private void OperateTouchCard(MahJongGameAction action) { mUserCardModel.setTouchCard(action.Cards[0]); mUserCardModel.addHandCard(action.Cards[0]); mCurrCardItem.Refresh(mUserCardModel.getTouchCard(), mDirection); //播放摸牌音效 MahjongAudioMgr.Instance.PlayMoPai(); }
private void ExecuteReconnectAction(MahJongGameAction action) { if (action != null) { int pos = GameLogicMgr.Instance.getPlayerIndex(action.Order); //Debug.Log(action.Action + " " + action.Order + " " + mUIMainModel.PlayerInfo.RoomOrder + " " + pos); mPlayerCardGroupList[pos].ReconnectGameAction(action); mGameTableItem.OperateAction(pos, action.Timer); } }
//拖拽出牌 private void OperationDrag(int index) { MahJongGameAction requestPack = new MahJongGameAction() { Action = MahJongActionType.PlayCard }; requestPack.Parame = index; ActionParam actionParam = new ActionParam(requestPack); Net.Instance.Send((int)ActionType.GameAction, onOperationCallBack, actionParam); }
//吃 杠 private void OperationClick(int index, OperationType mOperationType) { MahJongGameAction requestPack = new MahJongGameAction() { Action = (MahJongActionType)mOperationType }; requestPack.Parame = index; ActionParam actionParam = new ActionParam(requestPack); Net.Instance.Send((int)ActionType.GameAction, onOperationCallBack, actionParam); }
//胡牌 private void OperateHuCard(MahJongGameAction action) { MahjongAudioMgr.Instance.PlayHuPaiSound(mUserInfo.Sex, action.Parame, PlayerPrefs.GetInt(PrefsConstant.AudioType, 0)); if (action.Parame == 1) //自摸 //播放胡牌特效 { mOperationEffectItem.SetEffectType(OperationEffectItem.OperationEffectType.ZiMo); } else { //播放胡牌特效 mOperationEffectItem.SetEffectType((OperationEffectItem.OperationEffectType)action.Action); } }
/// <summary> /// 执行Action /// </summary> /// <param name="action"></param> public void OperateGameAction(MahJongGameAction action) { SetUserCardModel(); //Debug.Log(action.Action + " " + action.Parame + " " + action.UID); switch (action.Action) { case MahJongActionType.StartTouchCard: //开局摸牌 OperateStartTouchCard(action); SetCardsState(false); break; case MahJongActionType.TouchCard: //摸牌 OperateTouchCard(action); SetCardsState(true); break; case MahJongActionType.PlayCard: //出牌 OperatePlayCard(action); SetCardsState(false); break; case MahJongActionType.ChiCard: OperateChiCard(action); SetCardsState(true); break; case MahJongActionType.PengCard: OperatePengCard(action); SetCardsState(true); break; case MahJongActionType.GangCard: OperateGangCard(action); SetCardsState(false); break; case MahJongActionType.HuCard: OperateHuCard(action); SetCardsState(false); break; case MahJongActionType.Guo: break; default: break; } }
//起手翻牌 特殊牌 private void StartOpen(MahJongGameAction action) { if (action != null && !action.OtherCards.IsNullOrEmpty()) { for (int i = 0; i < action.OtherCards.Count; i++) { mOpenCardItems[i].Refresh(action.OtherCards[i], DirectionType.bottom); mOpenCardItems[i].transform.DOMove(mJingCardItems[i].transform.position, 1) .OnComplete(() => { mJingCardItems[i].Refresh(action.OtherCards[i], DirectionType.bottom); mJingCardItems[i].SetVisible(true); mOpenCardItems[i].transform.position = Vector3.zero; mOpenCardItems[i].SetVisible(false); }); } } }
private void OperatePlayCard(MahJongGameAction action) { if (action.Cards [0].IsUniversal) { //播放打宝声音 MahjongAudioMgr.Instance.PlayDaBao(mUserInfo.Sex); //播放打宝特效 mOperationEffectItem.SetEffectType(OperationEffectItem.OperationEffectType.DaBao); } else { MahjongAudioMgr.Instance.PlayChuPai(); } //设置当前最新的行为 mUIGameModel.LastGameActionResp = action.getCopy(); //播放出牌的声音 if (!action.Cards[0].IsUniversal) { MahjongAudioMgr.Instance.PlayChuPaiSound(mUserInfo.Sex, action.Cards[0], PlayerPrefs.GetInt(PrefsConstant.AudioType, 0)); } //添加到桌牌 mUserCardModel.addDeskCard(action.Cards[0]); //设置最新的桌牌 mUIGameModel.LastDeskCard = action.Cards[0]; //显示桌牌 mDeskCardList[mUserCardModel.getDeskIndex()].RefreshDeskCard(mUserCardModel.getLastDeskCard(), mDirection); if (mUIGameModel.LastDeskCardItem != null) { mUIGameModel.LastDeskCardItem.SetCurrentDisableCard(false); } mUIGameModel.LastDeskCardItem = mDeskCardList[mUserCardModel.getDeskIndex()]; // if (mDirection == DirectionType.bottom) { mUserCardModel.removeHandCard(mUserCardModel.getLastDeskCard()); } // else // { // mUserCardModel.removeLastHandCard(); // } //排序牌并刷新显示 RefreshHandCards(); mCurrCardItem.SetVisible(false); }
private void OperatePengCard(MahJongGameAction action) { mOperationEffectItem.SetEffectType(OperationEffectItem.OperationEffectType.Peng); MahjongAudioMgr.Instance.PlayPengPaiSound(mUserInfo.Sex, PlayerPrefs.GetInt(PrefsConstant.AudioType, 0)); mUserCardModel.addHandCardGroup(new CardGroup((int)CardGroupType.AAA, true, action.Cards, 0)); mCardGroupList[mUserCardModel.getHandCardGroupsIndex].Refresh(mUserCardModel.getHandCardGroup().Cards, mDirection); // if (mDirection == DirectionType.bottom) // { mUserCardModel.removeHandCard(action.Cards[0]); mUserCardModel.removeHandCard(action.Cards[0]); // } // else // { // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // } RemoveOtherPlayerCard(); RefreshHandCards(); }
private void SetMahJongGameAction(MahJongGameAction action) { switch (action.Action) { case MahJongActionType.StartOpen: //起手翻牌 StartOpen(action); break; case MahJongActionType.EndOpen: break; default: break; } if (action.UserID != 0) { mLabelCardNum.text = string.Format("剩余{0}张", action.CardsNo); //获取执行action的玩家pos int pos = 0; if (GameMgr.Instance.isFromRecord) { for (int i = 0; i < mUIGameModel.liamUserList.Count; i++) { UserInfo user = mUIGameModel.liamUserList[i]; if (user.UserId == action.UserID) { pos = i; break; } } } else { pos = GameLogicMgr.Instance.getPlayerIndex(action.Order); } mPlayerCardGroupList[pos].OperateGameAction(action); mGameTableItem.OperateAction(pos, action.Timer); } }
//转换成客户端的数据结构 List <MahJongGameAction> GetActionList() { List <MahJongGameAction> mJGAList = new List <MahJongGameAction> (); for (int i = 0; i < responsePack.GameActionList.Count; i++) { GameActionRecord record = responsePack.GameActionList[i]; MahJongGameAction action = new MahJongGameAction(); action.Action = (MahJongActionType)record.Action; action.Parame = record.Parame; action.Cards = LitJson.JsonMapper.ToObject <List <Card> > (record.Cards); action.UserID = record.UserID; action.Timer = record.Timer; action.CardsNo = record.CardsNo; action.OtherCards = LitJson.JsonMapper.ToObject <List <Card> > (record.OtherCards); action.RoundID = record.RoundID; action.Order = record.Order; mJGAList.Add(action); } return(mJGAList); }
private void OperateGangCard(MahJongGameAction action) { MahjongAudioMgr.Instance.PlayGangPaiSound(mUserInfo.Sex, PlayerPrefs.GetInt(PrefsConstant.AudioType, 0)); mOperationEffectItem.SetEffectType(OperationEffectItem.OperationEffectType.Gang); if (action.Parame == 3 || action.Parame == 4) { HandCardGroupItem tempItem = Array.Find <HandCardGroupItem>(mCardGroupList, p => p.getCards() != null && p.getCards()[0].Equals(action.Cards[3]) ); if (tempItem != null) { mUserCardModel.refreshHandCardGroup(new CardGroup((int)CardGroupType.AAAA, true, action.Cards, 0)); tempItem.Refresh(action.Cards, mDirection); } else { mUserCardModel.addHandCardGroup(new CardGroup((int)CardGroupType.AAAA, true, action.Cards, 0)); mCardGroupList[mUserCardModel.getHandCardGroupsIndex].Refresh(mUserCardModel.getHandCardGroup().Cards, mDirection); } } else { mUserCardModel.addHandCardGroup(new CardGroup((int)CardGroupType.AAAA, true, action.Cards, 0)); mCardGroupList[mUserCardModel.getHandCardGroupsIndex].Refresh(mUserCardModel.getHandCardGroup().Cards, mDirection); } // if (mDirection == DirectionType.bottom) { //mUserCardModel.removeHandCards(action.Cards[3]); if (action.Parame == 0) { mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); RemoveOtherPlayerCard(); } else if (action.Parame == 1) { mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); } else if (action.Parame == 2) { mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); mUserCardModel.removeHandCard(action.Cards[3]); } else if (action.Parame == 3) { mUserCardModel.removeHandCard(action.Cards[3]); } else if (action.Parame == 4) { mUserCardModel.removeHandCard(action.Cards[3]); } } // else // { // //杠牌时 param 0:接杠,1:暗杠,2:自摸暗杠,3:碰杠 // if (action.Parame == 0) // { // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // RemoveOtherPlayerCard(); // } // else if (action.Parame == 1) // { // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // } // else if (action.Parame == 2) // { // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // mUserCardModel.removeLastHandCard(); // } // else if (action.Parame == 3) // { // mUserCardModel.removeLastHandCard(); // } // else if (action.Parame == 4) // { // mUserCardModel.removeLastHandCard(); // } // } mCurrCardItem.SetVisible(false); RefreshHandCards(); }
public void HandleGameAction(MahJongGameAction action) { ValueChangeArgs ve = new ValueChangeArgs(UIGameModelConst.KEY_GameAction, action, action); DispatchValueUpdateEvent(ve); }
public OperationAction(int order, MahJongGameAction action) { this.RoomOrder = order; this.Action = action; }