Exemple #1
0
    void UpdateGameClean(LocalNotification e)
    {
        ArgsGameCleanInfo msg = e.param as ArgsGameCleanInfo;

        if (msg != null)
        {
            Debug.Log("GameClean:" + msg.playerId + "Rank:" + msg.rank);

            ShowCleanPlayer(msg);
        }
    }
Exemple #2
0
    void RefreshAllData(LocalNotification e)
    {
        SelfCardsManager.Instance.ClearAllSelectCards();
        ArgsRefreshData args = e.param as ArgsRefreshData;

        if (args != null)
        {
            var roomInfo = RoomInfo.Instance;

            InitLicense();
            InitSelfData();
            //检查亮牌
            //   ReConnectShowLightCard();
            //刷新其他玩家剩余牌数
            IEnumerator <MsgPlayerInfo> iPlayersCardLastNum = args.playerInfoList.GetEnumerator();
            while (iPlayersCardLastNum.MoveNext())
            {
                var posType       = roomInfo.GetPlayerPosById(iPlayersCardLastNum.Current.player_id);
                var lastCardCount = (int)iPlayersCardLastNum.Current.remaindCarsNum;
                //  playerRestCardNum[posType] = lastCardCount;
                // SetRestCardNum(lastCardCount, posType);
            }
            //刷新最后三轮牌的数据
            IEnumerator <MsgLast3Card> iPlayersLast3Card = args.last3CardList.GetEnumerator();
            while (iPlayersLast3Card.MoveNext())
            {
                var posType = roomInfo.GetPlayerPosById(iPlayersLast3Card.Current.player_id);
                if (posType != EPlayerPositionType.ENull)
                {
                    //   if (!IsGameOverPlayer(args.gameOverInfoList, iPlayersLast3Card.Current.player_id)) ;
                    {
                        // RefreshPlayerCards(posType, iPlayersLast3Card.Current.card, false);
                    }
                }
            }
            //刷新所有玩家头游状态
            if (args.gameOverInfoList != null && args.gameOverInfoList.Count > 0)
            {
                for (int i = 0; i < args.gameOverInfoList.Count; i++)
                {
                    var gameOverItem = args.gameOverInfoList[i];
                    PlayingGameInfo.Instance.AddLastCleanPlayerDic(roomInfo.GetPlayerPosById(gameOverItem.player_id));

                    ArgsGameCleanInfo cleanArgs = new ArgsGameCleanInfo();
                    cleanArgs.playerId = gameOverItem.player_id;
                    cleanArgs.rank     = gameOverItem.rank;
                    NotificationCenter.Instance().PostDispatchEvent((uint)ENotificationMsgType.EGameClean, cleanArgs);
                }
            }

            CheckShowTeamerCards(args.djCards); //展示对家的牌
        }
    }
Exemple #3
0
    void UpdateGameClean(LocalNotification e)
    {
        ArgsGameCleanInfo msg = e.param as ArgsGameCleanInfo;

        if (msg != null)
        {
            if (msg.playerId == PlayerInfo.Instance.mPlayerPid)
            {
                Debug.Log("GameClean:" + msg.playerId + "Rank:" + msg.rank);
                CleanSelfGameStatus(msg.rank);
            }
        }
    }
Exemple #4
0
 void ShowCleanPlayer(ArgsGameCleanInfo msg)
 {
     if (msg != null)
     {
         //这边加一个暂停
         ulong playerId          = msg.playerId;
         MsgGuandanGameRank rank = msg.rank;
         if (playerId != PlayerInfo.Instance.mPlayerPid)
         {
             CleanOtherGameStatus(RoomInfo.Instance.GetPlayerPositionType((uint)playerId), rank);
         }
     }
 }
Exemple #5
0
    void RevcCanPutOutCard(MsgGlobal msg)
    {
        SelfCardsManager.Instance.initTonghuashunTip();
        MsgGuandanRoom data = msg.guandan_room;

        NotificaPlayerPut(data.action.action_id, data.action.last_operation_pid, data.action.action_type, data.ybq); //玩家出牌箭头指示 (更新玩家出牌状态)
        //游戏中胜利是否判断
        var gameOverInfo = data.game_over_info;

        bool isGameOver = gameOverInfo.Count > 0;

        if (isGameOver)
        {
            PlayingGameInfo.Instance.mGameOverInfoList = gameOverInfo; //用于记录 ,临时退出
        }
        PlayingGameInfo.Instance.mPlayingStatus = EPlayingStatus.EBureau;
        var selfId = PlayerInfo.Instance.mPlayerPid;

        ArgsCanputOutCard args = new ArgsCanputOutCard();

        args.playerId         = (uint)data.action.action_id;    //当前出牌玩家id
        args.cards            = data.action.last_card;          //出牌信息
        args.putOutType       = data.action.last_ct;            //玩家出牌类型
        args.lastPlayerId     = (uint)data.action.last_action_id;
        args.actionType       = data.action.action_type;        //玩家是否是借风之类
        args.lastOperationPId = data.action.last_operation_pid; // 上一次打出牌的玩家id(非不出)
        args.sendCardInfo     = data.send_card_info;            // 每个玩家都要对比手牌数量
        args.DjCards          = data.djCards;
        SelfCardsManager.Instance.mIsRecevCardTip = false;
        SelfCardsManager.Instance.mMsgAction      = data.action;
        NotificationCenter.Instance().PostDispatchEvent((uint)ENotificationMsgType.ECanPutOutCard, args);


        //结算(出头游)
        var gameCleanInfo = data.player_clean_info;

        if (gameCleanInfo != null)
        {
            Debug.Log("=========玩家" + gameCleanInfo.player_id + "胜利" + gameCleanInfo.rank + "游");
            var posType = RoomInfo.Instance.GetPlayerPositionType(gameCleanInfo.player_id);
            PlayingGameInfo.Instance.AddLastCleanPlayerDic(posType);

            ArgsGameCleanInfo e = new ArgsGameCleanInfo();
            e.playerId = gameCleanInfo.player_id;
            e.rank     = gameCleanInfo.rank;
            NotificationCenter.Instance().PostDispatchEvent((uint)ENotificationMsgType.EGameClean, e);
        }



        if (isGameOver)
        {
            ArgsMsgGameOverMsg argsGameOver = new ArgsMsgGameOverMsg();
            for (int i = 0; i < gameOverInfo.Count; i++)
            {
                var itemInfo = gameOverInfo[i];
                argsGameOver.mGameOverList.Add(itemInfo);
                if (itemInfo.player_id == selfId) //是自己的情况,计算加分
                {
                    PlayingGameInfo.Instance.mScore += (int)itemInfo.goal;
                }
                else
                {
                    RoomInfo.Instance.GetPlayerInfoById(itemInfo.player_id).goal += (int)itemInfo.goal;
                }
            }

            //展示最后出的手牌
            if (data.game_over_card != null)
            {
                var lastCard = data.game_over_card.send_card_info;

                if (lastCard != null && lastCard.Count > 0)
                {
                    for (int i = 0; i < lastCard.Count; i++)
                    {
                        argsGameOver.mShowLastCard.Add(lastCard[i]);
                    }
                }
            }
            argsGameOver.mIsTotalOver = PlayingGameInfo.Instance.mGameInfo.game_index == RoomInfo.Instance.mRoom.game_num;
            NotificationCenter.Instance().PostDispatchEvent((uint)ENotificationMsgType.EGameBureauOver, argsGameOver);
        }
    }