コード例 #1
0
ファイル: SavedWorld.cs プロジェクト: caesuric/familiar-quest
    public SocialNode ConvertTo(List <MonsterData> monsterData)
    {
        var output = new SocialNode(new List <string> {
            "goblin"
        }, false, null)
        {
            uuid             = uuid,
            actualPopulation = actualPopulation,
            id = id
        };

        for (int i = 0; i < monsterTypes.Count; i++)
        {
            output.typeMix.Add(monsterTypes[i], monsterTypePercentages[i]);
        }
        foreach (var monster in monsterData)
        {
            if (monster.node.uuid == lordId)
            {
                output.lord = monster.node;
                monster.node.vassals.Add(output);
                break;
            }
        }
        return(output);
    }
コード例 #2
0
ファイル: SocialNode.cs プロジェクト: caesuric/familiar-quest
    private void GenerateNormal(List <string> builders, bool differentType, SocialNode lord)
    {
        this.lord = lord;
        this.lord.vassals.Add(this);
        List <string> types = new List <string>();
        int           numTypesRoll, typeRoll;

        if (!differentType)
        {
            numTypesRoll = Random.Range(1, builders.Count);
            for (int i = 0; i < numTypesRoll; i++)
            {
                typeRoll = Random.Range(0, builders.Count);
                types.Add(builders[typeRoll]);
            }
        }
        else
        {
            numTypesRoll = Random.Range(1, 3);
            for (int i = 0; i < numTypesRoll; i++)
            {
                typeRoll = Random.Range(0, SocialStructure.builderSpecies.Count);
                types.Add(SocialStructure.builderSpecies[typeRoll]);
            }
        }
        typeMix = DistributeTypes(types);
    }
コード例 #3
0
 public MonsterData(string generalType, string specificType, int level, int quality, SocialNode node)
 {
     this.generalType  = generalType;
     this.specificType = specificType;
     this.level        = level;
     this.quality      = quality;
     this.node         = node;
 }
コード例 #4
0
    /// <summary>
    /// 服务器推送认识的人
    /// </summary>
    public static void G2C_Know(List <FriendInfo> infos)
    {
        SocialNode node = NodeManager.GetNode <SocialNode>();

        if (node)
        {
            node.knownPanel.LoadItems(infos);
        }
    }
コード例 #5
0
 public void Init(FriendInfo info, int rank)
 {
     curInfo = info;
     if (rank <= 3)
     {
         if (rank == 0)
         {
             rankLb.gameObject.SetActive(false);
             rankIcon.gameObject.SetActive(false);
         }
         else
         {
             rankLb.gameObject.SetActive(false);
             rankIcon.gameObject.SetActive(true);
             rankIcon.sprite = BundleManager.Instance.GetSprite("common/normal_jiangbei_" + rank);
         }
     }
     else
     {
         rankLb.gameObject.SetActive(true);
         rankIcon.gameObject.SetActive(false);
         rankLb.text = rank.ToString();
     }
     if (gameObject.activeInHierarchy)
     {
         StartCoroutine(MiscUtils.DownloadImage(info.photo, spr =>
         {
             headIcon.sprite = spr;
         }));
     }
     nameLb.text    = info.nickname;
     sixIcon.sprite = BundleManager.Instance.GetSprite("friend/" + (info.gender == 0 ? "haoyou_pic_nan" : "haoyou_pic_nv"));
     yinbiLb.text   = info.sliver.ToString();
     if (info.isOnline == 0)
     {
         stateLb.text  = "[离线]";
         stateLb.color = Color.red;
     }
     else
     {
         stateLb.text  = "[在线]";
         stateLb.color = Color.green;
     }
     UGUIEventListener.Get(giveBtn).onClick = delegate
     {
         SocialNode.GiveCall(info);
     };
     UGUIEventListener.Get(chatBtn).onClick = delegate
     {
         SocialNode.ChatCall(info);
     };
     UGUIEventListener.Get(headBtn).onClick = delegate
     {
         SocialNode.HeadCall(info, true);
     };
 }
コード例 #6
0
ファイル: SocialNode.cs プロジェクト: nianyang111/testclient
    /// <summary>
    /// 聊天按钮回调
    /// </summary>
    public static void ChatCall(FriendInfo info)
    {
        SocialNode node = NodeManager.GetNode <SocialNode>();

        if (node)
        {
            node.msgTab.GetComponent <UGUIEventListener>().onClick(null);
            node.messagePanel.OnClickCall(info);
        }
    }
コード例 #7
0
ファイル: SocialNode.cs プロジェクト: nianyang111/testclient
    /// <summary>
    /// 赠送按钮回调
    /// </summary>
    public static void GiveCall(FriendInfo info)
    {
        SocialNode node = NodeManager.GetNode <SocialNode>();

        if (node)
        {
            node.giveView.SetVisibel(true);
            node.giveView.Init(info);
        }
    }
コード例 #8
0
ファイル: NearPanel.cs プロジェクト: nianyang111/testclient
    /// <summary>
    /// 服务器响应附近的人列表
    /// </summary>
    public static void G2C_Near(List <FriendInfo> nearInfos)
    {
        SocialNode node = NodeManager.GetNode <SocialNode>();

        if (node)
        {
            node.nearPanel.nearInfos = nearInfos;
            node.nearPanel.LoadItems(nearInfos);
        }
    }
コード例 #9
0
    private float GetPopulation(SocialNode node)
    {
        float answer = 1;

        for (int i = 0; i < node.GetDepth(); i++)
        {
            int roll = Random.Range(2, 5);
            answer *= roll;
        }
        return(answer);
    }
コード例 #10
0
    private int FetchPopulationCount(SocialStructure socialStructure, SocialNode node)
    {
        int count = 0;

        foreach (var mob in socialStructure.population)
        {
            if (mob.node == node)
            {
                count++;
            }
        }
        return(count);
    }
