Example #1
0
    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;
        }
    }
Example #2
0
 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);
     }
 }
Example #3
0
 protected override void SendParameter(NetWriter writer, ActionParam actionParam)
 {
     if (actionParam.HasValue)
     {
         MahJongGameAction requestPack = actionParam.GetValue <MahJongGameAction>();
         writer.writeString("GameAction", JsonUtil.SerializeObject(requestPack));
     }
 }
Example #4
0
 protected override void DecodePackage(NetReader reader)
 {
     responsePack = JsonUtil.DeserializeObject <MahJongGameAction>(reader.readString());
     if (responsePack != null)
     {
         UIModelMgr.Instance.GetModel <UIGameModel>().HandleGameAction(responsePack);
     }
 }
Example #5
0
 private void OperateStartTouchCard(MahJongGameAction action)
 {
     if (mUserCardModel != null)
     {
         mUserCardModel.setHandCards(action.Cards);
         RefreshHandCards();
     }
 }
Example #6
0
    private void OperateTouchCard(MahJongGameAction action)
    {
        mUserCardModel.setTouchCard(action.Cards[0]);
        mUserCardModel.addHandCard(action.Cards[0]);
        mCurrCardItem.Refresh(mUserCardModel.getTouchCard(), mDirection);

        //播放摸牌音效
        MahjongAudioMgr.Instance.PlayMoPai();
    }
Example #7
0
 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);
     }
 }
Example #8
0
    //拖拽出牌
    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);
    }
Example #9
0
    //吃 杠
    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);
    }
Example #10
0
    //胡牌
    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);
        }
    }
Example #11
0
    /// <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;
        }
    }
Example #12
0
 //起手翻牌 特殊牌
 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);
             });
         }
     }
 }
Example #13
0
    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);
    }
Example #14
0
    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();
    }
Example #15
0
    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);
        }
    }
Example #16
0
    //转换成客户端的数据结构
    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);
    }
Example #17
0
    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();
    }
Example #18
0
    public void HandleGameAction(MahJongGameAction action)
    {
        ValueChangeArgs ve = new ValueChangeArgs(UIGameModelConst.KEY_GameAction, action, action);

        DispatchValueUpdateEvent(ve);
    }
Example #19
0
 public OperationAction(int order, MahJongGameAction action)
 {
     this.RoomOrder = order;
     this.Action    = action;
 }