예제 #1
0
    public void Receive(byte[] bytes)
    {
        using (MemoryStream stream = new MemoryStream(bytes))
        {
            GameMessage message  = Serializer.Deserialize <GameMessage>(stream);
            Protocol    protocol = (Protocol)message.type[0];
            switch (protocol)
            {
            case Protocol.AckLogin:
                using (MemoryStream stream2 = new MemoryStream(message.data))
                {
                    AckLogin login = Serializer.Deserialize <AckLogin>(stream2);
                    Debug.Log("userid = " + login.userid);
                    Debug.Log("nickname = " + login.nickname);
                    NetData.Instance.mUserData.Userid   = login.userid;
                    NetData.Instance.mUserData.Nickname = login.nickname;
                    _ViewManager.ClearView();
                    _ViewManager.LoadView("prefab/ui/matchview_prefab");
                    break;
                }

            case Protocol.NtfMatch:
                using (MemoryStream stream2 = new MemoryStream(message.data))
                {
                    NtfMatch match = Serializer.Deserialize <NtfMatch>(stream2);
                    Debug.Log("match.playerinfoList.Count = " + match.playerinfoList.Count);
                    NetData.Instance.mFightData.PlayerInfoList = match.playerinfoList;
                    NetData.Instance.mFightData.RoomId         = match.roomid;
                    _TcpSendManager.SendSelectHero(1);
                    break;
                }

            case Protocol.NtfSelectHeroFinish:
                using (MemoryStream stream2 = new MemoryStream(message.data))
                {
                    NtfSelectHeroFinish selectHeroFinish = Serializer.Deserialize <NtfSelectHeroFinish>(stream2);
                    Debug.Log("selectHeroFinish.select_herolist.Count = " + selectHeroFinish.select_herolist.Count);
                    NetData.Instance.mFightData.PlayerHeroInfoList = selectHeroFinish.select_herolist;
                    LoadingManager.LoadSceneAsync(SceneConfig.Fight);
                    break;
                }
            }
            if (_UnityTcpSocket.ReceiveAction != null)
            {
                _UnityTcpSocket.ReceiveAction(protocol);
            }
        }
    }
예제 #2
0
 /// <summary>
 /// 战斗失败/胜利后退出战斗,及结算信息
 /// </summary>
 void OnS2CFightEnd(KcpNetPack pack)
 {
     FightEnd();
     LoadingManager.LoadSceneAsync(SceneConfig.InitAgain);
 }
    public void OnS2CMatch(NetPack pack)
    {
        Debug.LogFormat("匹配系统MatchMsgID,CMD={0}, ", pack.CMD);
        //MatchManager mMatchManager = GameObject.Find("MatchView").GetComponent<MatchManager>();
        MatchManager mMatchManager = FindObjectOfType <MatchManager>();

        switch ((MatchMsgID)pack.CMD)
        {
        case MatchMsgID.Fms2Gs2CMatchAdd:
            PB_MatchTeamAdd_FMS2GS2C mMatchTeamAdd = PB_MatchTeamAdd_FMS2GS2C.Parser.ParseFrom(pack.BodyBuffer.Bytes);
            if (mMatchTeamAdd.Ret)
            {
                NetData.Instance.Set(MsgID.S2CMatch, (uint)MatchMsgID.Fms2Gs2CMatchAdd, mMatchTeamAdd);
            }
            mMatchManager.ShowMatching(mMatchTeamAdd.Ret);
            Debug.LogFormat("OnS2CMatch,请求加入匹配队列结果:mMatchTeamAdd={0}", mMatchTeamAdd.ToString());
            break;

        case MatchMsgID.Fms2Gs2CMatchDel:
            PB_MatchTeamDel_FMS2GS2C mMatchTeamDel = PB_MatchTeamDel_FMS2GS2C.Parser.ParseFrom(pack.BodyBuffer.Bytes);
            Debug.LogFormat("OnS2CMatch,请求取消匹配队列结果:mMatchTeamDel={0}", mMatchTeamDel.ToString());
            if (mMatchTeamDel.Ret)
            {
                mMatchManager.ShowMatching(false);
            }
            break;

        case MatchMsgID.Fms2Gs2CMatchStart:
            PB_MatchTeamReady_FMS2GS2C mMatchTeamReady = PB_MatchTeamReady_FMS2GS2C.Parser.ParseFrom(pack.BodyBuffer.Bytes);
            mMatchManager.ShowMatched(true, mMatchTeamReady.Lasttime);
            foreach (PB_MatchTeamMemberInfo OnePlayersinfo in mMatchTeamReady.Playersinfo)
            {
                if (OnePlayersinfo.Pid != NetData.Instance.PlayerID)
                {
                    continue;
                }
                if (OnePlayersinfo.Ready)
                {
                    mMatchManager.SureFightBtn.interactable = false;
                    mMatchManager.sSureFightBtnText.text    = "已准备";
                }
            }
            Debug.LogFormat("OnS2CMatch,推送匹配成功,及相关信息(多次推送当作刷新信息):mMatchTeamReady={0}", mMatchTeamReady.ToString());
            break;

        case MatchMsgID.Fms2Gs2CMatchFail:
            PB_MatchTeamFail_FMS2GS2C mMatchTeamFail = PB_MatchTeamFail_FMS2GS2C.Parser.ParseFrom(pack.BodyBuffer.Bytes);
            Debug.LogFormat("OnS2CMatch,推送战斗准备失败(重新进入匹配队列):mMatchTeamFail={0}", mMatchTeamFail.ToString());
            if (mMatchTeamFail.Notmatchpidlist.Contains(NetData.Instance.PlayerID))
            {
                mMatchManager.ShowMatched(false, 0);
                mMatchManager.ShowMatching(false);
            }
            else
            {
                mMatchManager.ShowMatched(false, 0);
                mMatchManager.ShowMatching(true);
            }
            break;

        case MatchMsgID.Fms2Gs2CMatchFight:
            PB_MatchTeamFight_FMS2GS2C mMatchTeamFight = PB_MatchTeamFight_FMS2GS2C.Parser.ParseFrom(pack.BodyBuffer.Bytes);
            Debug.LogFormat("OnS2CMatch,推送战斗准备成功,开始战斗,及相关信息:mMatchTeamFight={0}", mMatchTeamFight.ToString());
            NetData.Instance.Set(MsgID.S2CMatch, (uint)MatchMsgID.Fms2Gs2CMatchFight, mMatchTeamFight);
            LoadingManager.LoadSceneAsync(SceneConfig.Fight);
            break;
        }
    }