コード例 #11
0
ファイル: SocialNode.cs プロジェクト: caesuric/familiar-quest
 public SocialNode(List <string> builders, bool differentType, SocialNode lord)
 {
     if (lord == null)
     {
         GenerateBoss(builders, differentType);
     }
     else
     {
         GenerateNormal(builders, differentType, lord);
     }
     id = counter;
     counter++;
 }
コード例 #12
0
    public List <MonsterData> GenerateMonstersForNode(SocialNode node, int quantity)
    {
        var output = new List <MonsterData>();

        foreach (var typePair in node.typeMix)
        {
            for (int i = 0; i < typePair.Value * quantity; i++)
            {
                output.Add(GenerateMonster(typePair.Key, node));
            }
        }
        return(output);
    }
コード例 #13
0
    private List <MonsterData> GetMonstersForNode(SocialNode node, SocialStructure socialStructure)
    {
        var output = new List <MonsterData>();

        foreach (var monster in socialStructure.population)
        {
            if (monster.node == node)
            {
                output.Add(monster);
            }
        }
        return(output);
    }
コード例 #14
0
    /// <summary>
    /// 会话按钮回调
    /// </summary>
    void Chat()
    {
        FriendInfo info = new FriendInfo();

        info.exp      = curInfo.exp;
        info.gender   = curInfo.six == Six.boy ? 0 : 1;
        info.level    = curInfo.lv;
        info.nickname = curInfo.userNickname;
        info.photo    = curInfo.icon;
        info.sliver   = curInfo.money;
        info.userId   = int.Parse(curInfo.uid);
        SocialNode.ChatCall(info);
        SetVisibel(false);
    }
コード例 #15
0
    public SocialHierarchy(List <string> mainTypes, List <string> pets, List <string> servants)
    {
        int numLeadersRoll = Random.Range(1, 11);
        int differentTypeRoll, randomNodeRoll;

        if (numLeadersRoll > 3)
        {
            numLeadersRoll = 1;
        }
        for (int i = 0; i < numLeadersRoll; i++)
        {
            differentTypeRoll = Random.Range(0, 5);
            var leader = new SocialNode(mainTypes, (differentTypeRoll == 0), null);
            leaders.Add(leader);
            allNodes.Add(leader);
        }
        int numChildNodesRoll = Random.Range(2, 10);

        for (int i = 0; i < numChildNodesRoll; i++)
        {
            randomNodeRoll    = Random.Range(0, allNodes.Count);
            differentTypeRoll = Random.Range(0, 5);
            allNodes.Add(new SocialNode(mainTypes, (differentTypeRoll == 0), allNodes[randomNodeRoll]));
        }
        var nodeCount = allNodes.Count;

        if (servants.Count > 0)
        {
            foreach (var servant in servants)
            {
                randomNodeRoll = Random.Range(0, nodeCount);
                allNodes.Add(new SocialNode(new List <string> {
                    servant
                }, false, allNodes[randomNodeRoll]));
            }
        }
        nodeCount = allNodes.Count;
        if (pets.Count > 0)
        {
            foreach (var pet in pets)
            {
                randomNodeRoll = Random.Range(0, nodeCount);
                allNodes.Add(new SocialNode(new List <string> {
                    pet
                }, false, allNodes[randomNodeRoll]));
            }
        }
    }
コード例 #16
0
    private void AssignInhabitants <T>(SocialStructure socialStructure, SocialNode node, List <T> rooms, int numberPerRoom) where T : AssignedRoom
    {
        var mobList        = GetMonstersForNode(node, socialStructure);
        int currentMonster = 0;

        foreach (var room in rooms)
        {
            while (room.inhabitants.Count < numberPerRoom && currentMonster < mobList.Count)
            {
                var monster = mobList[currentMonster];
                room.inhabitants.Add(monster);
                monster.associatedRooms.Add(room);
                currentMonster++;
            }
        }
    }
コード例 #17
0
    public MonsterData GenerateMonster(string type, SocialNode node)
    {
        int level, quality;
        int difficultyRoll = Random.Range(0, 100);
        int qualityRoll    = Random.Range(0, 100);

        if (difficultyRoll < 12)
        {
            level = Random.Range(1, LevelGen.targetLevel);                      //easy
        }
        else if (difficultyRoll < 75)
        {
            level = LevelGen.targetLevel;                           //normal
        }
        else if (difficultyRoll < 97)
        {
            level = Mathf.Min(LevelGen.targetLevel + (UnityEngine.Random.Range(1, 5)), LevelGen.targetLevel * 2);                           //hard
        }
        else
        {
            level = Mathf.Min(LevelGen.targetLevel + (UnityEngine.Random.Range(5, 7)), LevelGen.targetLevel * 3);  //extreme
        }
        if (qualityRoll < 75)
        {
            quality = 0;
        }
        else if (qualityRoll < 90)
        {
            quality = 1;
        }
        else if (qualityRoll < 97)
        {
            quality = 2;
        }
        else
        {
            quality = 3;
        }
        if (node.lord == null)
        {
            quality = 3;                    //4
        }
        return(new MonsterData(type, GetSpecificMonsterType(type), level, quality, node));
    }
コード例 #18
0
    public void Init(FriendInfo info)
    {
        curInfo = info;
        if (gameObject.activeInHierarchy)
        {
            StartCoroutine(MiscUtils.DownloadImage(info.photo, spr =>
            {
                headIcon.sprite = spr;
            }));
        }
        nameLb.text    = info.nickname;
        sixIcon.sprite = BundleManager.Instance.GetSprite("friend/" + (info.gender == 0 ? "haoyou_pic_nan" : "haoyou_pic_nv"));
        yinbiLb.text   = info.sliver.ToString();

        UGUIEventListener.Get(headIcon.gameObject).onClick = delegate
        {
            SocialNode.HeadCall(info, false);
        };
    }
