Esempio n. 1
0
    /// <summary>
    /// 战斗重连
    /// </summary>
    /// <param name="recontent"></param>
    private static void FightReconect(DdzReconnectResp recontent)
    {
        //3个玩家牌 非主角只发送牌数量
        List <LandkirdsHandCardModel> hands = LandlordsModel.Instance.RoomPlayerHands;

        for (int i = 0; i < hands.Count; i++)
        {
            hands[i].Clear();
            DdzPlayerInfo playerInfo = recontent.ddzPlayerInfo[i];
            if (playerInfo.playerBaseInfo.userId == UserInfoModel.userInfo.userId)
            {
                for (int j = 0; j < playerInfo.poker.Count; j++)
                {
                    Card card = new Card(playerInfo.poker[j], UserInfoModel.userInfo.userId.ToString());
                    hands[i].AddCard(card);
                }
            }
            else
            {
                for (int j = 0; j < playerInfo.zs; j++)//这里数量根据服务器来
                {
                    hands[i].AddCard(null);
                }
            }
        }

        LandlordsModel.Instance.RoomPlayerSort();


        if (PageManager.Instance.GetPage <LandlordsPage>() == null)
        {
            PageManager.Instance.OpenPage <LandlordsPage>();
        }

        LandlordsPage.Instance.InitRoom();
        LandlordsModel.Instance.RoomPlayerSort();

        LandlordsPage.Instance.GameStart();//这里会清除3张底牌
        LandlordsPage.Instance.Multiples = recontent.qbs;
        LandlordsPage.Instance.Dizhu     = LandlordsModel.Instance.RoomModel.CurRoomInfo.LeastStore;
        LandlordsPage.Instance.playView.InitPayerLibrary();

        //发底牌
        DzCard.Instance.Clear();
        for (int i = 0; i < recontent.dzPoker.Count; i++)
        {
            DzCard.Instance.AddCard(new Card(recontent.dzPoker[i], "-9999"));
        }
        //玩家变地主
        if (recontent.dzPoker.Count == 3)
        {
            LandlordsPage.Instance.PlayerToLandlord(recontent.ddzPlayerInfo[0].playerBaseInfo.userId.ToString(), false);
        }
        ////1发牌2叫分(抢地主)3出牌5结算
        //if (recontent.stage != 1 && recontent.stage != 5)
        //    OrderController.Instance.CurInterationType = (InterationType)recontent.stage;

        OrderController.Instance.Turn(recontent.currUserId.ToString(), (int)OrderController.Instance.CurInterationType);

        //谁是托管
        for (int i = 0; i < recontent.ddzPlayerInfo.Count; i++)
        {
            LandlordsPage.Instance.PlayerTuoGuan(recontent.ddzPlayerInfo[i].playerBaseInfo.userId.ToString(), recontent.ddzPlayerInfo[i].tg == 1);
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 断线重连
    /// </summary>
    public static IEnumerator G2C_Reconnect(DdzReconnectResp recontent)
    {
        //临时 true->正在打牌  false->正在准备阶段
        bool isFighting = recontent.stage != 0 && recontent.stage != 4;

        LandlordsModel.Instance.IsInFight = isFighting;
        OrderController.Instance.Clear();
        //房间信息
        if (recontent.yuePaiInfo != null)//房卡房
        {
            LandlordsModel.Instance.RoomModel.CurRoomInfo = new LandlordsRoomModel.LandlordsRoomInfo()
            {
                RoomID       = recontent.yuePaiInfo.rno.ToString(),
                RoomType     = RoomType.RoomCard,
                Beishu       = recontent.yuePaiInfo.fs,
                LeastStore   = recontent.yuePaiInfo.ante,
                CostCard     = recontent.yuePaiInfo.ks,
                CurPlayCount = recontent.yuePaiInfo.currJs,
                MaxPlayCount = recontent.yuePaiInfo.js
            };
            LandlordsModel.Instance.RoomModel.CurRoomInfo.IsMatch = false;
        }
        else if (recontent.matchInfo != null)//比赛房
        {
            LandlordsModel.Instance.RoomModel.CurRoomInfo = new LandlordsRoomModel.LandlordsRoomInfo()
            {
                RoomID = recontent.matchInfo.matcherid.ToString(),//比赛ID
                IsQdz  = recontent.matchInfo.isQdz
            };
            switch (recontent.matchInfo.type)
            {
            case 1:    // 比赛银币
                LandlordsModel.Instance.RoomModel.CurRoomInfo.RoomType = RoomType.SilverCoin;
                break;

            case 2:    //比赛金币
                LandlordsModel.Instance.RoomModel.CurRoomInfo.RoomType = RoomType.GoldBar;
                break;

            case 3:    //比赛积分

                break;

            default:
                break;
            }
            LandlordsModel.Instance.RoomModel.CurRoomInfo.IsMatch = true;
        }
        else//游戏币房
        {
            LandlordsModel.Instance.RoomModel.CurRoomInfo = new LandlordsRoomModel.LandlordsRoomInfo()
            {
                RoomID     = recontent.roomId.ToString(),
                RoomType   = LandlordsRoomModel.GetYxbRoomTypeByID(recontent.roomId),
                LeastStore = int.Parse(LandlordsRoomModel.GetYxbRoomConfigById(recontent.roomId)["ante"].ToString())
            };
            LandlordsModel.Instance.RoomModel.CurRoomInfo.IsMatch = false;
        }


        //3个玩家信息
        if (LandlordsModel.Instance.RoomPlayerHands != null)
        {
            LandlordsModel.Instance.RoomPlayerHands.Clear();
        }
        bool isRoomCard = LandlordsModel.Instance.RoomModel.CurRoomInfo.RoomType == RoomType.RoomCard;

        for (int i = 0; i < recontent.ddzPlayerInfo.Count; i++)
        {
            DdzPlayerInfo playerInfo = recontent.ddzPlayerInfo[i];
            string        uid        = playerInfo.playerBaseInfo.userId.ToString();

            LandkirdsHandCardModel hand = LandlordsModel.Instance.CreateHandCardMode(uid, playerInfo.playerBaseInfo.gender == 0 ? Six.boy : Six.girl);
            hand.playerInfo.userNickname = playerInfo.playerBaseInfo.nickname;
            hand.playerInfo.icon         = playerInfo.playerBaseInfo.photo;
            if (LandlordsModel.Instance.RoomModel.CurRoomInfo.RoomType == RoomType.SilverCoin)
            {
                hand.playerInfo.money = playerInfo.playerBaseInfo.silver;
            }
            else if (LandlordsModel.Instance.RoomModel.CurRoomInfo.RoomType == RoomType.GoldBar)
            {
                hand.playerInfo.money = playerInfo.playerBaseInfo.gold;
            }
            hand.playerInfo.lv    = playerInfo.playerBaseInfo.level;
            hand.playerInfo.vip   = playerInfo.playerBaseInfo.vip;
            hand.playerInfo.win   = playerInfo.playerBaseInfo.won;
            hand.playerInfo.lose  = playerInfo.playerBaseInfo.lost;
            hand.playerInfo.ratio = (float)playerInfo.playerBaseInfo.rate;
            hand.playerInfo.pos   = playerInfo.playerBaseInfo.location;
            hand.playerInfo.exp   = playerInfo.playerBaseInfo.exp;
            //hand.playerInfo.isFriend = playerInfo.playerBaseInfo;
            hand.MatchScore = playerInfo.playerBaseInfo.currJiFen;
            if (i == 0 && isRoomCard)
            {
                hand.IsRoomer = true;
            }
            if (!hand.IsRoomer)
            {
                hand.IsZhunbei = playerInfo.playerBaseInfo.isPrepared;
            }

            hand.isTuoguan = playerInfo.tg == 1;
        }

        if (isFighting)
        {
            FightReconect(recontent);
        }
        else
        {
            NormalReconect();
        }
        yield return(new WaitForSecondsRealtime(2));

        UserInfoModel.userInfo.inDzz = false;
    }