Beispiel #1
0
    void OnEnterMatchRsp(object msg, int app_type, int app_id)
    {
        bs.matchclient.EnterMatchRsp rsp = (bs.matchclient.EnterMatchRsp)msg;
        //记录下table_logic的app_id
        UserData.enter_match.table_logic_appid = (int)rsp.tablelogic_appid;

        //如果tableid不为0就是断线重连
        if (rsp.table_id != 0)
        {
            UserData.enter_match.table_id = rsp.table_id;
            //向match_phase发送

            bs.matchclient.BackGameReq back_req = new bs.matchclient.BackGameReq();
            int back_app_type = (int)Middleware.EnumAppType.TableLogic;
            int back_app_id   = UserData.enter_match.table_logic_appid;

            back_req.group_id = UserData.enter_match.group_id;
            back_req.match_id = UserData.enter_match.match_id;
            back_req.table_id = UserData.enter_match.table_id;

            Middleware.SendMessage <bs.matchclient.BackGameReq>(back_req, (int)Middleware.EnumCommandKind.MatchClient,
                                                                (int)bs.matchclient.CMDID_MatchClient.IDBackGameReq, back_app_type, back_app_id);
            //向table_logic发送
            //CMDGameddz_game_data_req game_data;
            bs.gameddz.game_data_req game_data = new bs.gameddz.game_data_req();

            //CMDMatchClient_GameData data_rsp;
            bs.matchclient.GameData data_req = new bs.matchclient.GameData();

            System.IO.MemoryStream stream = new System.IO.MemoryStream();
            Serializer.Serialize <bs.gameddz.game_data_req>(stream, game_data);
            byte[] buff = stream.ToArray();

            data_req.data = buff;

            //game_data.my_message_.SerializeToString(&data);

            data_req.data      = buff;
            data_req.data_id   = (int)bs.gameddz.CMDID_Gameddz.IDGameDataReq;
            data_req.game_kind = UserData.the_game_kind;

            Middleware.SendMessage <bs.matchclient.GameData>(data_req, (int)Middleware.EnumCommandKind.MatchClient,
                                                             (int)bs.matchclient.CMDID_MatchClient.IDGameData, back_app_type, back_app_id);

            return;
        }

        if (bs.matchclient.EnterMatchRsp.EnterResult.OK != rsp.result_code)
        {
            //进入比赛失败的处理
        }
        SendPlayerActionReq(app_type, app_id);
    }
Beispiel #2
0
    public static object RecvMessage(ref int kind_id, ref int sub_id, ref int app_type, ref int app_id)
    {
        int check_kind_id = 0;
        int size          = GetMsgBuffSize(ref check_kind_id);

        if (0 == size && 0 == check_kind_id)  //因为还有像hellorsp这样的没有报文长度但是有返回的报文,不能只靠size是否为0来判断
        {
            return(null);
        }
        byte[] buff = new byte[size];
        //int kind_id = 0;
        GetMsgBuff(buff, ref kind_id, ref sub_id);

        System.IO.Stream stream = new System.IO.MemoryStream(buff);

        switch (kind_id)
        {
        case (int)Middleware.EnumCommandKind.HallClient:
            switch (sub_id)
            {
            case (int)bs.hallclient.CMDID_HallClient.IDAllGroupRsp:
            {
                bs.hallclient.AllGroupRsp req = Serializer.Deserialize <bs.hallclient.AllGroupRsp>(stream);
                return(req);
            }

            case (int)bs.hallclient.CMDID_HallClient.IDAllListRsp:
            {
                bs.hallclient.AllListRsp req = Serializer.Deserialize <bs.hallclient.AllListRsp>(stream);
                return(req);
            }

            case (int)bs.hallclient.CMDID_HallClient.IDAllPlanRsp:
            {
                bs.hallclient.AllPlanRsp req = Serializer.Deserialize <bs.hallclient.AllPlanRsp>(stream);
                return(req);
            }

            case (int)bs.hallclient.CMDID_HallClient.IDPlanAllStartPoint:
            {
                bs.hallclient.PlanAllStartPoint req = Serializer.Deserialize <bs.hallclient.PlanAllStartPoint>(stream);
                return(req);
            }

            case (int)bs.hallclient.CMDID_HallClient.IDGetMatchDetailRsp:
            {
                bs.hallclient.GetMatchDetailRsp req = Serializer.Deserialize <bs.hallclient.GetMatchDetailRsp>(stream);
                return(req);
            }

            default:
                break;
            }
            break;

        case (int)EnumCommandKind.Client:
            switch (sub_id)
            {
            case (int)bs.client.CMDID_Client.IDLoginRsp:
            {
                bs.client.LoginRsp req = Serializer.Deserialize <bs.client.LoginRsp>(stream);
                return(req);
            }

            default:
                break;
            }
            break;

        case (int)EnumCommandKind.Gate:
            switch (sub_id)
            {
            case (int)bs.gate.CMDID_Gate.IDHelloRsp:
            {
                bs.gate.HelloRsp req = new bs.gate.HelloRsp();
                Debug.LogFormat("get hellorsp");
                return(req);
            }

            default:
                break;
            }
            break;

        case (int)Middleware.EnumCommandKind.MatchClient:
            switch (sub_id)
            {
            case (int)bs.matchclient.CMDID_MatchClient.IDJoinRsp:           //报名回复
            {
                bs.matchclient.JoinRsp req = Serializer.Deserialize <bs.matchclient.JoinRsp>(stream);
                return(req);
            }

            case (int)bs.matchclient.CMDID_MatchClient.IDMatchStart:            //开赛通知
            {
                bs.matchclient.MatchStart req = Serializer.Deserialize <bs.matchclient.MatchStart>(stream);
                return(req);
            }

            case (int)bs.matchclient.CMDID_MatchClient.IDEnterMatchRsp:         //进入比赛通知
            {
                bs.matchclient.EnterMatchRsp req = Serializer.Deserialize <bs.matchclient.EnterMatchRsp>(stream);
                return(req);
            }

            case (int)bs.matchclient.CMDID_MatchClient.IDTableStatusInd:
            {
                bs.matchclient.TableStatus req = Serializer.Deserialize <bs.matchclient.TableStatus>(stream);
                return(req);
            }

            case (int)bs.matchclient.CMDID_MatchClient.IDGameData:
            {
                bs.matchclient.GameData req = Serializer.Deserialize <bs.matchclient.GameData>(stream);
                return(req);
            }

            default:
                break;
            }
            break;

        default:
            break;
        }

        return(null);
    }