コード例 #19
0
ファイル: SocialNode.cs プロジェクト: nianyang111/testclient
    /// <summary>
    /// 头像按钮回调
    /// </summary>
    /// <param name="info"></param>
    public static void HeadCall(FriendInfo info, bool isFriend)
    {
        SocialNode node = NodeManager.GetNode <SocialNode>();

        if (node)
        {
            node.roleInfoView.SetVisibel(true);
            BasePlayerInfo playerInfo = new BasePlayerInfo();
            playerInfo.exp          = info.exp;
            playerInfo.icon         = info.photo;
            playerInfo.lv           = info.level;
            playerInfo.money        = info.sliver;
            playerInfo.six          = info.gender == 0 ? Six.boy : Six.girl;
            playerInfo.uid          = info.userId.ToString();
            playerInfo.userNickname = info.nickname;
            playerInfo.relation     = info.relation;
            node.roleInfoView.Init(playerInfo, isFriend);
            node.roleInfoView.AddFriendCall = (relation) => info.relation = relation;
        }
    }
コード例 #20
0
    public string PrintNode(SocialNode node)
    {
        var output = "";

        output += "Node ID: " + node.id.ToString() + "\n";
        output += "Population: " + node.actualPopulation.ToString() + "\n";
        if (node.lord == null)
        {
            output += "Society Leader!\n";
        }
        else
        {
            output += "Boss: " + node.lord.id.ToString() + "\n";
        }
        output += "Population breakdown: \n";
        foreach (var pair in node.typeMix)
        {
            output += pair.Key + ": " + Mathf.Floor(pair.Value * 100).ToString() + "%\n";
        }
        output += "\n";
        return(output);
    }
コード例 #21
0
    private List <T> GetSpecificRooms <T>(SocialNode node, SocialStructure socialStructure, int roomPopulationScale) where T : AssignedRoom, new()
    {
        var   output            = new List <T>();
        var   numTiers          = maxSocialTier + 1;
        float grandiosity       = ((float)numTiers - (float)node.GetDepth()) / (float)numTiers;
        float numberPerRoomRoll = Random.Range(grandiosity / 2, grandiosity * 1.5f);
        int   numberPerRoom     = (int)(roomPopulationScale - (numberPerRoomRoll * roomPopulationScale));

        numberPerRoom = Mathf.Max(numberPerRoom, 1);
        int numRooms = (int)(Mathf.Ceil((float)FetchPopulationCount(socialStructure, node) / (float)numberPerRoom));

        for (int i = 0; i < numRooms; i++)
        {
            grandiosity = Random.Range(grandiosity / 2, grandiosity * 1.5f);
            T room = new T {
                grandiosity = grandiosity,
                socialTier  = node.GetDepth()
            };
            output.Add(room);
        }
        AssignInhabitants(socialStructure, node, output, numberPerRoom);
        return(output);
    }
コード例 #22
0
ファイル: SavedWorld.cs プロジェクト: caesuric/familiar-quest
    public static SavedSocialNode ConvertFrom(SocialNode node)
    {
        if (node == null)
        {
            return(null);
        }
        var output = new SavedSocialNode {
            uuid             = node.uuid,
            actualPopulation = node.actualPopulation,
            id     = node.id,
            lordId = node.lord.uuid
        };

        foreach (var vassal in node.vassals)
        {
            output.vassalIds.Add(vassal.uuid);
        }
        foreach (var kvp in node.typeMix)
        {
            output.monsterTypes.Add(kvp.Key);
            output.monsterTypePercentages.Add(kvp.Value);
        }
        return(output);
    }
コード例 #23
0
 private List <CommonSpace> GetSpecificCommonSpace(SocialNode node, SocialStructure socialStructure)
 {
     return(GetSpecificRooms <CommonSpace>(node, socialStructure, 80));
 }
コード例 #24
0
 private List <LivingQuarters> GetSpecificLivingQuarters(SocialNode node, SocialStructure socialStructure)
 {
     return(GetSpecificRooms <LivingQuarters>(node, socialStructure, 20));
 }
コード例 #25
0
    /// <summary>
    /// 解析收到的消息
    /// </summary>
    IEnumerator AnalysisMessage()
    {
        while (true)
        {
            if (allPackages.Count > 0)
            {
                G2CMessage message   = allPackages.Dequeue();
                MessageId  messageId = message.msgid;
                if (messageId != MessageId.G2C_HeartBeatResp && messageId != MessageId.G2C_SystemNotice)
                {
                    LoadingNode.CloseLoadingNode();
                    UIUtils.Log("收到消息:" + messageId.ToString() + ",result::" + message.result);
                }
                if (message.result == 1)
                {
                    #region ...消息处理
                    switch (messageId)
                    {
                        #region ...登录注册相关
                    case MessageId.G2C_Kick_ReLogin:
                        LoginPage.TakeLogin();
                        break;

                    case MessageId.G2C_Kick:
                        TipManager.Instance.OpenTip(TipType.ChooseTip, "您被踢出登录是否重登?", 0, () =>
                        {
                            PageManager.Instance.OpenPage <LoginPage>();
                        });
                        break;

                    case MessageId.G2C_LoginResp:
                        UserInfoModel.userInfo.inDzz   = message.loginresp.inDdz;
                        UserInfoModel.userInfo.release = message.loginresp.vno;
                        LoginPage.LoginResult(message.loginresp.token);
                        print("是否在斗地主:" + message.loginresp.inDdz);
                        break;

                    case MessageId.G2C_UserFlushData:
                        UserInfoModel.userInfo.InitUserData(message.flushdata);
                        break;

                    case MessageId.G2C_UserSysNotice:
                        //message.UserSysNotice.msg
                        break;

                        #endregion
                        #region  大厅相关
                    case MessageId.G2C_QueryAmountOfPlayerInGameResp:
                        var mainPage = PageManager.Instance.GetPage <MainPage>();
                        if (mainPage)
                        {
                            mainPage.SetOnlineNum(message.queryAmountOfPlayerInGameResp);
                        }
                        break;

                    case MessageId.G2C_QueryUserMsgResp:
                        MessageModel.Instance.QueryUserMsgFinish(message.UserMsg);
                        break;

                    case MessageId.G2C_ReadUserMsgResp:
                        NodeManager.GetNode <MessageNode>().ReadMsg(message.ReadMsgResp);
                        break;

                    case MessageId.G2C_QueryGoodsResp:
                        NodeManager.GetNode <BagNode>().goodsPanel.SetData(message.QueryGoodsResp.goods);
                        break;

                    case MessageId.G2C_UseGoodsResp:
                        NodeManager.GetNode <BagNode>().goodsPanel.cashPanel.OnClickTrueFinish(message.UseGoodsResult.result);
                        break;

                    case MessageId.G2C_SaleUserGoodsResp:
                        NodeManager.GetNode <BagNode>().goodsPanel.salePanel.OnClickTrueFinish(message.SaleUserGoodsResp.result);
                        break;

                    case MessageId.G2C_QueryTickRecordResp:
                        NodeManager.GetNode <BagNode>().redeemPanel.QueryTickFinish(message.QueryTickRecordResp);
                        break;

                    case MessageId.G2C_UpdateUserSafeBoxResp:
                        NodeManager.GetNode <SafeBoxNode>().OnClickTrueFinish(message.UpdateUserSafeBoxResp.result);
                        break;

                    case MessageId.G2C_BuyGoodsInStoreResp:    //购买物品
                        StoreNode.ShowRechargeResult(message.BuyGoodsInStoreResp);
                        break;

                    case MessageId.G2C_ChargeNotic:    //sdk购买回调
                        StoreNode.ChargeNoticFinish(message.ChargeNotice);
                        break;

                    case MessageId.G2C_QueryRankResp:
                        RankNode.QueryRankFinish(message.queryRankResp);
                        break;

                    case MessageId.G2C_UpdateUser:
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "操作成功");
                        break;

                    case MessageId.G2C_IsVipUserResp:
                        UserInfoNode.FinishVipDay(message.IsVipUserResp);
                        BqPanel.FinishVipDay(message.IsVipUserResp);
                        break;

                    case MessageId.G2C_QueryTableInfoResp:    //请求房间信息
                        JoinGameRoonNode.G2C_EnterSuccess(message.queryTableInfoResp);
                        break;

                    case MessageId.G2C_YuePaiTableResp:
                        if (MaJangPage.Instance)
                        {
                            int finalIndex = message.yuePaiTableResp.yuePaiTable.Count - 1;
                            GameLogNode.G2C_Load(message.yuePaiTableResp.yuePaiTable[finalIndex]);
                        }
                        else if (PageManager.Instance.CurrentPage is LandlordsPage)
                        {
                            int finalIndex = message.yuePaiTableResp.yuePaiTable.Count - 1;
                            CardResultShowNode cardResultNode = NodeManager.GetNode <CardResultShowNode>();
                            if (cardResultNode)
                            {
                                cardResultNode.Inits(message.yuePaiTableResp.yuePaiTable[finalIndex]);
                            }
                            else
                            {
                                GameLogNode.G2C_Load(message.yuePaiTableResp.yuePaiTable[finalIndex]);
                            }
                        }
                        else if (PageManager.Instance.CurrentPage is MainPage)
                        {
                            YuepaiLogNode.G2C_ReceiveLog(message.yuePaiTableResp);
                        }
                        break;

                    case MessageId.G2C_UnifiedOrder:
                        SDKManager.Instance.SendWechatPay(message.UnifiedOrderResp);
                        break;

                    case MessageId.G2C_AliOrder:
                        SDKManager.Instance.SendAliPay(message.AliOrderResp);
                        break;

                    case MessageId.G2C_QueryGameRoomResp:
                        SelectRoomPage.Instance.QueryGameRoomFinish(message.queryGameRoomResp);
                        break;

                    case MessageId.G2C_SystemNotice:    //系统消息
                        for (int i = 0; i < message.SystemNotice.notice.Count; i++)
                        {
                            NoticeNode.Add(message.SystemNotice.notice[i]);
                        }
                        break;

                        #region 好友相关
                    case MessageId.G2C_QueryFriendResp:    //好友列表
                        SocialNode node = NodeManager.GetNode <SocialNode>();
                        if (node)
                        {
                            node.friendRankPanel.G2C_FriendRank(message.queryFriendResp.friendInfo);
                        }
                        else
                        {
                            InvateNode.G2C_OnLineFriend(message.queryFriendResp.friendInfo);
                        }
                        break;

                    case MessageId.G2C_QueryRenshiResp:    //认识的人
                        KnowPanelPanel.G2C_Know(message.queryRenshiResp.friendInfo);
                        break;

                    case MessageId.G2C_QueryNearbyResp:    //附近的人
                        NearPanel.G2C_Near(message.queryNearbyResp.friendInfo);
                        break;

                    case MessageId.G2C_SharePositionResp:    //位置分享
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "分享位置信息成功!");
                        //请求附近的人
                        AddSendMessageQueue(new C2GMessage()
                        {
                            msgid = MessageId.C2G_QueryNearbyReq
                        });
                        break;

                    case MessageId.G2C_ApplyFriendNotice:    //有人加我好友
                        NodeManager.OpenNode <AddFriendTipNode>(null, null, false, false).Inits(message.applyFriendNotice.friendInfo);
                        SocialNode socialsNode = NodeManager.GetNode <SocialNode>();
                        if (socialsNode)
                        {
                            socialsNode.messagePanel.G2C_AddFriends(new List <FriendInfo>()
                            {
                                message.applyFriendNotice.friendInfo
                            });
                        }
                        break;

                    case MessageId.G2C_ApplyFriendResp:    //加好友结果
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "发送成功,等待验证");
                        break;

                    case MessageId.G2C_ReplyFriendNotice:
                        if (message.replyFriendNotice.friendInfo.userId == UserInfoModel.userInfo.userId)
                        {
                            break;
                        }
                        string tipStr = "";
                        switch (message.replyFriendNotice.friendInfo.relation)
                        {
                        case -1:
                            tipStr = message.replyFriendNotice.friendInfo.nickname + " 已拒绝您的好友申请";
                            break;

                        case 1:
                            FriendRankPanel.Inits();
                            tipStr = message.replyFriendNotice.friendInfo.nickname + " 已同意您的好友申请";
                            break;
                        }
                        TipManager.Instance.OpenTip(TipType.SimpleTip, tipStr);
                        RankNode ranknode = NodeManager.GetNode <RankNode>();
                        if (ranknode)
                        {
                            ranknode.playinfoPanel.QueryRelation(message.replyFriendNotice.friendInfo.userId);
                        }
                        break;

                    case MessageId.G2C_ReplyFriendResp:
                        FriendRankPanel.Inits();
                        break;

                    case MessageId.G2C_FindFriendResp:    //查找好友
                        FindFriendPanel.G2C_Find(message.findFriendResp);
                        break;

                    case MessageId.G2C_FriendChatResp:    //收到好友聊天
                        SocialModel.Instance.ReceiveMessage(message.friendChatResp);
                        SocialModel.Instance.isHaveNewMessage = true;
                        if (PageManager.Instance.CurrentPage is MainPage)
                        {
                            PageManager.Instance.GetPage <MainPage>().SetFriendRed();
                        }
                        else if (PageManager.Instance.CurrentPage is SelectRoomPage)
                        {
                            PageManager.Instance.GetPage <SelectRoomPage>().bottomPanel.SetFriendRedPoint();
                        }
                        break;

                    case MessageId.G2C_GiveSilver:    //赠送成功
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "赠送成功!");
                        break;

                    case MessageId.G2C_QueryFriendOfflineChatResp:
                        SocialNode social_node = NodeManager.GetNode <SocialNode>();
                        if (social_node)
                        {
                            social_node.messagePanel.G2C_RecentContacts(message.queryFriendOfflineChatResp.friendOfflineChat);
                        }
                        break;

                    case MessageId.G2C_QueryRelationResp:
                        GameRoleInfoNode gameRole_node = NodeManager.GetNode <GameRoleInfoNode>();
                        if (gameRole_node)
                        {
                            gameRole_node.SetFriend(message.queryRelationResp.relation);
                        }
                        RankNode rankNode = NodeManager.GetNode <RankNode>();
                        if (rankNode)
                        {
                            rankNode.playinfoPanel.QueryRelationFinish(message.queryRelationResp.relation);
                        }
                        MatchReadyNode matchReadyNode = NodeManager.GetNode <MatchReadyNode>();
                        if (matchReadyNode)
                        {
                            matchReadyNode.chatPanel.CurItem.QueryRelationFinish(message.queryRelationResp.relation);
                        }
                        break;

                    case MessageId.G2C_QueryApplicantsResp:
                        SocialNode socialNode = NodeManager.GetNode <SocialNode>();
                        if (socialNode)
                        {
                            socialNode.messagePanel.G2C_AddFriends(message.queryApplicantsResp.friendInfo);
                        }
                        break;

                    case MessageId.G2C_RemoveFriendResp:
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "删除成功!");
                        FriendRankPanel.Inits();
                        break;
                        #endregion

                        #region 意见反馈
                    case MessageId.G2C_QueryOpinionResp:    //我的历史反馈
                        FeedbackNode feed_node = NodeManager.GetNode <FeedbackNode>();
                        if (feed_node != null)
                        {
                            feed_node.G2C_LoadItems(message.queryOpinionResp.opinion);
                        }
                        break;

                    case MessageId.G2C_SubmitOpinionResp:
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "提交成功");
                        FeedbackNode.G2C_Submit();
                        break;
                        #endregion

                        #region 任务
                    case MessageId.G2C_DaliyTask:    //每日任务列表
                        TaskNode.TaskRefresh(message.DailyTaskResp.dailyTask);
                        break;

                    case MessageId.G2C_CashingPrize:    //领奖
                        TaskNode.Reward(message.CashingPrizeResp.awardCount);
                        break;

                    case MessageId.G2C_Complete1Task:    //完成任务
                        TaskNode.ReqTasks();
                        break;

                        #endregion
                        #endregion
                        #region  比赛
                    case MessageId.G2C_LoadMatcherResp:
                        MatchModel.Instance.LoadMatcherFinish(message.loadMatcherResp);
                        break;

                    case MessageId.G2C_JoinMatcherResp:
                        MatchApplyNode.JoinMatcherFinish(message.JoinMatcherResp);
                        break;

                    case MessageId.G2C_PrepareMatcherResp:
                        MatchModel.Instance.PrepareMatcherFinish(message.prepareMatcherResp);
                        break;

                    case MessageId.G2C_QuitMatcherResp:
                        var readyNode = NodeManager.GetNode <MatchReadyNode>();
                        if (readyNode)
                        {
                            readyNode.QuitMatcher();
                        }
                        var waitNode = NodeManager.GetNode <MatchWaitNode>();
                        if (waitNode)
                        {
                            waitNode.QuitMatcher();
                        }
                        break;

                    case MessageId.G2C_MatcherRiseSuccess:
                        var waitNode2 = NodeManager.GetNode <MatchWaitNode>();
                        if (waitNode2)
                        {
                            waitNode2.MatcherRise(message.waitMatcherRiseResp);
                        }
                        break;

                    case MessageId.G2C_StartMatcher:
                        MatchReadyNode.StartMatch();
                        break;

                    case MessageId.G2C_MatcherCountResp:
                        MatchModel.Instance.MatcherCountFinish(message.matcherCountResp);
                        break;

                    case MessageId.G2C_UserMatcherRewardResp:
                        MatchModel.Instance.UserMatcherRewardFinish(message.userMatcherRewardResp);
                        break;

                    case MessageId.G2C_MatcherHistoryResp:
                        MatchModel.Instance.MatcherHistoryFinish(message.matcherHistoryResp);
                        break;

                    case MessageId.G2C_UserMatcherFriendRankResp:
                        MatchModel.Instance.MatcherFriendRankFinish(message.userMatcherFriendRankResp);
                        break;

                    case MessageId.G2C_MatcherChatResp:
                        MatchReadyNode.MatcherChat(message.matcherChatResp);
                        break;

                    case MessageId.G2C_MatcherJoinCount:
                        MatchReadyNode.JoinCountFlush(message.matcherJoinCount);
                        break;

                    case MessageId.G2C_WaitMatcherRiseResp:
                        MatchWaitNode.OpenMatchWait(message.waitMatcherRiseResp);
                        break;

                    case MessageId.G2C_MatcherPlayerRankingResp:    //比赛排行
                        MatchRankRewardNode.QueryRankFinish(message.matcherPlayerRankingResp);
                        MatchWaitRankRewardPanel.QueryRankFinish(message.matcherPlayerRankingResp);
                        break;

                    case MessageId.G2C_DieMatcherPlayerResp:
                        NodeManager.OpenNode <MatchResultNode>("match", null, true, false).DieMatcherFinish(message.dieMatcherPlayerResp);
                        break;

                    case MessageId.G2C_MedalResp:
                        NodeManager.OpenNode <MatchResultNode>("match", null, true, false).MedalFinish(message.medalResp);
                        break;

                    case MessageId.G2C_CurrentMatcherInfoResp:    //收到比赛消息
                        MatchRulesNode.DisplayMatchInfo(message.currentMatcherInfoResp);
                        //LandlordsNet.BisaiInfoResp(message.currentMatcherInfoResp);
                        break;

                    case MessageId.G2C_MyMatcherRankingResp:    //收到我的排行信息
                        if (PageManager.Instance.GetPage <LandlordsPage>())
                        {
                            LandlordsNet.BisaiMyRankInfoResp(message.myMatcherRankingResp);
                        }
                        else if (PageManager.Instance.GetPage <MaJangPage>())
                        {
                            MaJangPage.Instance.RefreshMatchInfo(message.myMatcherRankingResp);
                        }
                        break;

                    case MessageId.G2C_MatcherFriendResp:
                        MatchReadyNode.InviteFriend(message.matcherFriendResp);
                        break;

                    case MessageId.G2C_InviteFriendMatcherResp:
                        var inviteResp = message.inviteFriendMatcherResp;
                        if (inviteResp.code == 1)
                        {
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "已发送邀请");
                        }
                        else if (inviteResp.code == 2)
                        {
                            TipManager.Instance.OpenTip(
                                TipType.ChooseTip,
                                "您的好友 " + inviteResp.hostName + " 邀请您参加" + inviteResp.matcherName,
                                10f,
                                delegate
                            {
                                MatchModel.Instance.JoinMatch((int)inviteResp.cost, inviteResp.costType, inviteResp.matcherId, inviteResp.matcherName);
                                MatcherInfo cur = new MatcherInfo()
                                {
                                    matchId = inviteResp.matcherId
                                };
                                MatchModel.Instance.CurData = cur;
                            }
                                );
                        }
                        break;

                    case MessageId.G2C_InviteFriendYuePaiResp:
                        if (message.inviteFriendYuePaiResp.code == 3)
                        {
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "对方已拒绝您的邀请");
                        }
                        break;

                    case MessageId.G2C_MatcherTickUser:
                        if (NodeManager.GetNode <MatchReadyNode>())
                        {
                            NodeManager.CloseTargetNode <MatchReadyNode>();
                            MatchModel.Instance.CurData = null;
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "人数不符合比赛要求,请重新报名");
                        }
                        break;

                        #endregion
                        #region ...麻将相关
                    case MessageId.G2C_CreateTableResp:
                        PageManager.Instance.OpenPage <MaJangPage>();
                        break;

                    case MessageId.G2C_GameJoinTableResp:
                    case MessageId.G2C_MjChangeTableResp:
                        if (!PageManager.Instance.GetPage <MaJangPage>())
                        {
                            PageManager.Instance.OpenPage <MaJangPage>();
                        }
                        MaJangPage.Instance.JoinRoomResult(message.GameJoinTableResp.user, message.GameJoinTableResp.detail, message.GameJoinTableResp.isChangeTable);
                        break;

                    case MessageId.G2C_GameJoinTableNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.OtherJoinRoomResult(message.GameJoinTableNotice.user);
                        }
                        break;

                    case MessageId.G2C_GameLeaveTableResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.LeaveByPos(message.GameLeaveTableResp.pos, false);
                        }
                        break;

                    case MessageId.G2C_GamePrepareNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.Ready(message.GamePrepareNotice.pos, message.GamePrepareNotice.prepared);
                        }
                        break;

                    case MessageId.G2C_GameStartResp:
                        if (message.GameStartResp.isReconnect)
                        {
                            PageManager.Instance.OpenPage <MaJangPage>();
                        }
                        MaJangPage.Instance.StartOrReConnectGame(message.GameStartResp);
                        if (message.GameStartResp.isReconnect && message.GameStartResp.state != 4)
                        {
                            canHandleMessage = false;    //重连完成前,禁止处理所有消息
                        }
                        break;

                    case MessageId.G2C_UserStepOverNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.StartOutMj(message.UserStepOverNotice);
                        }
                        break;

                    case MessageId.G2C_UserGetMjResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.GetUserGetMj(message.UserGetMjResp);
                        }
                        break;

                    case MessageId.G2C_UserActionNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.GetUserAction(message.UserActionNotice);
                        }
                        break;

                    case MessageId.G2C_UserMjActionResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.currentPlayer.ExecuteAction(message.UserActionResp);
                        }
                        break;

                    case MessageId.G2C_ChangeBaoPaiNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.OpenBao(message.changeBaoPaiNotice);
                        }
                        break;

                    case MessageId.G2C_MjResult:
                        if (MaJangPage.Instance)
                        {
                            if (message.MjResult.isFinal)
                            {
                                MaJangPage.Instance.GameResult(message.MjResult);
                                canHandleMessage = false;    //弹出当前局结算后,禁止处理所有消息
                            }
                            else
                            {
                                MaJangPage.Instance.Xjxd(message.MjResult);
                            }
                        }
                        break;

                    case MessageId.G2C_MjChangePosResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.ChangeSeatResult(message.mjChangePosResp);
                        }
                        break;

                    case MessageId.G2C_MjChangePosApplyResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.ChangeSeatReply(message.mjChangePosApplyResp);
                        }
                        break;

                    case MessageId.G2C_MjChangePosNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.OtherPlayerChangeSeat(message.mjChangePosNotice.pos1, message.mjChangePosNotice.pos2);
                        }
                        break;

                    case MessageId.G2C_MjTuoguanResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.TrusteeshipResult(true);
                        }
                        break;

                    case MessageId.G2C_MjCancelTuoguanResp:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.TrusteeshipResult(false);
                        }
                        break;

                    case MessageId.G2C_MjTuoguanNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.TrusteeshipResult(true, message.mjTuoguanNotice.pos);
                        }
                        break;

                    case MessageId.G2C_MjCancelTuoguanNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.TrusteeshipResult(false, message.mjCancelTuoguanNotice.pos);
                        }
                        break;

                    case MessageId.G2C_UserStateChangeNotice:
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.SetPlayerStatu(message.UserStateChangeNotice);
                        }
                        break;

                    case MessageId.G2C_DisbandChooiseNotice:
                        JiesanNode.G2C_Vote(message.DisbandChooiseNotice.pos, message.DisbandChooiseNotice.agree);
                        break;

                    case MessageId.G2C_DisbandChooiseResult:
                        if (message.DisbandChooiseResult.disband)
                        {
                            if (message.DisbandChooiseResult.YuePaiTable != null)
                            {
                                NodeManager.OpenNode <CardResultShowNode>().Inits(message.DisbandChooiseResult.YuePaiTable);
                            }
                            else
                            {
                                PageManager.Instance.OpenPage <MainPage>();
                                TipManager.Instance.OpenTip(TipType.SimpleTip, "房间解散成功!");
                            }
                        }
                        else
                        {
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "房间解散失败,有人拒绝解散");
                        }
                        break;

                    case MessageId.G2C_DisbandNotice:
                        NodeManager.OpenNode <JiesanNode>().Inits(message.DisbandNotice.applyPos);
                        break;

                    case MessageId.G2C_DisbandResp:
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "解散申请已发出");
                        break;

                    case MessageId.G2C_UserTalkResp:    //麻将聊天
                        if (MaJangPage.Instance)
                        {
                            MaJangPage.Instance.PlayerChat(message.UserTalkResp);
                        }
                        break;

                    case MessageId.G2C_MjKickPlayerRNotice:    //麻将踢人
                        MaJangPage.Instance.LeaveById(message.mjKickedPlayerNotice.userId, true);
                        break;

                    case MessageId.G2C_MjKickPlayerResp:
                        PageManager.Instance.OpenPage <MainPage>();
                        TipManager.Instance.OpenTip(TipType.SimpleTip, "您被踢出房间");
                        break;

                        #endregion
                        #region 斗地主
                    case MessageId.G2C_EnterDdzRoomResp:    //进房间
                        LandlordsNet.G2C_EnterRoom(message.enterDdzRoomResp);
                        break;

                    case MessageId.G2C_DdzPrepareResp:
                        LandlordsNet.G2C_ZhunbeiResp(message.ddzPrepareResp);
                        break;

                    case MessageId.G2C_PlayerRemovedNotice:    //有玩家强退房间推送
                        for (int i = 0; i < message.playerRemovedNotice.userId.Count; i++)
                        {
                            LandlordsNet.G2C_LeaveRoomResp(message.playerRemovedNotice.userId[i].ToString(), message.playerRemovedNotice.reason);
                        }
                        break;

                    case MessageId.G2C_DdzLeaveRoomResp:    //有玩家退出房间推送
                        LandlordsNet.G2C_LeaveRoomResp(message.ddzLeaveRoomResp.userId.ToString(), 0);
                        break;

                    case MessageId.G2C_DdzKickedPlayerNotice:    //我被踢
                        LandlordsNet.MeKicked();
                        break;

                    case MessageId.G2C_DdzQueryPokerResp:    //记牌器
                        LandlordsPage.Instance.componentView.jipaiqiPanel.InitValue(message.ddzQueryPokerResp.ddzPokerCounter);
                        break;

                    case MessageId.G2C_DdzFaPaiResp:    //发牌推送
                        LandlordsNet.G2C_DealCard(message.ddzFaPaiResp);
                        break;

                    case MessageId.G2C_DdzJiaoFenNotice:    //该我叫分推送
                        LandlordsNet.G2C_MeCallFen();
                        break;

                    case MessageId.G2C_DdzQdzNotice:    //该我叫地主
                        LandlordsNet.G2C_MeCallLandlords();
                        break;

                    case MessageId.G2C_DdzChuPaiNotice:    //该我出牌推送
                        LandlordsNet.G2C_MePop();
                        break;

                    case MessageId.G2C_DdzJiaoFenResp:    //叫分推送
                        LandlordsNet.G2C_PlayerCallResp(message.ddzJiaoFenResp);
                        break;

                    case MessageId.G2C_DdzQdzResp:    //叫分推送
                        LandlordsNet.G2C_PlayerQdzResp(message.ddzQdzResp);
                        break;

                    case MessageId.G2C_DdzChuPaiResp:    //出牌推送
                        LandlordsNet.G2C_PopResp(message.ddzChuPaiResp);
                        break;

                    case MessageId.G2C_DdzTuoguanResp:    //托管推送
                        LandlordsNet.G2C_TuoguanResp(message.ddzTuoguanResp);
                        break;

                    case MessageId.G2C_DdzJieSuanResp:    //结算单局推送
                        LandlordsNet.G2C_Result(message.ddzJieSuanResp);
                        break;

                    case MessageId.G2C_DdzYuePaiResult:    //房卡房总结算
                        //NodeManager.OpenNode<CardResultShowNode>().Inits(message.yuePaiTableResp);
                        break;

                    case MessageId.G2C_DdzReconnectResp:    //断线重连回应
                        if (message.ddzReconnectResp.tnf == 1)
                        {
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "重连斗地主失败,进入大厅");
                            UserInfoModel.userInfo.inDzz = false;
                            break;
                        }
                        StartCoroutine(LandlordsNet.G2C_Reconnect(message.ddzReconnectResp));
                        break;

                    case MessageId.G2C_RemoveCRTable:
                        PageManager.Instance.OpenPage <MainPage>();
                        break;

                    case MessageId.G2C_DdzCanLeaveResp:    //是否可以离开房间响应
                        LandlordsNet.G2C_IsCanLeaveResp(message.ddzCanLeaveResp);
                        break;

                    case MessageId.G2C_DdzJieSanNotice:    //收到有人发起解散
                        if (message.ddzJieSanNotice.userId != UserInfoModel.userInfo.userId)
                        {
                            NodeManager.OpenNode <JiesanNode>().Inits(message.ddzJieSanNotice.userId);
                        }
                        break;

                    case MessageId.G2C_DdzVoteNotice:    //收到有人投票
                        JiesanNode.G2C_Vote(message.ddzVoteNotice.userId, message.ddzVoteNotice.yn);
                        break;

                    case MessageId.G2C_DdzJieSanResp:    //推送解散结果
                        LandlordsNet.G2C_JiesanResult(message.ddzJieSanResp.success);
                        break;

                    case MessageId.G2C_DdzReplaceTableResp:
                        if (message.ddzReplaceTableResp.userId == UserInfoModel.userInfo.userId)
                        {
                            LandlordsModel.Instance.Clear();
                            LandlordsPage.Instance.InitRoom();
                        }
                        else
                        {
                            LandlordsNet.G2C_LeaveRoomResp(message.ddzReplaceTableResp.userId.ToString(), 0);
                        }
                        break;

                    //case MessageId.inva
                    //TipManager.Instance.OpenTip(TipType.ChooseTip, string.Format("您的好友{0}邀请您进入{1}一起玩耍", name, game), 0, () =>
                    //    {
                    //        NodeManager.OpenNode<TipsEnterNode>().Inits();
                    //    });
                    //break;
                    case MessageId.G2C_DdzChatResp:    //聊天
                        LandlordsNet.G2C_ChatResp(message.ddzChatResp);
                        break;

                    case MessageId.G2C_QueryPlayerBaseInfoResp:    //请求玩家信息(弹框)
                        GameRoleInfoNode.SetPlayerInfo(message.playerBaseInfo);
                        break;

                        #endregion
                        #region 喇叭
                    case MessageId.G2C_BroadCastMsg:    //有人发喇叭
                        GameMessage msg = new GameMessage()
                        {
                            type   = message.broadCastMsg.horn.type,
                            sender = message.broadCastMsg.horn.nickname,
                            value  = message.broadCastMsg.horn.content
                        };
                        ChatModel.chatList.Add(msg);
                        if (ChatModel.chatList.Count > ChatModel.MaxChatCount)
                        {
                            ChatModel.chatList[0] = msg;
                            ChatModel.chatList.RemoveAt(ChatModel.chatList.Count - 1);
                        }

                        TrumpetNode trump_node = NodeManager.GetNode <TrumpetNode>();
                        if (trump_node)
                        {
                            trump_node.LoadItem(msg);
                        }
                        NoticeNode.Add(string.Format("{0}:{1}", msg.sender, msg.value));
                        if (message.broadCastMsg.horn.nickname == UserInfoModel.userInfo.nickName)
                        {
                            TipManager.Instance.OpenTip(TipType.SimpleTip, "喇叭发送成功!");
                        }
                        break;

                        #endregion
                    //case MessageId.G2C_InviteFriendYuePaiResp:
                    //  TipManager.Instance.OpenTip(TipType.ChooseTip,"您的好友邀请您进入"+message.inviteFriendYuePaiResp.)
                    //break;
                    default:
                        if (messageId != MessageId.G2C_HeartBeatResp)
                        {
                            UIUtils.Log("未处理的消息id :" + messageId);
                        }
                        break;
                    }
                    #endregion
                }
                else
                {
                    ErrorMessage(message);
                }
            }
            while (!canHandleMessage)
            {
                yield return(new WaitForSecondsRealtime(0.1f));
            }
            yield return(new WaitForSecondsRealtime(0.005f));
        }
    }