From 73c0c1a7aec4be934d2c2d97a7194715e123afef Mon Sep 17 00:00:00 2001 From: NorthLan <6995syu@163.com> Date: Sun, 12 Jun 2022 14:07:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=AE=B5=E4=BD=8D?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/user_center/pb/user_center.pb.go | 1256 +++++++++++++-------- app/user_center/pb/user_center.proto | 33 + app/user_center/pb/user_center_grpc.pb.go | 38 + app/user_center/usercenter/user_center.go | 10 + config-dev.yml | 2 +- game/live_logic/common_handler.go | 2 +- game/live_logic/logic.go | 8 +- game/live_logic/zhg_handler.go | 72 +- game/live_logic/zhghz_handler.go | 8 +- game/live_logic/zhgzd_handler.go | 18 +- game/logic/zhg/statistics/stat_pvp.go | 18 +- game/pb/game/zhg/Command.cs | 498 +++++++- game/pb/game/zhg/Stat.cs | 511 ++++++++- game/pb/game/zhg/command.pb.go | 475 +++++--- game/pb/game/zhg/command.proto | 11 + game/pb/game/zhg/stat.pb.go | 316 +++++- game/pb/game/zhg/stat.proto | 24 + 17 files changed, 2539 insertions(+), 761 deletions(-) diff --git a/app/user_center/pb/user_center.pb.go b/app/user_center/pb/user_center.pb.go index 2e6dea4..622f00b 100644 --- a/app/user_center/pb/user_center.pb.go +++ b/app/user_center/pb/user_center.pb.go @@ -67,6 +67,116 @@ func (GiftType) EnumDescriptor() ([]byte, []int) { return file_user_center_proto_rawDescGZIP(), []int{0} } +type StatPvPReportResp_GradeResult int32 + +const ( + StatPvPReportResp_Keep StatPvPReportResp_GradeResult = 0 // 不变(因为骁勇分抵扣) + StatPvPReportResp_GradeUp StatPvPReportResp_GradeResult = 1 // 段位提升 + StatPvPReportResp_LevelUp StatPvPReportResp_GradeResult = 2 // 段位等级提升 + StatPvPReportResp_StarUp StatPvPReportResp_GradeResult = 3 // 等级星级提升 + StatPvPReportResp_GradeDown StatPvPReportResp_GradeResult = 4 // 掉段 + StatPvPReportResp_LevelDown StatPvPReportResp_GradeResult = 5 // 降级 + StatPvPReportResp_StarDown StatPvPReportResp_GradeResult = 6 // 掉星 +) + +// Enum value maps for StatPvPReportResp_GradeResult. +var ( + StatPvPReportResp_GradeResult_name = map[int32]string{ + 0: "Keep", + 1: "GradeUp", + 2: "LevelUp", + 3: "StarUp", + 4: "GradeDown", + 5: "LevelDown", + 6: "StarDown", + } + StatPvPReportResp_GradeResult_value = map[string]int32{ + "Keep": 0, + "GradeUp": 1, + "LevelUp": 2, + "StarUp": 3, + "GradeDown": 4, + "LevelDown": 5, + "StarDown": 6, + } +) + +func (x StatPvPReportResp_GradeResult) Enum() *StatPvPReportResp_GradeResult { + p := new(StatPvPReportResp_GradeResult) + *p = x + return p +} + +func (x StatPvPReportResp_GradeResult) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatPvPReportResp_GradeResult) Descriptor() protoreflect.EnumDescriptor { + return file_user_center_proto_enumTypes[1].Descriptor() +} + +func (StatPvPReportResp_GradeResult) Type() protoreflect.EnumType { + return &file_user_center_proto_enumTypes[1] +} + +func (x StatPvPReportResp_GradeResult) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatPvPReportResp_GradeResult.Descriptor instead. +func (StatPvPReportResp_GradeResult) EnumDescriptor() ([]byte, []int) { + return file_user_center_proto_rawDescGZIP(), []int{17, 0} +} + +type StatPvPReportResp_GradeReason int32 + +const ( + StatPvPReportResp_Win StatPvPReportResp_GradeReason = 0 // 因为获胜 + StatPvPReportResp_Lost StatPvPReportResp_GradeReason = 1 // 因为战败 + StatPvPReportResp_BravePoint StatPvPReportResp_GradeReason = 2 // 因为骁勇分保护,所以不掉星 +) + +// Enum value maps for StatPvPReportResp_GradeReason. +var ( + StatPvPReportResp_GradeReason_name = map[int32]string{ + 0: "Win", + 1: "Lost", + 2: "BravePoint", + } + StatPvPReportResp_GradeReason_value = map[string]int32{ + "Win": 0, + "Lost": 1, + "BravePoint": 2, + } +) + +func (x StatPvPReportResp_GradeReason) Enum() *StatPvPReportResp_GradeReason { + p := new(StatPvPReportResp_GradeReason) + *p = x + return p +} + +func (x StatPvPReportResp_GradeReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatPvPReportResp_GradeReason) Descriptor() protoreflect.EnumDescriptor { + return file_user_center_proto_enumTypes[2].Descriptor() +} + +func (StatPvPReportResp_GradeReason) Type() protoreflect.EnumType { + return &file_user_center_proto_enumTypes[2] +} + +func (x StatPvPReportResp_GradeReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatPvPReportResp_GradeReason.Descriptor instead. +func (StatPvPReportResp_GradeReason) EnumDescriptor() ([]byte, []int) { + return file_user_center_proto_rawDescGZIP(), []int{17, 1} +} + // model type Empty struct { state protoimpl.MessageState @@ -1120,6 +1230,132 @@ func (x *UserBuyNobilityReq) GetEndTime() int64 { return 0 } +type Grade struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Grade int32 `protobuf:"varint,1,opt,name=grade,proto3" json:"grade,omitempty"` // 段位 + Level int32 `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"` // 段位等级 + Star int32 `protobuf:"varint,3,opt,name=star,proto3" json:"star,omitempty"` // 等级星级 + BravePoint int64 `protobuf:"varint,4,opt,name=bravePoint,proto3" json:"bravePoint,omitempty"` // 剩余 骁勇分(历史评分累计) +} + +func (x *Grade) Reset() { + *x = Grade{} + if protoimpl.UnsafeEnabled { + mi := &file_user_center_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Grade) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Grade) ProtoMessage() {} + +func (x *Grade) ProtoReflect() protoreflect.Message { + mi := &file_user_center_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Grade.ProtoReflect.Descriptor instead. +func (*Grade) Descriptor() ([]byte, []int) { + return file_user_center_proto_rawDescGZIP(), []int{14} +} + +func (x *Grade) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *Grade) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *Grade) GetStar() int32 { + if x != nil { + return x.Star + } + return 0 +} + +func (x *Grade) GetBravePoint() int64 { + if x != nil { + return x.BravePoint + } + return 0 +} + +type UserGradeResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"` + Grade *Grade `protobuf:"bytes,2,opt,name=grade,proto3" json:"grade,omitempty"` +} + +func (x *UserGradeResp) Reset() { + *x = UserGradeResp{} + if protoimpl.UnsafeEnabled { + mi := &file_user_center_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UserGradeResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UserGradeResp) ProtoMessage() {} + +func (x *UserGradeResp) ProtoReflect() protoreflect.Message { + mi := &file_user_center_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UserGradeResp.ProtoReflect.Descriptor instead. +func (*UserGradeResp) Descriptor() ([]byte, []int) { + return file_user_center_proto_rawDescGZIP(), []int{15} +} + +func (x *UserGradeResp) GetUserId() int64 { + if x != nil { + return x.UserId + } + return 0 +} + +func (x *UserGradeResp) GetGrade() *Grade { + if x != nil { + return x.Grade + } + return nil +} + // 通知-PvP战报 statistics.pvp.report type StatPvPReportReq struct { state protoimpl.MessageState @@ -1135,7 +1371,7 @@ type StatPvPReportReq struct { func (x *StatPvPReportReq) Reset() { *x = StatPvPReportReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[14] + mi := &file_user_center_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1148,7 +1384,7 @@ func (x *StatPvPReportReq) String() string { func (*StatPvPReportReq) ProtoMessage() {} func (x *StatPvPReportReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[14] + mi := &file_user_center_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1161,7 +1397,7 @@ func (x *StatPvPReportReq) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPvPReportReq.ProtoReflect.Descriptor instead. func (*StatPvPReportReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{14} + return file_user_center_proto_rawDescGZIP(), []int{16} } func (x *StatPvPReportReq) GetWinCamp() int32 { @@ -1207,7 +1443,7 @@ type StatPvPReportResp struct { func (x *StatPvPReportResp) Reset() { *x = StatPvPReportResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[15] + mi := &file_user_center_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1220,7 +1456,7 @@ func (x *StatPvPReportResp) String() string { func (*StatPvPReportResp) ProtoMessage() {} func (x *StatPvPReportResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[15] + mi := &file_user_center_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1233,7 +1469,7 @@ func (x *StatPvPReportResp) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPvPReportResp.ProtoReflect.Descriptor instead. func (*StatPvPReportResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{15} + return file_user_center_proto_rawDescGZIP(), []int{17} } func (x *StatPvPReportResp) GetWinCamp() int32 { @@ -1278,7 +1514,7 @@ type GiftPackItem struct { func (x *GiftPackItem) Reset() { *x = GiftPackItem{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[16] + mi := &file_user_center_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1291,7 +1527,7 @@ func (x *GiftPackItem) String() string { func (*GiftPackItem) ProtoMessage() {} func (x *GiftPackItem) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[16] + mi := &file_user_center_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1304,7 +1540,7 @@ func (x *GiftPackItem) ProtoReflect() protoreflect.Message { // Deprecated: Use GiftPackItem.ProtoReflect.Descriptor instead. func (*GiftPackItem) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{16} + return file_user_center_proto_rawDescGZIP(), []int{18} } func (x *GiftPackItem) GetPackType() string { @@ -1349,7 +1585,7 @@ type DrawGiftPackReq struct { func (x *DrawGiftPackReq) Reset() { *x = DrawGiftPackReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[17] + mi := &file_user_center_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1362,7 +1598,7 @@ func (x *DrawGiftPackReq) String() string { func (*DrawGiftPackReq) ProtoMessage() {} func (x *DrawGiftPackReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[17] + mi := &file_user_center_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1375,7 +1611,7 @@ func (x *DrawGiftPackReq) ProtoReflect() protoreflect.Message { // Deprecated: Use DrawGiftPackReq.ProtoReflect.Descriptor instead. func (*DrawGiftPackReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{17} + return file_user_center_proto_rawDescGZIP(), []int{19} } func (x *DrawGiftPackReq) GetUid() int64 { @@ -1412,7 +1648,7 @@ type DrawGiftPackResp struct { func (x *DrawGiftPackResp) Reset() { *x = DrawGiftPackResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[18] + mi := &file_user_center_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1425,7 +1661,7 @@ func (x *DrawGiftPackResp) String() string { func (*DrawGiftPackResp) ProtoMessage() {} func (x *DrawGiftPackResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[18] + mi := &file_user_center_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1438,7 +1674,7 @@ func (x *DrawGiftPackResp) ProtoReflect() protoreflect.Message { // Deprecated: Use DrawGiftPackResp.ProtoReflect.Descriptor instead. func (*DrawGiftPackResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{18} + return file_user_center_proto_rawDescGZIP(), []int{20} } func (x *DrawGiftPackResp) GetUid() int64 { @@ -1476,7 +1712,7 @@ type IncreaseWelfareReq struct { func (x *IncreaseWelfareReq) Reset() { *x = IncreaseWelfareReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[19] + mi := &file_user_center_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1489,7 +1725,7 @@ func (x *IncreaseWelfareReq) String() string { func (*IncreaseWelfareReq) ProtoMessage() {} func (x *IncreaseWelfareReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[19] + mi := &file_user_center_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1502,7 +1738,7 @@ func (x *IncreaseWelfareReq) ProtoReflect() protoreflect.Message { // Deprecated: Use IncreaseWelfareReq.ProtoReflect.Descriptor instead. func (*IncreaseWelfareReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{19} + return file_user_center_proto_rawDescGZIP(), []int{21} } func (x *IncreaseWelfareReq) GetUid() int64 { @@ -1538,7 +1774,7 @@ type RankPvpReq struct { func (x *RankPvpReq) Reset() { *x = RankPvpReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[20] + mi := &file_user_center_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1551,7 +1787,7 @@ func (x *RankPvpReq) String() string { func (*RankPvpReq) ProtoMessage() {} func (x *RankPvpReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[20] + mi := &file_user_center_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1564,7 +1800,7 @@ func (x *RankPvpReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpReq.ProtoReflect.Descriptor instead. func (*RankPvpReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{20} + return file_user_center_proto_rawDescGZIP(), []int{22} } func (x *RankPvpReq) GetType() vars.RankType { @@ -1593,7 +1829,7 @@ type RankPvpResp struct { func (x *RankPvpResp) Reset() { *x = RankPvpResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[21] + mi := &file_user_center_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1606,7 +1842,7 @@ func (x *RankPvpResp) String() string { func (*RankPvpResp) ProtoMessage() {} func (x *RankPvpResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[21] + mi := &file_user_center_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1619,7 +1855,7 @@ func (x *RankPvpResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpResp.ProtoReflect.Descriptor instead. func (*RankPvpResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{21} + return file_user_center_proto_rawDescGZIP(), []int{23} } func (x *RankPvpResp) GetType() vars.RankType { @@ -1649,7 +1885,7 @@ type RankPvpSubmitReq struct { func (x *RankPvpSubmitReq) Reset() { *x = RankPvpSubmitReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[22] + mi := &file_user_center_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1662,7 +1898,7 @@ func (x *RankPvpSubmitReq) String() string { func (*RankPvpSubmitReq) ProtoMessage() {} func (x *RankPvpSubmitReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[22] + mi := &file_user_center_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1675,7 +1911,7 @@ func (x *RankPvpSubmitReq) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpSubmitReq.ProtoReflect.Descriptor instead. func (*RankPvpSubmitReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{22} + return file_user_center_proto_rawDescGZIP(), []int{24} } func (x *RankPvpSubmitReq) GetRankType() vars.RankType { @@ -1703,7 +1939,7 @@ type RankPvpSubmitResp struct { func (x *RankPvpSubmitResp) Reset() { *x = RankPvpSubmitResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[23] + mi := &file_user_center_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1716,7 +1952,7 @@ func (x *RankPvpSubmitResp) String() string { func (*RankPvpSubmitResp) ProtoMessage() {} func (x *RankPvpSubmitResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[23] + mi := &file_user_center_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1729,7 +1965,7 @@ func (x *RankPvpSubmitResp) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpSubmitResp.ProtoReflect.Descriptor instead. func (*RankPvpSubmitResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{23} + return file_user_center_proto_rawDescGZIP(), []int{25} } func (x *RankPvpSubmitResp) GetItems() []*RankPvpSubmitResp_Item { @@ -1754,7 +1990,7 @@ type UserRankReq struct { func (x *UserRankReq) Reset() { *x = UserRankReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[24] + mi := &file_user_center_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1767,7 +2003,7 @@ func (x *UserRankReq) String() string { func (*UserRankReq) ProtoMessage() {} func (x *UserRankReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[24] + mi := &file_user_center_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1780,7 +2016,7 @@ func (x *UserRankReq) ProtoReflect() protoreflect.Message { // Deprecated: Use UserRankReq.ProtoReflect.Descriptor instead. func (*UserRankReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{24} + return file_user_center_proto_rawDescGZIP(), []int{26} } func (x *UserRankReq) GetUserId() int64 { @@ -1822,7 +2058,7 @@ type UserRankResp struct { func (x *UserRankResp) Reset() { *x = UserRankResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[25] + mi := &file_user_center_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1835,7 +2071,7 @@ func (x *UserRankResp) String() string { func (*UserRankResp) ProtoMessage() {} func (x *UserRankResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[25] + mi := &file_user_center_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1848,7 +2084,7 @@ func (x *UserRankResp) ProtoReflect() protoreflect.Message { // Deprecated: Use UserRankResp.ProtoReflect.Descriptor instead. func (*UserRankResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{25} + return file_user_center_proto_rawDescGZIP(), []int{27} } func (x *UserRankResp) GetItems() []*UserRankResp_Item { @@ -1871,7 +2107,7 @@ type EliteReq struct { func (x *EliteReq) Reset() { *x = EliteReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[26] + mi := &file_user_center_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1884,7 +2120,7 @@ func (x *EliteReq) String() string { func (*EliteReq) ProtoMessage() {} func (x *EliteReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[26] + mi := &file_user_center_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1897,7 +2133,7 @@ func (x *EliteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use EliteReq.ProtoReflect.Descriptor instead. func (*EliteReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{26} + return file_user_center_proto_rawDescGZIP(), []int{28} } func (x *EliteReq) GetUserId() int64 { @@ -1928,7 +2164,7 @@ type GiveEliteReq struct { func (x *GiveEliteReq) Reset() { *x = GiveEliteReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[27] + mi := &file_user_center_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1941,7 +2177,7 @@ func (x *GiveEliteReq) String() string { func (*GiveEliteReq) ProtoMessage() {} func (x *GiveEliteReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[27] + mi := &file_user_center_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1954,7 +2190,7 @@ func (x *GiveEliteReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveEliteReq.ProtoReflect.Descriptor instead. func (*GiveEliteReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{27} + return file_user_center_proto_rawDescGZIP(), []int{29} } func (x *GiveEliteReq) GetUserId() int64 { @@ -1999,7 +2235,7 @@ type BuyEliteResp struct { func (x *BuyEliteResp) Reset() { *x = BuyEliteResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[28] + mi := &file_user_center_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2012,7 +2248,7 @@ func (x *BuyEliteResp) String() string { func (*BuyEliteResp) ProtoMessage() {} func (x *BuyEliteResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[28] + mi := &file_user_center_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2025,7 +2261,7 @@ func (x *BuyEliteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BuyEliteResp.ProtoReflect.Descriptor instead. func (*BuyEliteResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{28} + return file_user_center_proto_rawDescGZIP(), []int{30} } func (x *BuyEliteResp) GetUserId() int64 { @@ -2070,7 +2306,7 @@ type GiveTitleReq struct { func (x *GiveTitleReq) Reset() { *x = GiveTitleReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[29] + mi := &file_user_center_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2083,7 +2319,7 @@ func (x *GiveTitleReq) String() string { func (*GiveTitleReq) ProtoMessage() {} func (x *GiveTitleReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[29] + mi := &file_user_center_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2096,7 +2332,7 @@ func (x *GiveTitleReq) ProtoReflect() protoreflect.Message { // Deprecated: Use GiveTitleReq.ProtoReflect.Descriptor instead. func (*GiveTitleReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{29} + return file_user_center_proto_rawDescGZIP(), []int{31} } func (x *GiveTitleReq) GetUserId() int64 { @@ -2142,7 +2378,7 @@ type BuyTitleResp struct { func (x *BuyTitleResp) Reset() { *x = BuyTitleResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[30] + mi := &file_user_center_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2155,7 +2391,7 @@ func (x *BuyTitleResp) String() string { func (*BuyTitleResp) ProtoMessage() {} func (x *BuyTitleResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[30] + mi := &file_user_center_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2168,7 +2404,7 @@ func (x *BuyTitleResp) ProtoReflect() protoreflect.Message { // Deprecated: Use BuyTitleResp.ProtoReflect.Descriptor instead. func (*BuyTitleResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{30} + return file_user_center_proto_rawDescGZIP(), []int{32} } func (x *BuyTitleResp) GetUserId() int64 { @@ -2218,7 +2454,7 @@ type ChangeEliteResp struct { func (x *ChangeEliteResp) Reset() { *x = ChangeEliteResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[31] + mi := &file_user_center_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2231,7 +2467,7 @@ func (x *ChangeEliteResp) String() string { func (*ChangeEliteResp) ProtoMessage() {} func (x *ChangeEliteResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[31] + mi := &file_user_center_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2244,7 +2480,7 @@ func (x *ChangeEliteResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeEliteResp.ProtoReflect.Descriptor instead. func (*ChangeEliteResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{31} + return file_user_center_proto_rawDescGZIP(), []int{33} } func (x *ChangeEliteResp) GetUserId() int64 { @@ -2273,7 +2509,7 @@ type TitleReq struct { func (x *TitleReq) Reset() { *x = TitleReq{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[32] + mi := &file_user_center_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2286,7 +2522,7 @@ func (x *TitleReq) String() string { func (*TitleReq) ProtoMessage() {} func (x *TitleReq) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[32] + mi := &file_user_center_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2299,7 +2535,7 @@ func (x *TitleReq) ProtoReflect() protoreflect.Message { // Deprecated: Use TitleReq.ProtoReflect.Descriptor instead. func (*TitleReq) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{32} + return file_user_center_proto_rawDescGZIP(), []int{34} } func (x *TitleReq) GetUserId() int64 { @@ -2329,7 +2565,7 @@ type ChangeTitleResp struct { func (x *ChangeTitleResp) Reset() { *x = ChangeTitleResp{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[33] + mi := &file_user_center_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2342,7 +2578,7 @@ func (x *ChangeTitleResp) String() string { func (*ChangeTitleResp) ProtoMessage() {} func (x *ChangeTitleResp) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[33] + mi := &file_user_center_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2355,7 +2591,7 @@ func (x *ChangeTitleResp) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeTitleResp.ProtoReflect.Descriptor instead. func (*ChangeTitleResp) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{33} + return file_user_center_proto_rawDescGZIP(), []int{35} } func (x *ChangeTitleResp) GetUserId() int64 { @@ -2394,7 +2630,7 @@ type UserDetailsResp_TitleItem struct { func (x *UserDetailsResp_TitleItem) Reset() { *x = UserDetailsResp_TitleItem{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[34] + mi := &file_user_center_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2407,7 +2643,7 @@ func (x *UserDetailsResp_TitleItem) String() string { func (*UserDetailsResp_TitleItem) ProtoMessage() {} func (x *UserDetailsResp_TitleItem) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[34] + mi := &file_user_center_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2465,7 +2701,7 @@ type UserDetailsResp_EliteItem struct { func (x *UserDetailsResp_EliteItem) Reset() { *x = UserDetailsResp_EliteItem{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[35] + mi := &file_user_center_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2478,7 +2714,7 @@ func (x *UserDetailsResp_EliteItem) String() string { func (*UserDetailsResp_EliteItem) ProtoMessage() {} func (x *UserDetailsResp_EliteItem) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[35] + mi := &file_user_center_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2536,7 +2772,7 @@ type StatPvPReportReq_Item struct { func (x *StatPvPReportReq_Item) Reset() { *x = StatPvPReportReq_Item{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[36] + mi := &file_user_center_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2549,7 +2785,7 @@ func (x *StatPvPReportReq_Item) String() string { func (*StatPvPReportReq_Item) ProtoMessage() {} func (x *StatPvPReportReq_Item) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[36] + mi := &file_user_center_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2562,7 +2798,7 @@ func (x *StatPvPReportReq_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPvPReportReq_Item.ProtoReflect.Descriptor instead. func (*StatPvPReportReq_Item) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{14, 0} + return file_user_center_proto_rawDescGZIP(), []int{16, 0} } func (x *StatPvPReportReq_Item) GetUid() int64 { @@ -2651,12 +2887,16 @@ type StatPvPReportResp_Item struct { Uname string `protobuf:"bytes,2,opt,name=uname,proto3" json:"uname,omitempty"` // 用户名 Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` // 名次(特指在某一方的名次) Score float32 `protobuf:"fixed32,4,opt,name=score,proto3" json:"score,omitempty"` // 评分(一位小数) + // grade + Grade *Grade `protobuf:"bytes,5,opt,name=grade,proto3" json:"grade,omitempty"` + GradeResult StatPvPReportResp_GradeResult `protobuf:"varint,6,opt,name=gradeResult,proto3,enum=pb.StatPvPReportResp_GradeResult" json:"gradeResult,omitempty"` // 段位结果 + GradeReason StatPvPReportResp_GradeReason `protobuf:"varint,7,opt,name=gradeReason,proto3,enum=pb.StatPvPReportResp_GradeReason" json:"gradeReason,omitempty"` // 段位结果原因 } func (x *StatPvPReportResp_Item) Reset() { *x = StatPvPReportResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[37] + mi := &file_user_center_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2669,7 +2909,7 @@ func (x *StatPvPReportResp_Item) String() string { func (*StatPvPReportResp_Item) ProtoMessage() {} func (x *StatPvPReportResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[37] + mi := &file_user_center_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2682,7 +2922,7 @@ func (x *StatPvPReportResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPvPReportResp_Item.ProtoReflect.Descriptor instead. func (*StatPvPReportResp_Item) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{15, 0} + return file_user_center_proto_rawDescGZIP(), []int{17, 0} } func (x *StatPvPReportResp_Item) GetUid() int64 { @@ -2713,6 +2953,27 @@ func (x *StatPvPReportResp_Item) GetScore() float32 { return 0 } +func (x *StatPvPReportResp_Item) GetGrade() *Grade { + if x != nil { + return x.Grade + } + return nil +} + +func (x *StatPvPReportResp_Item) GetGradeResult() StatPvPReportResp_GradeResult { + if x != nil { + return x.GradeResult + } + return StatPvPReportResp_Keep +} + +func (x *StatPvPReportResp_Item) GetGradeReason() StatPvPReportResp_GradeReason { + if x != nil { + return x.GradeReason + } + return StatPvPReportResp_Win +} + type RankPvpResp_Item struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -2727,7 +2988,7 @@ type RankPvpResp_Item struct { func (x *RankPvpResp_Item) Reset() { *x = RankPvpResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[38] + mi := &file_user_center_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2740,7 +3001,7 @@ func (x *RankPvpResp_Item) String() string { func (*RankPvpResp_Item) ProtoMessage() {} func (x *RankPvpResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[38] + mi := &file_user_center_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2753,7 +3014,7 @@ func (x *RankPvpResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpResp_Item.ProtoReflect.Descriptor instead. func (*RankPvpResp_Item) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{21, 0} + return file_user_center_proto_rawDescGZIP(), []int{23, 0} } func (x *RankPvpResp_Item) GetUid() int64 { @@ -2799,7 +3060,7 @@ type RankPvpSubmitResp_Result struct { func (x *RankPvpSubmitResp_Result) Reset() { *x = RankPvpSubmitResp_Result{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[39] + mi := &file_user_center_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2812,7 +3073,7 @@ func (x *RankPvpSubmitResp_Result) String() string { func (*RankPvpSubmitResp_Result) ProtoMessage() {} func (x *RankPvpSubmitResp_Result) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[39] + mi := &file_user_center_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2825,7 +3086,7 @@ func (x *RankPvpSubmitResp_Result) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpSubmitResp_Result.ProtoReflect.Descriptor instead. func (*RankPvpSubmitResp_Result) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{23, 0} + return file_user_center_proto_rawDescGZIP(), []int{25, 0} } func (x *RankPvpSubmitResp_Result) GetUserId() int64 { @@ -2875,7 +3136,7 @@ type RankPvpSubmitResp_Item struct { func (x *RankPvpSubmitResp_Item) Reset() { *x = RankPvpSubmitResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[40] + mi := &file_user_center_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2888,7 +3149,7 @@ func (x *RankPvpSubmitResp_Item) String() string { func (*RankPvpSubmitResp_Item) ProtoMessage() {} func (x *RankPvpSubmitResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[40] + mi := &file_user_center_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2901,7 +3162,7 @@ func (x *RankPvpSubmitResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use RankPvpSubmitResp_Item.ProtoReflect.Descriptor instead. func (*RankPvpSubmitResp_Item) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{23, 1} + return file_user_center_proto_rawDescGZIP(), []int{25, 1} } func (x *RankPvpSubmitResp_Item) GetRankType() vars.RankType { @@ -2931,7 +3192,7 @@ type UserRankResp_Item struct { func (x *UserRankResp_Item) Reset() { *x = UserRankResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_user_center_proto_msgTypes[41] + mi := &file_user_center_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2944,7 +3205,7 @@ func (x *UserRankResp_Item) String() string { func (*UserRankResp_Item) ProtoMessage() {} func (x *UserRankResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_user_center_proto_msgTypes[41] + mi := &file_user_center_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2957,7 +3218,7 @@ func (x *UserRankResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use UserRankResp_Item.ProtoReflect.Descriptor instead. func (*UserRankResp_Item) Descriptor() ([]byte, []int) { - return file_user_center_proto_rawDescGZIP(), []int{25, 0} + return file_user_center_proto_rawDescGZIP(), []int{27, 0} } func (x *UserRankResp_Item) GetRankType() vars.RankType { @@ -3123,261 +3384,296 @@ var file_user_center_proto_rawDesc = []byte{ 0x1c, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xff, 0x03, 0x0a, 0x10, 0x53, 0x74, 0x61, 0x74, - 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, - 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, - 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, - 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0a, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, - 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, - 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x09, 0x6c, 0x6f, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, - 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, - 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, - 0x6d, 0x73, 0x1a, 0xc4, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x75, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, - 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, - 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, - 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, - 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x69, 0x6c, 0x6c, 0x55, - 0x6e, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6b, 0x69, 0x6c, 0x6c, 0x55, - 0x6e, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x55, 0x6e, 0x69, - 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x55, - 0x6e, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x6f, - 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, - 0x6f, 0x6f, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, - 0x6f, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x46, 0x69, 0x72, - 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6b, 0x69, 0x6c, 0x6c, 0x50, - 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x6b, 0x69, 0x6c, - 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x4b, 0x69, 0x6c, - 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, - 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, - 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, - 0x69, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x22, 0x9d, 0x02, 0x0a, 0x11, 0x53, 0x74, - 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x67, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, + 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, + 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, + 0x22, 0x48, 0x0a, 0x0d, 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x05, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x22, 0xff, 0x03, 0x0a, 0x10, 0x53, + 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x62, 0x61, 0x74, - 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, - 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x38, 0x0a, - 0x09, 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, - 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6c, 0x6f, - 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x60, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, - 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x70, 0x0a, 0x0c, 0x47, 0x69, 0x66, - 0x74, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, - 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x61, 0x6d, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x55, 0x0a, 0x0f, 0x44, - 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x10, + 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, + 0x65, 0x6d, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x37, 0x0a, 0x09, + 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, + 0x72, 0x74, 0x52, 0x65, 0x71, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6c, 0x6f, 0x73, 0x74, + 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0xc4, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x69, 0x66, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x69, 0x66, 0x74, 0x54, 0x79, - 0x70, 0x65, 0x22, 0x60, 0x0a, 0x10, 0x44, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, - 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, - 0x62, 0x2e, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, - 0x69, 0x74, 0x65, 0x6d, 0x22, 0x56, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, - 0x57, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, + 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, + 0x0a, 0x08, 0x64, 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x08, 0x64, 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x69, + 0x6c, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x6b, 0x69, + 0x6c, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, + 0x55, 0x6e, 0x69, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x64, 0x65, 0x4b, 0x69, + 0x6c, 0x6c, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x66, 0x69, 0x72, 0x73, 0x74, 0x42, + 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, 0x46, 0x69, 0x72, 0x73, + 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, + 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x6b, 0x69, + 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, + 0x6b, 0x69, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x65, + 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1c, + 0x0a, 0x09, 0x69, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x09, 0x69, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x22, 0xe6, 0x04, 0x0a, + 0x11, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, + 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, + 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x08, 0x77, 0x69, 0x6e, 0x49, + 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x77, 0x69, 0x6e, 0x49, 0x74, 0x65, 0x6d, 0x73, + 0x12, 0x38, 0x0a, 0x09, 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x0b, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, + 0x09, 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x8b, 0x02, 0x0a, 0x04, 0x49, + 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1f, 0x0a, + 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x70, + 0x62, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x43, + 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, + 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, + 0x75, 0x6c, 0x74, 0x12, 0x43, 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, + 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0b, 0x67, 0x72, 0x61, + 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, + 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x65, 0x65, 0x70, 0x10, + 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x64, 0x65, 0x55, 0x70, 0x10, 0x01, 0x12, 0x0b, + 0x0a, 0x07, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53, + 0x74, 0x61, 0x72, 0x55, 0x70, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x72, 0x61, 0x64, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x44, + 0x6f, 0x77, 0x6e, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x72, 0x44, 0x6f, 0x77, + 0x6e, 0x10, 0x06, 0x22, 0x30, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, + 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x57, 0x69, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4c, + 0x6f, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x10, 0x02, 0x22, 0x70, 0x0a, 0x0c, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, + 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x22, 0x55, 0x0a, 0x0f, 0x44, 0x72, 0x61, 0x77, 0x47, + 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x07, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x22, 0x47, 0x0a, 0x0a, - 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x71, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, + 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x69, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x67, 0x69, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x60, + 0x0a, 0x10, 0x44, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x04, 0x69, 0x74, + 0x65, 0x6d, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x69, + 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, + 0x22, 0x56, 0x0a, 0x12, 0x49, 0x6e, 0x63, 0x72, 0x65, 0x61, 0x73, 0x65, 0x57, 0x65, 0x6c, 0x66, + 0x61, 0x72, 0x65, 0x52, 0x65, 0x71, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, + 0x0a, 0x07, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x07, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x22, 0x47, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, + 0x50, 0x76, 0x70, 0x52, 0x65, 0x71, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, + 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x6f, 0x70, + 0x4e, 0x22, 0xbe, 0x01, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, + 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, + 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, + 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, + 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, + 0x61, 0x72, 0x22, 0x63, 0x0a, 0x10, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, + 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, - 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x04, 0x74, 0x6f, 0x70, 0x4e, 0x22, 0xbe, 0x01, 0x0a, 0x0b, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, - 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, - 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5c, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, - 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, - 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, - 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0x63, 0x0a, 0x10, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, - 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, - 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, - 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, - 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, - 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, - 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb4, 0x02, 0x0a, 0x11, - 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x12, 0x30, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, - 0x65, 0x6d, 0x73, 0x1a, 0x7e, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, - 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x69, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x69, - 0x74, 0x6c, 0x65, 0x1a, 0x6d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x08, 0x72, - 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, - 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, - 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x73, 0x22, 0x92, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, - 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x6b, - 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x52, - 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, - 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x5d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, - 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, - 0x70, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, - 0x63, 0x6f, 0x72, 0x65, 0x22, 0x36, 0x0a, 0x08, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x76, 0x0a, 0x0c, - 0x47, 0x69, 0x76, 0x65, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, + 0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x22, 0xb4, 0x02, 0x0a, 0x11, 0x52, 0x61, 0x6e, 0x6b, + 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, + 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x70, + 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, + 0x7e, 0x0a, 0x06, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, + 0x06, 0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x61, + 0x76, 0x61, 0x74, 0x61, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x1a, + 0x6d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, + 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x61, + 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, + 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x52, + 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x92, + 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x12, 0x16, + 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, + 0x6d, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, + 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x6c, 0x6c, 0x52, 0x61, 0x6e, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x22, 0x9a, 0x01, 0x0a, 0x0c, 0x55, 0x73, 0x65, 0x72, 0x52, 0x61, 0x6e, 0x6b, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2b, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x61, 0x6e, + 0x6b, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, + 0x73, 0x1a, 0x5d, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x2d, 0x0a, 0x08, 0x72, 0x61, 0x6e, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x70, 0x62, + 0x2e, 0x76, 0x61, 0x72, 0x73, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, + 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x70, 0x6f, 0x73, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x70, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, + 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x22, 0x36, 0x0a, 0x08, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, - 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, - 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x6f, - 0x72, 0x65, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, - 0x65, 0x76, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x0c, 0x42, 0x75, 0x79, 0x45, 0x6c, 0x69, 0x74, 0x65, + 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x69, 0x76, 0x65, + 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, + 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, + 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, + 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, + 0x22, 0x70, 0x0a, 0x0c, 0x42, 0x75, 0x79, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, + 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, + 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, + 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x69, 0x76, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x18, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x22, 0x84, 0x01, 0x0a, 0x0c, 0x42, + 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, + 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x65, - 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x76, 0x0a, 0x0c, 0x47, 0x69, 0x76, 0x65, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, - 0x0a, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x66, 0x6f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x22, 0x84, - 0x01, 0x0a, 0x0c, 0x42, 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, - 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, - 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, - 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x43, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, - 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x08, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, - 0x72, 0x74, 0x22, 0x57, 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x28, 0x0a, 0x08, 0x47, - 0x69, 0x66, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x65, 0x72, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x73, 0x69, 0x73, 0x74, 0x65, - 0x6e, 0x63, 0x65, 0x10, 0x01, 0x32, 0xaf, 0x08, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x65, - 0x6e, 0x74, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, - 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x70, + 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x36, 0x0a, 0x08, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, + 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x22, 0x57, + 0x0a, 0x0f, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x74, + 0x6c, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, 0x6c, + 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x2a, 0x28, 0x0a, 0x08, 0x47, 0x69, 0x66, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x72, 0x10, 0x00, + 0x12, 0x0f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x73, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x63, 0x65, 0x10, + 0x01, 0x32, 0xe1, 0x08, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x43, 0x65, 0x6e, 0x74, 0x65, 0x72, + 0x12, 0x41, 0x0a, 0x14, 0x72, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x50, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, + 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0e, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x44, 0x65, + 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, 0x0f, 0x67, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x79, 0x50, 0x55, 0x69, 0x64, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, - 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, - 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x12, 0x34, 0x0a, 0x0e, 0x67, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x12, 0x36, 0x0a, - 0x0f, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x42, 0x79, 0x50, 0x55, 0x69, 0x64, - 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x12, 0x31, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x49, 0x6e, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x52, 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x49, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, - 0x67, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x31, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, - 0x6f, 0x69, 0x6e, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, - 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, - 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x66, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x17, 0x2e, 0x70, 0x62, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, - 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, - 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, - 0x0a, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x66, 0x74, 0x12, 0x13, - 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x66, 0x74, - 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x34, - 0x0a, 0x0f, 0x75, 0x73, 0x65, 0x72, 0x42, 0x75, 0x79, 0x4e, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, - 0x79, 0x12, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x79, 0x4e, 0x6f, - 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x50, 0x76, 0x70, 0x52, - 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, - 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x12, 0x39, 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, - 0x63, 0x6b, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, - 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x61, - 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, - 0x07, 0x72, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, - 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x61, 0x6e, - 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, - 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, - 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, - 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x52, - 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x09, 0x67, 0x69, 0x76, - 0x65, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x69, 0x76, 0x65, - 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, - 0x79, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x62, 0x75, - 0x79, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6c, 0x69, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x45, 0x6c, 0x69, - 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x09, 0x67, 0x69, 0x76, 0x65, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x69, 0x76, 0x65, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x62, 0x75, 0x79, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, - 0x74, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, - 0x69, 0x74, 0x6c, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, - 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x71, 0x1a, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x31, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, + 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, + 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x49, 0x6e, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x69, 0x6e, 0x12, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x43, 0x6f, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x31, 0x0a, 0x0b, 0x67, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, + 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x13, + 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x45, 0x0a, 0x10, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x17, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, + 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, + 0x1a, 0x18, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x55, 0x73, + 0x65, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2e, 0x0a, 0x0c, 0x75, 0x73, + 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x66, 0x74, 0x12, 0x13, 0x2e, 0x70, 0x62, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x69, 0x66, 0x74, 0x52, 0x65, 0x71, 0x1a, + 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x0f, 0x75, 0x73, + 0x65, 0x72, 0x42, 0x75, 0x79, 0x4e, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x2e, + 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x42, 0x75, 0x79, 0x4e, 0x6f, 0x62, 0x69, 0x6c, 0x69, + 0x74, 0x79, 0x52, 0x65, 0x71, 0x1a, 0x09, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x12, 0x3c, 0x0a, 0x0d, 0x73, 0x74, 0x61, 0x74, 0x50, 0x76, 0x70, 0x52, 0x65, 0x70, 0x6f, 0x72, + 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, + 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, 0x2e, 0x70, 0x62, 0x2e, 0x53, 0x74, 0x61, + 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x39, + 0x0a, 0x0c, 0x64, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x12, 0x13, + 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, 0x74, 0x50, 0x61, 0x63, 0x6b, + 0x52, 0x65, 0x71, 0x1a, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x47, 0x69, 0x66, + 0x74, 0x50, 0x61, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0c, 0x67, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, 0x0d, 0x2e, 0x70, 0x62, 0x2e, 0x55, + 0x73, 0x65, 0x72, 0x49, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, + 0x65, 0x72, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x07, 0x72, + 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x12, 0x0e, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x50, 0x76, 0x70, 0x52, 0x65, 0x71, 0x1a, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, + 0x50, 0x76, 0x70, 0x52, 0x65, 0x73, 0x70, 0x12, 0x3c, 0x0a, 0x0d, 0x72, 0x61, 0x6e, 0x6b, 0x50, + 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, + 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x71, 0x1a, 0x15, + 0x2e, 0x70, 0x62, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x50, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x52, 0x61, 0x6e, + 0x6b, 0x50, 0x76, 0x70, 0x12, 0x0f, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x61, + 0x6e, 0x6b, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, + 0x61, 0x6e, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x09, 0x67, 0x69, 0x76, 0x65, 0x45, + 0x6c, 0x69, 0x74, 0x65, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x69, 0x76, 0x65, 0x45, 0x6c, + 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x45, + 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x62, 0x75, 0x79, 0x45, + 0x6c, 0x69, 0x74, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x45, 0x6c, 0x69, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x12, 0x2f, 0x0a, 0x09, 0x67, 0x69, 0x76, 0x65, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x47, 0x69, 0x76, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x12, 0x2a, 0x0a, 0x08, 0x62, 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x1a, + 0x10, 0x2e, 0x70, 0x62, 0x2e, 0x42, 0x75, 0x79, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, 0x74, 0x65, + 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, 0x65, 0x71, 0x1a, 0x13, + 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x30, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x0c, 0x2e, 0x70, 0x62, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x71, + 0x1a, 0x13, 0x2e, 0x70, 0x62, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3392,121 +3688,131 @@ func file_user_center_proto_rawDescGZIP() []byte { return file_user_center_proto_rawDescData } -var file_user_center_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_user_center_proto_msgTypes = make([]protoimpl.MessageInfo, 42) +var file_user_center_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_user_center_proto_msgTypes = make([]protoimpl.MessageInfo, 44) var file_user_center_proto_goTypes = []interface{}{ - (GiftType)(0), // 0: pb.GiftType - (*Empty)(nil), // 1: pb.Empty - (*Response)(nil), // 2: pb.Response - (*PlatformUserReq)(nil), // 3: pb.PlatformUserReq - (*PlatformUserResp)(nil), // 4: pb.PlatformUserResp - (*UserDetailsResp)(nil), // 5: pb.UserDetailsResp - (*UserIdReq)(nil), // 6: pb.UserIdReq - (*UserIdResp)(nil), // 7: pb.UserIdResp - (*GetUserCoinResp)(nil), // 8: pb.GetUserCoinResp - (*ChangeCoinReq)(nil), // 9: pb.ChangeCoinReq - (*TransferUserCoinReq)(nil), // 10: pb.TransferUserCoinReq - (*TransferUserCoinResp)(nil), // 11: pb.TransferUserCoinResp - (*UserCheckInResp)(nil), // 12: pb.UserCheckInResp - (*UserSendGiftReq)(nil), // 13: pb.UserSendGiftReq - (*UserBuyNobilityReq)(nil), // 14: pb.UserBuyNobilityReq - (*StatPvPReportReq)(nil), // 15: pb.StatPvPReportReq - (*StatPvPReportResp)(nil), // 16: pb.StatPvPReportResp - (*GiftPackItem)(nil), // 17: pb.GiftPackItem - (*DrawGiftPackReq)(nil), // 18: pb.DrawGiftPackReq - (*DrawGiftPackResp)(nil), // 19: pb.DrawGiftPackResp - (*IncreaseWelfareReq)(nil), // 20: pb.IncreaseWelfareReq - (*RankPvpReq)(nil), // 21: pb.RankPvpReq - (*RankPvpResp)(nil), // 22: pb.RankPvpResp - (*RankPvpSubmitReq)(nil), // 23: pb.RankPvpSubmitReq - (*RankPvpSubmitResp)(nil), // 24: pb.RankPvpSubmitResp - (*UserRankReq)(nil), // 25: pb.UserRankReq - (*UserRankResp)(nil), // 26: pb.UserRankResp - (*EliteReq)(nil), // 27: pb.EliteReq - (*GiveEliteReq)(nil), // 28: pb.GiveEliteReq - (*BuyEliteResp)(nil), // 29: pb.BuyEliteResp - (*GiveTitleReq)(nil), // 30: pb.GiveTitleReq - (*BuyTitleResp)(nil), // 31: pb.BuyTitleResp - (*ChangeEliteResp)(nil), // 32: pb.ChangeEliteResp - (*TitleReq)(nil), // 33: pb.TitleReq - (*ChangeTitleResp)(nil), // 34: pb.ChangeTitleResp - (*UserDetailsResp_TitleItem)(nil), // 35: pb.UserDetailsResp.TitleItem - (*UserDetailsResp_EliteItem)(nil), // 36: pb.UserDetailsResp.EliteItem - (*StatPvPReportReq_Item)(nil), // 37: pb.StatPvPReportReq.Item - (*StatPvPReportResp_Item)(nil), // 38: pb.StatPvPReportResp.Item - (*RankPvpResp_Item)(nil), // 39: pb.RankPvpResp.Item - (*RankPvpSubmitResp_Result)(nil), // 40: pb.RankPvpSubmitResp.Result - (*RankPvpSubmitResp_Item)(nil), // 41: pb.RankPvpSubmitResp.Item - (*UserRankResp_Item)(nil), // 42: pb.UserRankResp.Item - (vars.UserCoinChangedReason)(0), // 43: pb.vars.UserCoinChangedReason - (vars.RankType)(0), // 44: pb.vars.RankType + (GiftType)(0), // 0: pb.GiftType + (StatPvPReportResp_GradeResult)(0), // 1: pb.StatPvPReportResp.GradeResult + (StatPvPReportResp_GradeReason)(0), // 2: pb.StatPvPReportResp.GradeReason + (*Empty)(nil), // 3: pb.Empty + (*Response)(nil), // 4: pb.Response + (*PlatformUserReq)(nil), // 5: pb.PlatformUserReq + (*PlatformUserResp)(nil), // 6: pb.PlatformUserResp + (*UserDetailsResp)(nil), // 7: pb.UserDetailsResp + (*UserIdReq)(nil), // 8: pb.UserIdReq + (*UserIdResp)(nil), // 9: pb.UserIdResp + (*GetUserCoinResp)(nil), // 10: pb.GetUserCoinResp + (*ChangeCoinReq)(nil), // 11: pb.ChangeCoinReq + (*TransferUserCoinReq)(nil), // 12: pb.TransferUserCoinReq + (*TransferUserCoinResp)(nil), // 13: pb.TransferUserCoinResp + (*UserCheckInResp)(nil), // 14: pb.UserCheckInResp + (*UserSendGiftReq)(nil), // 15: pb.UserSendGiftReq + (*UserBuyNobilityReq)(nil), // 16: pb.UserBuyNobilityReq + (*Grade)(nil), // 17: pb.Grade + (*UserGradeResp)(nil), // 18: pb.UserGradeResp + (*StatPvPReportReq)(nil), // 19: pb.StatPvPReportReq + (*StatPvPReportResp)(nil), // 20: pb.StatPvPReportResp + (*GiftPackItem)(nil), // 21: pb.GiftPackItem + (*DrawGiftPackReq)(nil), // 22: pb.DrawGiftPackReq + (*DrawGiftPackResp)(nil), // 23: pb.DrawGiftPackResp + (*IncreaseWelfareReq)(nil), // 24: pb.IncreaseWelfareReq + (*RankPvpReq)(nil), // 25: pb.RankPvpReq + (*RankPvpResp)(nil), // 26: pb.RankPvpResp + (*RankPvpSubmitReq)(nil), // 27: pb.RankPvpSubmitReq + (*RankPvpSubmitResp)(nil), // 28: pb.RankPvpSubmitResp + (*UserRankReq)(nil), // 29: pb.UserRankReq + (*UserRankResp)(nil), // 30: pb.UserRankResp + (*EliteReq)(nil), // 31: pb.EliteReq + (*GiveEliteReq)(nil), // 32: pb.GiveEliteReq + (*BuyEliteResp)(nil), // 33: pb.BuyEliteResp + (*GiveTitleReq)(nil), // 34: pb.GiveTitleReq + (*BuyTitleResp)(nil), // 35: pb.BuyTitleResp + (*ChangeEliteResp)(nil), // 36: pb.ChangeEliteResp + (*TitleReq)(nil), // 37: pb.TitleReq + (*ChangeTitleResp)(nil), // 38: pb.ChangeTitleResp + (*UserDetailsResp_TitleItem)(nil), // 39: pb.UserDetailsResp.TitleItem + (*UserDetailsResp_EliteItem)(nil), // 40: pb.UserDetailsResp.EliteItem + (*StatPvPReportReq_Item)(nil), // 41: pb.StatPvPReportReq.Item + (*StatPvPReportResp_Item)(nil), // 42: pb.StatPvPReportResp.Item + (*RankPvpResp_Item)(nil), // 43: pb.RankPvpResp.Item + (*RankPvpSubmitResp_Result)(nil), // 44: pb.RankPvpSubmitResp.Result + (*RankPvpSubmitResp_Item)(nil), // 45: pb.RankPvpSubmitResp.Item + (*UserRankResp_Item)(nil), // 46: pb.UserRankResp.Item + (vars.UserCoinChangedReason)(0), // 47: pb.vars.UserCoinChangedReason + (vars.RankType)(0), // 48: pb.vars.RankType } var file_user_center_proto_depIdxs = []int32{ - 35, // 0: pb.UserDetailsResp.currentTitle:type_name -> pb.UserDetailsResp.TitleItem - 36, // 1: pb.UserDetailsResp.currentElite:type_name -> pb.UserDetailsResp.EliteItem - 35, // 2: pb.UserDetailsResp.titles:type_name -> pb.UserDetailsResp.TitleItem - 36, // 3: pb.UserDetailsResp.elites:type_name -> pb.UserDetailsResp.EliteItem - 43, // 4: pb.ChangeCoinReq.reason:type_name -> pb.vars.UserCoinChangedReason - 37, // 5: pb.StatPvPReportReq.winItems:type_name -> pb.StatPvPReportReq.Item - 37, // 6: pb.StatPvPReportReq.lostItems:type_name -> pb.StatPvPReportReq.Item - 38, // 7: pb.StatPvPReportResp.winItems:type_name -> pb.StatPvPReportResp.Item - 38, // 8: pb.StatPvPReportResp.lostItems:type_name -> pb.StatPvPReportResp.Item - 17, // 9: pb.DrawGiftPackResp.item:type_name -> pb.GiftPackItem - 44, // 10: pb.RankPvpReq.type:type_name -> pb.vars.RankType - 44, // 11: pb.RankPvpResp.type:type_name -> pb.vars.RankType - 39, // 12: pb.RankPvpResp.items:type_name -> pb.RankPvpResp.Item - 44, // 13: pb.RankPvpSubmitReq.rankType:type_name -> pb.vars.RankType - 41, // 14: pb.RankPvpSubmitResp.items:type_name -> pb.RankPvpSubmitResp.Item - 44, // 15: pb.UserRankReq.rankType:type_name -> pb.vars.RankType - 42, // 16: pb.UserRankResp.items:type_name -> pb.UserRankResp.Item - 44, // 17: pb.RankPvpSubmitResp.Item.rankType:type_name -> pb.vars.RankType - 40, // 18: pb.RankPvpSubmitResp.Item.results:type_name -> pb.RankPvpSubmitResp.Result - 44, // 19: pb.UserRankResp.Item.rankType:type_name -> pb.vars.RankType - 3, // 20: pb.userCenter.retrievePlatformUser:input_type -> pb.PlatformUserReq - 6, // 21: pb.userCenter.getUserDetails:input_type -> pb.UserIdReq - 3, // 22: pb.userCenter.getUserIdByPUid:input_type -> pb.PlatformUserReq - 6, // 23: pb.userCenter.userCheckIn:input_type -> pb.UserIdReq - 9, // 24: pb.userCenter.changeCoin:input_type -> pb.ChangeCoinReq - 6, // 25: pb.userCenter.getUserCoin:input_type -> pb.UserIdReq - 10, // 26: pb.userCenter.transferUserCoin:input_type -> pb.TransferUserCoinReq - 13, // 27: pb.userCenter.userSendGift:input_type -> pb.UserSendGiftReq - 14, // 28: pb.userCenter.userBuyNobility:input_type -> pb.UserBuyNobilityReq - 15, // 29: pb.userCenter.statPvpReport:input_type -> pb.StatPvPReportReq - 18, // 30: pb.userCenter.drawGiftPack:input_type -> pb.DrawGiftPackReq - 21, // 31: pb.userCenter.rankPvp:input_type -> pb.RankPvpReq - 23, // 32: pb.userCenter.rankPvpSubmit:input_type -> pb.RankPvpSubmitReq - 25, // 33: pb.userCenter.userRankPvp:input_type -> pb.UserRankReq - 28, // 34: pb.userCenter.giveElite:input_type -> pb.GiveEliteReq - 27, // 35: pb.userCenter.buyElite:input_type -> pb.EliteReq - 30, // 36: pb.userCenter.giveTitle:input_type -> pb.GiveTitleReq - 33, // 37: pb.userCenter.buyTitle:input_type -> pb.TitleReq - 27, // 38: pb.userCenter.changeElite:input_type -> pb.EliteReq - 33, // 39: pb.userCenter.changeTitle:input_type -> pb.TitleReq - 4, // 40: pb.userCenter.retrievePlatformUser:output_type -> pb.PlatformUserResp - 5, // 41: pb.userCenter.getUserDetails:output_type -> pb.UserDetailsResp - 7, // 42: pb.userCenter.getUserIdByPUid:output_type -> pb.UserIdResp - 12, // 43: pb.userCenter.userCheckIn:output_type -> pb.UserCheckInResp - 1, // 44: pb.userCenter.changeCoin:output_type -> pb.Empty - 8, // 45: pb.userCenter.getUserCoin:output_type -> pb.GetUserCoinResp - 11, // 46: pb.userCenter.transferUserCoin:output_type -> pb.TransferUserCoinResp - 1, // 47: pb.userCenter.userSendGift:output_type -> pb.Empty - 1, // 48: pb.userCenter.userBuyNobility:output_type -> pb.Empty - 16, // 49: pb.userCenter.statPvpReport:output_type -> pb.StatPvPReportResp - 19, // 50: pb.userCenter.drawGiftPack:output_type -> pb.DrawGiftPackResp - 22, // 51: pb.userCenter.rankPvp:output_type -> pb.RankPvpResp - 24, // 52: pb.userCenter.rankPvpSubmit:output_type -> pb.RankPvpSubmitResp - 26, // 53: pb.userCenter.userRankPvp:output_type -> pb.UserRankResp - 29, // 54: pb.userCenter.giveElite:output_type -> pb.BuyEliteResp - 29, // 55: pb.userCenter.buyElite:output_type -> pb.BuyEliteResp - 31, // 56: pb.userCenter.giveTitle:output_type -> pb.BuyTitleResp - 31, // 57: pb.userCenter.buyTitle:output_type -> pb.BuyTitleResp - 32, // 58: pb.userCenter.changeElite:output_type -> pb.ChangeEliteResp - 34, // 59: pb.userCenter.changeTitle:output_type -> pb.ChangeTitleResp - 40, // [40:60] is the sub-list for method output_type - 20, // [20:40] is the sub-list for method input_type - 20, // [20:20] is the sub-list for extension type_name - 20, // [20:20] is the sub-list for extension extendee - 0, // [0:20] is the sub-list for field type_name + 39, // 0: pb.UserDetailsResp.currentTitle:type_name -> pb.UserDetailsResp.TitleItem + 40, // 1: pb.UserDetailsResp.currentElite:type_name -> pb.UserDetailsResp.EliteItem + 39, // 2: pb.UserDetailsResp.titles:type_name -> pb.UserDetailsResp.TitleItem + 40, // 3: pb.UserDetailsResp.elites:type_name -> pb.UserDetailsResp.EliteItem + 47, // 4: pb.ChangeCoinReq.reason:type_name -> pb.vars.UserCoinChangedReason + 17, // 5: pb.UserGradeResp.grade:type_name -> pb.Grade + 41, // 6: pb.StatPvPReportReq.winItems:type_name -> pb.StatPvPReportReq.Item + 41, // 7: pb.StatPvPReportReq.lostItems:type_name -> pb.StatPvPReportReq.Item + 42, // 8: pb.StatPvPReportResp.winItems:type_name -> pb.StatPvPReportResp.Item + 42, // 9: pb.StatPvPReportResp.lostItems:type_name -> pb.StatPvPReportResp.Item + 21, // 10: pb.DrawGiftPackResp.item:type_name -> pb.GiftPackItem + 48, // 11: pb.RankPvpReq.type:type_name -> pb.vars.RankType + 48, // 12: pb.RankPvpResp.type:type_name -> pb.vars.RankType + 43, // 13: pb.RankPvpResp.items:type_name -> pb.RankPvpResp.Item + 48, // 14: pb.RankPvpSubmitReq.rankType:type_name -> pb.vars.RankType + 45, // 15: pb.RankPvpSubmitResp.items:type_name -> pb.RankPvpSubmitResp.Item + 48, // 16: pb.UserRankReq.rankType:type_name -> pb.vars.RankType + 46, // 17: pb.UserRankResp.items:type_name -> pb.UserRankResp.Item + 17, // 18: pb.StatPvPReportResp.Item.grade:type_name -> pb.Grade + 1, // 19: pb.StatPvPReportResp.Item.gradeResult:type_name -> pb.StatPvPReportResp.GradeResult + 2, // 20: pb.StatPvPReportResp.Item.gradeReason:type_name -> pb.StatPvPReportResp.GradeReason + 48, // 21: pb.RankPvpSubmitResp.Item.rankType:type_name -> pb.vars.RankType + 44, // 22: pb.RankPvpSubmitResp.Item.results:type_name -> pb.RankPvpSubmitResp.Result + 48, // 23: pb.UserRankResp.Item.rankType:type_name -> pb.vars.RankType + 5, // 24: pb.userCenter.retrievePlatformUser:input_type -> pb.PlatformUserReq + 8, // 25: pb.userCenter.getUserDetails:input_type -> pb.UserIdReq + 5, // 26: pb.userCenter.getUserIdByPUid:input_type -> pb.PlatformUserReq + 8, // 27: pb.userCenter.userCheckIn:input_type -> pb.UserIdReq + 11, // 28: pb.userCenter.changeCoin:input_type -> pb.ChangeCoinReq + 8, // 29: pb.userCenter.getUserCoin:input_type -> pb.UserIdReq + 12, // 30: pb.userCenter.transferUserCoin:input_type -> pb.TransferUserCoinReq + 15, // 31: pb.userCenter.userSendGift:input_type -> pb.UserSendGiftReq + 16, // 32: pb.userCenter.userBuyNobility:input_type -> pb.UserBuyNobilityReq + 19, // 33: pb.userCenter.statPvpReport:input_type -> pb.StatPvPReportReq + 22, // 34: pb.userCenter.drawGiftPack:input_type -> pb.DrawGiftPackReq + 8, // 35: pb.userCenter.getUserGrade:input_type -> pb.UserIdReq + 25, // 36: pb.userCenter.rankPvp:input_type -> pb.RankPvpReq + 27, // 37: pb.userCenter.rankPvpSubmit:input_type -> pb.RankPvpSubmitReq + 29, // 38: pb.userCenter.userRankPvp:input_type -> pb.UserRankReq + 32, // 39: pb.userCenter.giveElite:input_type -> pb.GiveEliteReq + 31, // 40: pb.userCenter.buyElite:input_type -> pb.EliteReq + 34, // 41: pb.userCenter.giveTitle:input_type -> pb.GiveTitleReq + 37, // 42: pb.userCenter.buyTitle:input_type -> pb.TitleReq + 31, // 43: pb.userCenter.changeElite:input_type -> pb.EliteReq + 37, // 44: pb.userCenter.changeTitle:input_type -> pb.TitleReq + 6, // 45: pb.userCenter.retrievePlatformUser:output_type -> pb.PlatformUserResp + 7, // 46: pb.userCenter.getUserDetails:output_type -> pb.UserDetailsResp + 9, // 47: pb.userCenter.getUserIdByPUid:output_type -> pb.UserIdResp + 14, // 48: pb.userCenter.userCheckIn:output_type -> pb.UserCheckInResp + 3, // 49: pb.userCenter.changeCoin:output_type -> pb.Empty + 10, // 50: pb.userCenter.getUserCoin:output_type -> pb.GetUserCoinResp + 13, // 51: pb.userCenter.transferUserCoin:output_type -> pb.TransferUserCoinResp + 3, // 52: pb.userCenter.userSendGift:output_type -> pb.Empty + 3, // 53: pb.userCenter.userBuyNobility:output_type -> pb.Empty + 20, // 54: pb.userCenter.statPvpReport:output_type -> pb.StatPvPReportResp + 23, // 55: pb.userCenter.drawGiftPack:output_type -> pb.DrawGiftPackResp + 18, // 56: pb.userCenter.getUserGrade:output_type -> pb.UserGradeResp + 26, // 57: pb.userCenter.rankPvp:output_type -> pb.RankPvpResp + 28, // 58: pb.userCenter.rankPvpSubmit:output_type -> pb.RankPvpSubmitResp + 30, // 59: pb.userCenter.userRankPvp:output_type -> pb.UserRankResp + 33, // 60: pb.userCenter.giveElite:output_type -> pb.BuyEliteResp + 33, // 61: pb.userCenter.buyElite:output_type -> pb.BuyEliteResp + 35, // 62: pb.userCenter.giveTitle:output_type -> pb.BuyTitleResp + 35, // 63: pb.userCenter.buyTitle:output_type -> pb.BuyTitleResp + 36, // 64: pb.userCenter.changeElite:output_type -> pb.ChangeEliteResp + 38, // 65: pb.userCenter.changeTitle:output_type -> pb.ChangeTitleResp + 45, // [45:66] is the sub-list for method output_type + 24, // [24:45] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_user_center_proto_init() } @@ -3684,7 +3990,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPvPReportReq); i { + switch v := v.(*Grade); i { case 0: return &v.state case 1: @@ -3696,7 +4002,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPvPReportResp); i { + switch v := v.(*UserGradeResp); i { case 0: return &v.state case 1: @@ -3708,7 +4014,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GiftPackItem); i { + switch v := v.(*StatPvPReportReq); i { case 0: return &v.state case 1: @@ -3720,7 +4026,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DrawGiftPackReq); i { + switch v := v.(*StatPvPReportResp); i { case 0: return &v.state case 1: @@ -3732,7 +4038,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DrawGiftPackResp); i { + switch v := v.(*GiftPackItem); i { case 0: return &v.state case 1: @@ -3744,7 +4050,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IncreaseWelfareReq); i { + switch v := v.(*DrawGiftPackReq); i { case 0: return &v.state case 1: @@ -3756,7 +4062,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpReq); i { + switch v := v.(*DrawGiftPackResp); i { case 0: return &v.state case 1: @@ -3768,7 +4074,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpResp); i { + switch v := v.(*IncreaseWelfareReq); i { case 0: return &v.state case 1: @@ -3780,7 +4086,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpSubmitReq); i { + switch v := v.(*RankPvpReq); i { case 0: return &v.state case 1: @@ -3792,7 +4098,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpSubmitResp); i { + switch v := v.(*RankPvpResp); i { case 0: return &v.state case 1: @@ -3804,7 +4110,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserRankReq); i { + switch v := v.(*RankPvpSubmitReq); i { case 0: return &v.state case 1: @@ -3816,7 +4122,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserRankResp); i { + switch v := v.(*RankPvpSubmitResp); i { case 0: return &v.state case 1: @@ -3828,7 +4134,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EliteReq); i { + switch v := v.(*UserRankReq); i { case 0: return &v.state case 1: @@ -3840,7 +4146,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GiveEliteReq); i { + switch v := v.(*UserRankResp); i { case 0: return &v.state case 1: @@ -3852,7 +4158,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuyEliteResp); i { + switch v := v.(*EliteReq); i { case 0: return &v.state case 1: @@ -3864,7 +4170,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GiveTitleReq); i { + switch v := v.(*GiveEliteReq); i { case 0: return &v.state case 1: @@ -3876,7 +4182,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuyTitleResp); i { + switch v := v.(*BuyEliteResp); i { case 0: return &v.state case 1: @@ -3888,7 +4194,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeEliteResp); i { + switch v := v.(*GiveTitleReq); i { case 0: return &v.state case 1: @@ -3900,7 +4206,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TitleReq); i { + switch v := v.(*BuyTitleResp); i { case 0: return &v.state case 1: @@ -3912,7 +4218,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeTitleResp); i { + switch v := v.(*ChangeEliteResp); i { case 0: return &v.state case 1: @@ -3924,7 +4230,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDetailsResp_TitleItem); i { + switch v := v.(*TitleReq); i { case 0: return &v.state case 1: @@ -3936,7 +4242,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserDetailsResp_EliteItem); i { + switch v := v.(*ChangeTitleResp); i { case 0: return &v.state case 1: @@ -3948,7 +4254,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPvPReportReq_Item); i { + switch v := v.(*UserDetailsResp_TitleItem); i { case 0: return &v.state case 1: @@ -3960,7 +4266,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StatPvPReportResp_Item); i { + switch v := v.(*UserDetailsResp_EliteItem); i { case 0: return &v.state case 1: @@ -3972,7 +4278,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpResp_Item); i { + switch v := v.(*StatPvPReportReq_Item); i { case 0: return &v.state case 1: @@ -3984,7 +4290,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpSubmitResp_Result); i { + switch v := v.(*StatPvPReportResp_Item); i { case 0: return &v.state case 1: @@ -3996,7 +4302,7 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RankPvpSubmitResp_Item); i { + switch v := v.(*RankPvpResp_Item); i { case 0: return &v.state case 1: @@ -4008,6 +4314,30 @@ func file_user_center_proto_init() { } } file_user_center_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RankPvpSubmitResp_Result); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_center_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RankPvpSubmitResp_Item); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_user_center_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserRankResp_Item); i { case 0: return &v.state @@ -4025,8 +4355,8 @@ func file_user_center_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_user_center_proto_rawDesc, - NumEnums: 1, - NumMessages: 42, + NumEnums: 3, + NumMessages: 44, NumExtensions: 0, NumServices: 1, }, diff --git a/app/user_center/pb/user_center.proto b/app/user_center/pb/user_center.proto index 9f86a84..8b89916 100644 --- a/app/user_center/pb/user_center.proto +++ b/app/user_center/pb/user_center.proto @@ -139,6 +139,18 @@ message UserBuyNobilityReq { int64 endTime = 12; // 结束时间 } +message Grade { + int32 grade = 1; // 段位 + int32 level = 2; // 段位等级 + int32 star = 3; // 等级星级 + int64 bravePoint = 4; // 剩余 骁勇分(历史评分累计) +} + +message UserGradeResp { + int64 userId = 1; + Grade grade = 2; +} + // 通知-PvP战报 statistics.pvp.report message StatPvPReportReq { message Item { @@ -162,11 +174,29 @@ message StatPvPReportReq { // 通知-PvP战报 回复 message StatPvPReportResp { + enum GradeResult { + Keep = 0; // 不变(因为骁勇分抵扣) + GradeUp = 1; // 段位提升 + LevelUp = 2; // 段位等级提升 + StarUp = 3; // 等级星级提升 + GradeDown = 4; // 掉段 + LevelDown = 5; // 降级 + StarDown = 6; // 掉星 + } + enum GradeReason { + Win = 0; // 因为获胜 + Lost = 1; // 因为战败 + BravePoint = 2; // 因为骁勇分保护,所以不掉星 + } message Item { int64 uid = 1; // 用户ID string uname = 2; // 用户名 int32 position = 3; // 名次(特指在某一方的名次) float score = 4; // 评分(一位小数) + // grade + Grade grade = 5; + GradeResult gradeResult = 6; // 段位结果 + GradeReason gradeReason = 7; // 段位结果原因 } int32 winCamp = 1; // 获胜阵营 1-蓝 2-红 int64 battleId = 2; // 战斗ID @@ -359,6 +389,9 @@ service userCenter { // rpc increaseWelfare(IncreaseWelfareReq) returns (Empty); + /// @ZeroGroup: grade + rpc getUserGrade(UserIdReq) returns (UserGradeResp); + /// @ZeroGroup: rank // rankPvp pvp排行 diff --git a/app/user_center/pb/user_center_grpc.pb.go b/app/user_center/pb/user_center_grpc.pb.go index ea6f48d..c72e96f 100644 --- a/app/user_center/pb/user_center_grpc.pb.go +++ b/app/user_center/pb/user_center_grpc.pb.go @@ -41,6 +41,8 @@ type UserCenterClient interface { UserBuyNobility(ctx context.Context, in *UserBuyNobilityReq, opts ...grpc.CallOption) (*Empty, error) StatPvpReport(ctx context.Context, in *StatPvPReportReq, opts ...grpc.CallOption) (*StatPvPReportResp, error) DrawGiftPack(ctx context.Context, in *DrawGiftPackReq, opts ...grpc.CallOption) (*DrawGiftPackResp, error) + /// @ZeroGroup: grade + GetUserGrade(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*UserGradeResp, error) // rankPvp pvp排行 RankPvp(ctx context.Context, in *RankPvpReq, opts ...grpc.CallOption) (*RankPvpResp, error) RankPvpSubmit(ctx context.Context, in *RankPvpSubmitReq, opts ...grpc.CallOption) (*RankPvpSubmitResp, error) @@ -160,6 +162,15 @@ func (c *userCenterClient) DrawGiftPack(ctx context.Context, in *DrawGiftPackReq return out, nil } +func (c *userCenterClient) GetUserGrade(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*UserGradeResp, error) { + out := new(UserGradeResp) + err := c.cc.Invoke(ctx, "/pb.userCenter/getUserGrade", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *userCenterClient) RankPvp(ctx context.Context, in *RankPvpReq, opts ...grpc.CallOption) (*RankPvpResp, error) { out := new(RankPvpResp) err := c.cc.Invoke(ctx, "/pb.userCenter/rankPvp", in, out, opts...) @@ -264,6 +275,8 @@ type UserCenterServer interface { UserBuyNobility(context.Context, *UserBuyNobilityReq) (*Empty, error) StatPvpReport(context.Context, *StatPvPReportReq) (*StatPvPReportResp, error) DrawGiftPack(context.Context, *DrawGiftPackReq) (*DrawGiftPackResp, error) + /// @ZeroGroup: grade + GetUserGrade(context.Context, *UserIdReq) (*UserGradeResp, error) // rankPvp pvp排行 RankPvp(context.Context, *RankPvpReq) (*RankPvpResp, error) RankPvpSubmit(context.Context, *RankPvpSubmitReq) (*RankPvpSubmitResp, error) @@ -314,6 +327,9 @@ func (UnimplementedUserCenterServer) StatPvpReport(context.Context, *StatPvPRepo func (UnimplementedUserCenterServer) DrawGiftPack(context.Context, *DrawGiftPackReq) (*DrawGiftPackResp, error) { return nil, status.Errorf(codes.Unimplemented, "method DrawGiftPack not implemented") } +func (UnimplementedUserCenterServer) GetUserGrade(context.Context, *UserIdReq) (*UserGradeResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserGrade not implemented") +} func (UnimplementedUserCenterServer) RankPvp(context.Context, *RankPvpReq) (*RankPvpResp, error) { return nil, status.Errorf(codes.Unimplemented, "method RankPvp not implemented") } @@ -552,6 +568,24 @@ func _UserCenter_DrawGiftPack_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _UserCenter_GetUserGrade_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UserIdReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(UserCenterServer).GetUserGrade(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/pb.userCenter/getUserGrade", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(UserCenterServer).GetUserGrade(ctx, req.(*UserIdReq)) + } + return interceptor(ctx, in, info, handler) +} + func _UserCenter_RankPvp_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(RankPvpReq) if err := dec(in); err != nil { @@ -765,6 +799,10 @@ var UserCenter_ServiceDesc = grpc.ServiceDesc{ MethodName: "drawGiftPack", Handler: _UserCenter_DrawGiftPack_Handler, }, + { + MethodName: "getUserGrade", + Handler: _UserCenter_GetUserGrade_Handler, + }, { MethodName: "rankPvp", Handler: _UserCenter_RankPvp_Handler, diff --git a/app/user_center/usercenter/user_center.go b/app/user_center/usercenter/user_center.go index 19a1413..7d0cbc7 100644 --- a/app/user_center/usercenter/user_center.go +++ b/app/user_center/usercenter/user_center.go @@ -26,6 +26,7 @@ type ( GiftPackItem = pb.GiftPackItem GiveEliteReq = pb.GiveEliteReq GiveTitleReq = pb.GiveTitleReq + Grade = pb.Grade IncreaseWelfareReq = pb.IncreaseWelfareReq PlatformUserReq = pb.PlatformUserReq PlatformUserResp = pb.PlatformUserResp @@ -49,6 +50,7 @@ type ( UserDetailsResp = pb.UserDetailsResp UserDetailsResp_EliteItem = pb.UserDetailsResp_EliteItem UserDetailsResp_TitleItem = pb.UserDetailsResp_TitleItem + UserGradeResp = pb.UserGradeResp UserIdReq = pb.UserIdReq UserIdResp = pb.UserIdResp UserRankReq = pb.UserRankReq @@ -76,6 +78,8 @@ type ( UserBuyNobility(ctx context.Context, in *UserBuyNobilityReq, opts ...grpc.CallOption) (*Empty, error) StatPvpReport(ctx context.Context, in *StatPvPReportReq, opts ...grpc.CallOption) (*StatPvPReportResp, error) DrawGiftPack(ctx context.Context, in *DrawGiftPackReq, opts ...grpc.CallOption) (*DrawGiftPackResp, error) + // @ZeroGroup: grade + GetUserGrade(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*UserGradeResp, error) // rankPvp pvp排行 RankPvp(ctx context.Context, in *RankPvpReq, opts ...grpc.CallOption) (*RankPvpResp, error) RankPvpSubmit(ctx context.Context, in *RankPvpSubmitReq, opts ...grpc.CallOption) (*RankPvpSubmitResp, error) @@ -162,6 +166,12 @@ func (m *defaultUserCenter) DrawGiftPack(ctx context.Context, in *DrawGiftPackRe return client.DrawGiftPack(ctx, in, opts...) } +// @ZeroGroup: grade +func (m *defaultUserCenter) GetUserGrade(ctx context.Context, in *UserIdReq, opts ...grpc.CallOption) (*UserGradeResp, error) { + client := pb.NewUserCenterClient(m.cli.Conn()) + return client.GetUserGrade(ctx, in, opts...) +} + // rankPvp pvp排行 func (m *defaultUserCenter) RankPvp(ctx context.Context, in *RankPvpReq, opts ...grpc.CallOption) (*RankPvpResp, error) { client := pb.NewUserCenterClient(m.cli.Conn()) diff --git a/config-dev.yml b/config-dev.yml index 95cb4f0..f000b63 100644 --- a/config-dev.yml +++ b/config-dev.yml @@ -34,7 +34,7 @@ Game: # 1元=10 Coin (1元40个步兵) CoinFoodRatio: 4 OutbreakCount: 3 - OutbreakMaxCount: 10 # 3x10=30 + OutbreakMaxCount: 30 # 3x10=30 OutbreakBaseCost: 5 OutbreakCostDict: 1: 1 # 步兵 diff --git a/game/live_logic/common_handler.go b/game/live_logic/common_handler.go index 19e0e5e..dd1c7d5 100644 --- a/game/live_logic/common_handler.go +++ b/game/live_logic/common_handler.go @@ -35,7 +35,7 @@ func NewCommonLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic { return resp.LiveGameLogic } -func (h *commonGameLogic) handleCheckIn(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *commonGameLogic) handleCheckIn(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return diff --git a/game/live_logic/logic.go b/game/live_logic/logic.go index 314b9af..06d22fc 100644 --- a/game/live_logic/logic.go +++ b/game/live_logic/logic.go @@ -20,7 +20,7 @@ type ( GiftHandler GiftHandlerFunc // 礼物处理 NobilityHandler NobilityHandlerFunc // 贵族购买处理 } - CMDHandlerFunc func(roomId int64, content []rune, user *pbCommon.PbUser) + CMDHandlerFunc func(roomId int64, msgId string, content []rune, user *pbCommon.PbUser) GiftHandlerFunc func(roomId int64, user *pbCommon.PbUser, gift *pbMq.MqGift) NobilityHandlerFunc func(roomId int64, user *pbCommon.PbUser, nobility *pbMq.MqNobilityBuy) @@ -69,7 +69,7 @@ func (l *LiveGameLogic) HandleDanmaku(pushCommonMsg bool, user *pbCommon.PbUser, cmdStruct := l.CmdParser.Parse(dm.Msg) if cmdStruct.IsCMD { for _, m := range cmdStruct.Matches { - l.handleCMD(dm.LiveRoomId, m.Prefix, m.Content, user) + l.handleCMD(dm.LiveRoomId, dm.MsgId, m.Prefix, m.Content, user) } } else if pushCommonMsg { room, err := manager.GameManager.RoomByLiveRoomId(dm.LiveRoomId) @@ -84,9 +84,9 @@ func (l *LiveGameLogic) HandleDanmaku(pushCommonMsg bool, user *pbCommon.PbUser, } } -func (l *LiveGameLogic) handleCMD(roomId int64, prefix string, content []rune, user *pbCommon.PbUser) { +func (l *LiveGameLogic) handleCMD(roomId int64, msgId string, prefix string, content []rune, user *pbCommon.PbUser) { if h, ok := l.CmdHandlerMapper[prefix]; ok { - h(roomId, content, user) + h(roomId, msgId, content, user) } } diff --git a/game/live_logic/zhg_handler.go b/game/live_logic/zhg_handler.go index 11e21f7..d0e0856 100644 --- a/game/live_logic/zhg_handler.go +++ b/game/live_logic/zhg_handler.go @@ -23,6 +23,8 @@ import ( type ZhgGameLogic struct { svcCtx *svc.ServiceContext *LiveGameLogic + + tmpOutbreakCountMap map[string]int64 } func NewZhgLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic { @@ -78,8 +80,9 @@ func NewZhgLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic { ) cmdParser.SetDistinct(true) resp := &ZhgGameLogic{ - svcCtx: svcCtx, - LiveGameLogic: NewLiveGameLogic(pbRoom.GameType_ZHG, cmdParser), + svcCtx: svcCtx, + LiveGameLogic: NewLiveGameLogic(pbRoom.GameType_ZHG, cmdParser), + tmpOutbreakCountMap: make(map[string]int64), } resp.RegisterCMDHandler(resp.handleQuery, "q") resp.RegisterCMDHandler(resp.handleJoinGame, "j") @@ -100,7 +103,7 @@ func NewZhgLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic { return resp.LiveGameLogic } -func (h *ZhgGameLogic) handleQuery(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleQuery(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -163,17 +166,26 @@ func (h *ZhgGameLogic) handleQuery(roomId int64, _ []rune, user *pbCommon.PbUser }) } } + + grade, err := h.svcCtx.UserCenterRpc.GetUserGrade(h.svcCtx.Ctx, &usercenter.UserIdReq{UserId: user.UserId}) + if err != nil { + return + } + resp.Grade = &pbGameZhg.Grade{ + Grade: grade.Grade.Grade, + Level: grade.Grade.Level, + Star: grade.Grade.Star, + BravePoint: grade.Grade.BravePoint, + } room.Broadcast(pb.PushUserQuery, resp) } -func (h *ZhgGameLogic) handleJoinGame(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleJoinGame(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return } - logger.SLog.Debugf("用户 [%s] 加入游戏", user.Username) - details, err := h.svcCtx.UserCenterRpc.GetUserDetails(h.svcCtx.Ctx, &usercenter.UserIdReq{ UserId: user.UserId, }) @@ -203,10 +215,22 @@ func (h *ZhgGameLogic) handleJoinGame(roomId int64, _ []rune, user *pbCommon.PbU } } + grade, err := h.svcCtx.UserCenterRpc.GetUserGrade(h.svcCtx.Ctx, &usercenter.UserIdReq{UserId: user.UserId}) + if err != nil { + return + } + resp.Grade = &pbGameZhg.Grade{ + Grade: grade.Grade.Grade, + Level: grade.Grade.Level, + Star: grade.Grade.Star, + BravePoint: grade.Grade.BravePoint, + } + + logger.SLog.Debugf("用户 [%s] 加入游戏", user.Username) room.Broadcast(pb.PushZhgJoinGame, resp) } -func (h *ZhgGameLogic) handleOutbreak(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleOutbreak(roomId int64, msgId string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -216,14 +240,15 @@ func (h *ZhgGameLogic) handleOutbreak(roomId int64, content []rune, user *pbComm logger.SLog.Debugf("用户 [%s] 普通暴兵", user.Username) room.Broadcast(pb.PushZhgOutbreak, &pbGameZhg.Outbreak{User: user}) } else { - h.handleOutbreakFood(room, content, user) + h.handleOutbreakFood(room, msgId, content, user) } } -func (h *ZhgGameLogic) handleOutbreakFood(room *manager.Room, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleOutbreakFood(room *manager.Room, msgId string, content []rune, user *pbCommon.PbUser) { if len(content) < 1 { return } + zhgCfg := config.Config.Game.Zhg // s1,10s2,10s3,10s4,10 11,0 111, contentStr := string(content) @@ -231,7 +256,7 @@ func (h *ZhgGameLogic) handleOutbreakFood(room *manager.Room, content []rune, us var unitTypeStr string var count int64 var err error - idxSplit := strings.IndexRune(contentStr, ',') + idxSplit := strings.IndexRune(contentStr, ' ') if idxSplit == -1 { // 没有分隔符,判断内容位数? unitTypeStr = string(content) @@ -254,6 +279,12 @@ func (h *ZhgGameLogic) handleOutbreakFood(room *manager.Room, content []rune, us } } + //if allCount, ok := h.tmpOutbreakCountMap[msgId]; ok { + // if allCount+count > zhgCfg.OutbreakMaxCount { + // return + // } + //} + unitType, err := strconv.Atoi(unitTypeStr) if err != nil { return @@ -276,7 +307,7 @@ func (h *ZhgGameLogic) handleOutbreakFood(room *manager.Room, content []rune, us }) } -func (h *ZhgGameLogic) handleCreateUnit(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleCreateUnit(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -293,7 +324,7 @@ func (h *ZhgGameLogic) handleCreateUnit(roomId int64, content []rune, user *pbCo }) } -func (h *ZhgGameLogic) handleMove(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleMove(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -310,7 +341,7 @@ func (h *ZhgGameLogic) handleMove(roomId int64, content []rune, user *pbCommon.P }) } -func (h *ZhgGameLogic) handleWai(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleWai(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -321,7 +352,7 @@ func (h *ZhgGameLogic) handleWai(roomId int64, _ []rune, user *pbCommon.PbUser) room.Broadcast(pb.PushZhgWhere, &pbGameZhg.Wai{User: user}) } -func (h *ZhgGameLogic) handleMode(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleMode(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -339,7 +370,7 @@ func (h *ZhgGameLogic) handleMode(roomId int64, content []rune, user *pbCommon.P }) } -func (h *ZhgGameLogic) handleBuyFood(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleBuyFood(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -363,7 +394,7 @@ func (h *ZhgGameLogic) handleBuyFood(roomId int64, content []rune, user *pbCommo }) } -func (h *ZhgGameLogic) handleBuyElite(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleBuyElite(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -401,7 +432,7 @@ func (h *ZhgGameLogic) handleBuyElite(roomId int64, content []rune, user *pbComm room.Broadcast(pb.PushBuyGoods, resp) } -func (h *ZhgGameLogic) handleChangeElite(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleChangeElite(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -434,7 +465,7 @@ func (h *ZhgGameLogic) handleChangeElite(roomId int64, content []rune, user *pbC room.Broadcast(pb.PushZhgChangeElite, resp) } -func (h *ZhgGameLogic) handleChangeTitle(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleChangeTitle(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -467,7 +498,7 @@ func (h *ZhgGameLogic) handleChangeTitle(roomId int64, content []rune, user *pbC room.Broadcast(pb.PushZhgChangeTitle, resp) } -func (h *ZhgGameLogic) handleRankSubmit(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgGameLogic) handleRankSubmit(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -488,6 +519,9 @@ func (h *ZhgGameLogic) handleRankSubmit(roomId int64, content []rune, user *pbCo rankType := pbVars.RankType_General if r, err := strconv.ParseInt(string(content), 10, 0); err == nil { rankType = pbVars.RankType(r) + } else { + // 无效的rankTye + return } rpcResp, err := h.svcCtx.UserCenterRpc.RankPvpSubmit(h.svcCtx.Ctx, &usercenter.RankPvpSubmitReq{ RankType: rankType, diff --git a/game/live_logic/zhghz_handler.go b/game/live_logic/zhghz_handler.go index cab0bde..8df9b7c 100644 --- a/game/live_logic/zhghz_handler.go +++ b/game/live_logic/zhghz_handler.go @@ -55,7 +55,7 @@ func NewZhghzLiveGameLogic() *ZhghzGameLogic { return resp } -func (h *ZhghzGameLogic) handleJoinGame(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhghzGameLogic) handleJoinGame(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -72,7 +72,7 @@ func (h *ZhghzGameLogic) handleJoinGame(roomId int64, content []rune, user *pbCo }) } -func (h *ZhghzGameLogic) handleMove(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhghzGameLogic) handleMove(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -89,7 +89,7 @@ func (h *ZhghzGameLogic) handleMove(roomId int64, content []rune, user *pbCommon }) } -func (h *ZhghzGameLogic) handleShoot(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhghzGameLogic) handleShoot(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -99,7 +99,7 @@ func (h *ZhghzGameLogic) handleShoot(roomId int64, _ []rune, user *pbCommon.PbUs }) } -func (h *ZhghzGameLogic) handleWai(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhghzGameLogic) handleWai(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return diff --git a/game/live_logic/zhgzd_handler.go b/game/live_logic/zhgzd_handler.go index 7362a87..34b4309 100644 --- a/game/live_logic/zhgzd_handler.go +++ b/game/live_logic/zhgzd_handler.go @@ -61,7 +61,7 @@ func NewZhgzdLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic { return resp.LiveGameLogic } -func (h *ZhgzdGameLogic) handleJoinGame(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleJoinGame(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -71,13 +71,13 @@ func (h *ZhgzdGameLogic) handleJoinGame(roomId int64, _ []rune, user *pbCommon.P room.Broadcast(pb.PushZhgzdJoinGame, &pbGameZhgzd.JoinGame{User: user}) } -func (h *ZhgzdGameLogic) handleDispatch(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleDispatch(roomId int64, msgId string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return } if len(content) == 0 { - h.handleOutbreak(roomId, content, user) + h.handleOutbreak(roomId, msgId, content, user) } else { const cmdType = "s" @@ -102,7 +102,7 @@ func (h *ZhgzdGameLogic) handleDispatch(roomId int64, content []rune, user *pbCo } } -func (h *ZhgzdGameLogic) handleOutbreak(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleOutbreak(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -126,7 +126,7 @@ func (h *ZhgzdGameLogic) handleOutbreak(roomId int64, content []rune, user *pbCo }) } -func (h *ZhgzdGameLogic) handleChangeUnit(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleChangeUnit(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -153,7 +153,7 @@ func (h *ZhgzdGameLogic) handleChangeUnit(roomId int64, content []rune, user *pb }) } -func (h *ZhgzdGameLogic) handlePosition(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handlePosition(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -181,7 +181,7 @@ func (h *ZhgzdGameLogic) handlePosition(roomId int64, content []rune, user *pbCo }) } -func (h *ZhgzdGameLogic) handleMove(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleMove(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -209,7 +209,7 @@ func (h *ZhgzdGameLogic) handleMove(roomId int64, content []rune, user *pbCommon }) } -func (h *ZhgzdGameLogic) handleWhere(roomId int64, _ []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleWhere(roomId int64, _ string, _ []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return @@ -220,7 +220,7 @@ func (h *ZhgzdGameLogic) handleWhere(roomId int64, _ []rune, user *pbCommon.PbUs room.Broadcast(pb.PushZhgzdWhere, &pbGameZhgzd.Where{User: user}) } -func (h *ZhgzdGameLogic) handleMode(roomId int64, content []rune, user *pbCommon.PbUser) { +func (h *ZhgzdGameLogic) handleMode(roomId int64, _ string, content []rune, user *pbCommon.PbUser) { room, err := manager.GameManager.RoomByLiveRoomId(roomId) if err != nil { return diff --git a/game/logic/zhg/statistics/stat_pvp.go b/game/logic/zhg/statistics/stat_pvp.go index 91ba8bf..e869aa0 100644 --- a/game/logic/zhg/statistics/stat_pvp.go +++ b/game/logic/zhg/statistics/stat_pvp.go @@ -68,7 +68,7 @@ func (p *PvP) Report(s *session.Session, msg *pbGameZhg.StatPvPReportReq) error IsGeneral: item.IsGeneral, }) } - // 战局ID + // 战报 resp, err := p.svcCtx.UserCenterRpc.StatPvpReport(p.svcCtx.Ctx, &usercenter.StatPvPReportReq{ WinCamp: msg.WinCamp, BattleId: manager.GameManager.BattleIdBySession(s), @@ -86,6 +86,14 @@ func (p *PvP) Report(s *session.Session, msg *pbGameZhg.StatPvPReportReq) error Uname: item.Uname, Position: item.Position, Score: item.Score, + Grade: &pbGameZhg.StatPvPReportResp_Grade{ + Grade: item.Grade.Grade, + Level: item.Grade.Level, + Star: item.Grade.Star, + BravePoint: item.Grade.BravePoint, + }, + GradeReason: pbGameZhg.StatPvPReportResp_GradeReason(item.GradeReason), + GradeResult: pbGameZhg.StatPvPReportResp_GradeResult(item.GradeResult), }) } for _, item := range resp.LostItems { @@ -94,6 +102,14 @@ func (p *PvP) Report(s *session.Session, msg *pbGameZhg.StatPvPReportReq) error Uname: item.Uname, Position: item.Position, Score: item.Score, + Grade: &pbGameZhg.StatPvPReportResp_Grade{ + Grade: item.Grade.Grade, + Level: item.Grade.Level, + Star: item.Grade.Star, + BravePoint: item.Grade.BravePoint, + }, + GradeReason: pbGameZhg.StatPvPReportResp_GradeReason(item.GradeReason), + GradeResult: pbGameZhg.StatPvPReportResp_GradeResult(item.GradeResult), }) } diff --git a/game/pb/game/zhg/Command.cs b/game/pb/game/zhg/Command.cs index ad201ad..4a36e1b 100644 --- a/game/pb/game/zhg/Command.cs +++ b/game/pb/game/zhg/Command.cs @@ -25,38 +25,42 @@ namespace Pb.Game.Zhg { byte[] descriptorData = global::System.Convert.FromBase64String( string.Concat( "ChZnYW1lL3poZy9jb21tYW5kLnByb3RvEgtwYi5nYW1lLnpoZxoTY29tbW9u", - "L2NvbW1vbi5wcm90byKqAQoISm9pbkdhbWUSHwoEdXNlchgBIAEoCzIRLnBi", - "LmNvbW1vbi5QYlVzZXISFQoNbm9iaWxpdHlMZXZlbBgCIAEoBRIMCgRjb2lu", - "GAMgASgDEioKDGN1cnJlbnRUaXRsZRgKIAEoCzIULnBiLmNvbW1vbi5UaXRs", - "ZUl0ZW0SLAoMY3VycmVudEVsaXRlGAsgASgLMhYucGIuZ2FtZS56aGcuRWxp", - "dGVJdGVtIjsKCkNyZWF0ZVVuaXQSHwoEdXNlchgBIAEoCzIRLnBiLmNvbW1v", - "bi5QYlVzZXISDAoEdW5pdBgCIAEoCSI1CgRNb3ZlEh8KBHVzZXIYASABKAsy", - "ES5wYi5jb21tb24uUGJVc2VyEgwKBGxpbmUYAiABKAkiKwoIT3V0YnJlYWsS", - "HwoEdXNlchgBIAEoCzIRLnBiLmNvbW1vbi5QYlVzZXIiXgoMT3V0YnJlYWtG", - "b29kEh8KBHVzZXIYASABKAsyES5wYi5jb21tb24uUGJVc2VyEhAKCHVuaXRU", - "eXBlGAIgASgJEg0KBWNvdW50GAMgASgFEgwKBGNvc3QYBCABKAMiJgoDV2Fp", - "Eh8KBHVzZXIYASABKAsyES5wYi5jb21tb24uUGJVc2VyIj0KDEJ1aWxkaW5n", - "TW9kZRIfCgR1c2VyGAEgASgLMhEucGIuY29tbW9uLlBiVXNlchIMCgRtb2Rl", - "GAIgASgJIk0KC0NoYW5nZUVsaXRlEgwKBGNvZGUYASABKAUSHwoEdXNlchgC", - "IAEoCzIRLnBiLmNvbW1vbi5QYlVzZXISDwoHZWxpdGVJZBgDIAEoAyJbCgtD", - "aGFuZ2VUaXRsZRIMCgRjb2RlGAEgASgFEh8KBHVzZXIYAiABKAsyES5wYi5j", - "b21tb24uUGJVc2VyEg8KB3RpdGxlSWQYAyABKAMSDAoEbmFtZRgEIAEoCSI7", - "Cg1CdXlCYXR0bGVGb29kEg4KBnVzZXJJZBgBIAEoAxIMCgRjb3N0GAIgASgD", - "EgwKBGZvb2QYAyABKAMiNQoJRWxpdGVJdGVtEgoKAmlkGAEgASgDEgwKBHNv", - "cnQYAiABKAUSDgoGcmVtYWluGAMgASgFItICCgxVc2VyUXVlcnlNc2cSHwoE", - "dXNlchgBIAEoCzIRLnBiLmNvbW1vbi5QYlVzZXISMAoEcmFuaxgCIAMoCzIi", - "LnBiLmdhbWUuemhnLlVzZXJRdWVyeU1zZy5SYW5rSXRlbRIMCgRjb2luGAMg", - "ASgDEiQKBnRpdGxlcxgKIAMoCzIULnBiLmNvbW1vbi5UaXRsZUl0ZW0SJgoG", - "ZWxpdGVzGAsgAygLMhYucGIuZ2FtZS56aGcuRWxpdGVJdGVtEioKDGN1cnJl", - "bnRUaXRsZRgMIAEoCzIULnBiLmNvbW1vbi5UaXRsZUl0ZW0SLAoMY3VycmVu", - "dEVsaXRlGA0gASgLMhYucGIuZ2FtZS56aGcuRWxpdGVJdGVtGjkKCFJhbmtJ", - "dGVtEhAKCHJhbmtUeXBlGAEgASgFEg0KBXNjb3JlGAIgASgDEgwKBHJhbmsY", - "AyABKAVCIFoeZGNnL2dhbWUvcGIvZ2FtZS96aGc7cGJHYW1lWmhnYgZwcm90", - "bzM=")); + "L2NvbW1vbi5wcm90byJHCgVHcmFkZRINCgVncmFkZRgBIAEoBRINCgVsZXZl", + "bBgCIAEoBRIMCgRzdGFyGAMgASgFEhIKCmJyYXZlUG9pbnQYBCABKAMizQEK", + "CEpvaW5HYW1lEh8KBHVzZXIYASABKAsyES5wYi5jb21tb24uUGJVc2VyEhUK", + "DW5vYmlsaXR5TGV2ZWwYAiABKAUSDAoEY29pbhgDIAEoAxIhCgVncmFkZRgE", + "IAEoCzISLnBiLmdhbWUuemhnLkdyYWRlEioKDGN1cnJlbnRUaXRsZRgKIAEo", + "CzIULnBiLmNvbW1vbi5UaXRsZUl0ZW0SLAoMY3VycmVudEVsaXRlGAsgASgL", + "MhYucGIuZ2FtZS56aGcuRWxpdGVJdGVtIjsKCkNyZWF0ZVVuaXQSHwoEdXNl", + "chgBIAEoCzIRLnBiLmNvbW1vbi5QYlVzZXISDAoEdW5pdBgCIAEoCSI1CgRN", + "b3ZlEh8KBHVzZXIYASABKAsyES5wYi5jb21tb24uUGJVc2VyEgwKBGxpbmUY", + "AiABKAkiKwoIT3V0YnJlYWsSHwoEdXNlchgBIAEoCzIRLnBiLmNvbW1vbi5Q", + "YlVzZXIiXgoMT3V0YnJlYWtGb29kEh8KBHVzZXIYASABKAsyES5wYi5jb21t", + "b24uUGJVc2VyEhAKCHVuaXRUeXBlGAIgASgJEg0KBWNvdW50GAMgASgFEgwK", + "BGNvc3QYBCABKAMiJgoDV2FpEh8KBHVzZXIYASABKAsyES5wYi5jb21tb24u", + "UGJVc2VyIj0KDEJ1aWxkaW5nTW9kZRIfCgR1c2VyGAEgASgLMhEucGIuY29t", + "bW9uLlBiVXNlchIMCgRtb2RlGAIgASgJIk0KC0NoYW5nZUVsaXRlEgwKBGNv", + "ZGUYASABKAUSHwoEdXNlchgCIAEoCzIRLnBiLmNvbW1vbi5QYlVzZXISDwoH", + "ZWxpdGVJZBgDIAEoAyJbCgtDaGFuZ2VUaXRsZRIMCgRjb2RlGAEgASgFEh8K", + "BHVzZXIYAiABKAsyES5wYi5jb21tb24uUGJVc2VyEg8KB3RpdGxlSWQYAyAB", + "KAMSDAoEbmFtZRgEIAEoCSI7Cg1CdXlCYXR0bGVGb29kEg4KBnVzZXJJZBgB", + "IAEoAxIMCgRjb3N0GAIgASgDEgwKBGZvb2QYAyABKAMiNQoJRWxpdGVJdGVt", + "EgoKAmlkGAEgASgDEgwKBHNvcnQYAiABKAUSDgoGcmVtYWluGAMgASgFIvUC", + "CgxVc2VyUXVlcnlNc2cSHwoEdXNlchgBIAEoCzIRLnBiLmNvbW1vbi5QYlVz", + "ZXISMAoEcmFuaxgCIAMoCzIiLnBiLmdhbWUuemhnLlVzZXJRdWVyeU1zZy5S", + "YW5rSXRlbRIMCgRjb2luGAMgASgDEiEKBWdyYWRlGAQgASgLMhIucGIuZ2Ft", + "ZS56aGcuR3JhZGUSJAoGdGl0bGVzGAogAygLMhQucGIuY29tbW9uLlRpdGxl", + "SXRlbRImCgZlbGl0ZXMYCyADKAsyFi5wYi5nYW1lLnpoZy5FbGl0ZUl0ZW0S", + "KgoMY3VycmVudFRpdGxlGAwgASgLMhQucGIuY29tbW9uLlRpdGxlSXRlbRIs", + "CgxjdXJyZW50RWxpdGUYDSABKAsyFi5wYi5nYW1lLnpoZy5FbGl0ZUl0ZW0a", + "OQoIUmFua0l0ZW0SEAoIcmFua1R5cGUYASABKAUSDQoFc2NvcmUYAiABKAMS", + "DAoEcmFuaxgDIAEoBUIgWh5kY2cvZ2FtZS9wYi9nYW1lL3poZztwYkdhbWVa", + "aGdiBnByb3RvMw==")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { global::Pb.Common.CommonReflection.Descriptor, }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { - new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.JoinGame), global::Pb.Game.Zhg.JoinGame.Parser, new[]{ "User", "NobilityLevel", "Coin", "CurrentTitle", "CurrentElite" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.Grade), global::Pb.Game.Zhg.Grade.Parser, new[]{ "Grade_", "Level", "Star", "BravePoint" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.JoinGame), global::Pb.Game.Zhg.JoinGame.Parser, new[]{ "User", "NobilityLevel", "Coin", "Grade", "CurrentTitle", "CurrentElite" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.CreateUnit), global::Pb.Game.Zhg.CreateUnit.Parser, new[]{ "User", "Unit" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.Move), global::Pb.Game.Zhg.Move.Parser, new[]{ "User", "Line" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.Outbreak), global::Pb.Game.Zhg.Outbreak.Parser, new[]{ "User" }, null, null, null, null), @@ -67,13 +71,325 @@ namespace Pb.Game.Zhg { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.ChangeTitle), global::Pb.Game.Zhg.ChangeTitle.Parser, new[]{ "Code", "User", "TitleId", "Name" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.BuyBattleFood), global::Pb.Game.Zhg.BuyBattleFood.Parser, new[]{ "UserId", "Cost", "Food" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.EliteItem), global::Pb.Game.Zhg.EliteItem.Parser, new[]{ "Id", "Sort", "Remain" }, null, null, null, null), - new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.UserQueryMsg), global::Pb.Game.Zhg.UserQueryMsg.Parser, new[]{ "User", "Rank", "Coin", "Titles", "Elites", "CurrentTitle", "CurrentElite" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.UserQueryMsg.Types.RankItem), global::Pb.Game.Zhg.UserQueryMsg.Types.RankItem.Parser, new[]{ "RankType", "Score", "Rank" }, null, null, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.UserQueryMsg), global::Pb.Game.Zhg.UserQueryMsg.Parser, new[]{ "User", "Rank", "Coin", "Grade", "Titles", "Elites", "CurrentTitle", "CurrentElite" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.UserQueryMsg.Types.RankItem), global::Pb.Game.Zhg.UserQueryMsg.Types.RankItem.Parser, new[]{ "RankType", "Score", "Rank" }, null, null, null, null)}) })); } #endregion } #region Messages + public sealed partial class Grade : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Grade()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade(Grade other) : this() { + grade_ = other.grade_; + level_ = other.level_; + star_ = other.star_; + bravePoint_ = other.bravePoint_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade Clone() { + return new Grade(this); + } + + /// Field number for the "grade" field. + public const int Grade_FieldNumber = 1; + private int grade_; + /// + /// 段位 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Grade_ { + get { return grade_; } + set { + grade_ = value; + } + } + + /// Field number for the "level" field. + public const int LevelFieldNumber = 2; + private int level_; + /// + /// 段位等级 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Level { + get { return level_; } + set { + level_ = value; + } + } + + /// Field number for the "star" field. + public const int StarFieldNumber = 3; + private int star_; + /// + /// 等级星级 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Star { + get { return star_; } + set { + star_ = value; + } + } + + /// Field number for the "bravePoint" field. + public const int BravePointFieldNumber = 4; + private long bravePoint_; + /// + /// 剩余 骁勇分(历史评分累计) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long BravePoint { + get { return bravePoint_; } + set { + bravePoint_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Grade); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Grade other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Grade_ != other.Grade_) return false; + if (Level != other.Level) return false; + if (Star != other.Star) return false; + if (BravePoint != other.BravePoint) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Grade_ != 0) hash ^= Grade_.GetHashCode(); + if (Level != 0) hash ^= Level.GetHashCode(); + if (Star != 0) hash ^= Star.GetHashCode(); + if (BravePoint != 0L) hash ^= BravePoint.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Grade_ != 0) { + output.WriteRawTag(8); + output.WriteInt32(Grade_); + } + if (Level != 0) { + output.WriteRawTag(16); + output.WriteInt32(Level); + } + if (Star != 0) { + output.WriteRawTag(24); + output.WriteInt32(Star); + } + if (BravePoint != 0L) { + output.WriteRawTag(32); + output.WriteInt64(BravePoint); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Grade_ != 0) { + output.WriteRawTag(8); + output.WriteInt32(Grade_); + } + if (Level != 0) { + output.WriteRawTag(16); + output.WriteInt32(Level); + } + if (Star != 0) { + output.WriteRawTag(24); + output.WriteInt32(Star); + } + if (BravePoint != 0L) { + output.WriteRawTag(32); + output.WriteInt64(BravePoint); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Grade_ != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Grade_); + } + if (Level != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level); + } + if (Star != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Star); + } + if (BravePoint != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(BravePoint); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Grade other) { + if (other == null) { + return; + } + if (other.Grade_ != 0) { + Grade_ = other.Grade_; + } + if (other.Level != 0) { + Level = other.Level; + } + if (other.Star != 0) { + Star = other.Star; + } + if (other.BravePoint != 0L) { + BravePoint = other.BravePoint; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Grade_ = input.ReadInt32(); + break; + } + case 16: { + Level = input.ReadInt32(); + break; + } + case 24: { + Star = input.ReadInt32(); + break; + } + case 32: { + BravePoint = input.ReadInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Grade_ = input.ReadInt32(); + break; + } + case 16: { + Level = input.ReadInt32(); + break; + } + case 24: { + Star = input.ReadInt32(); + break; + } + case 32: { + BravePoint = input.ReadInt64(); + break; + } + } + } + } + #endif + + } + /// /// 加入游戏 push -> game.join /// @@ -91,7 +407,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[0]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -114,6 +430,7 @@ namespace Pb.Game.Zhg { user_ = other.user_ != null ? other.user_.Clone() : null; nobilityLevel_ = other.nobilityLevel_; coin_ = other.coin_; + grade_ = other.grade_ != null ? other.grade_.Clone() : null; currentTitle_ = other.currentTitle_ != null ? other.currentTitle_.Clone() : null; currentElite_ = other.currentElite_ != null ? other.currentElite_.Clone() : null; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); @@ -167,6 +484,21 @@ namespace Pb.Game.Zhg { } } + /// Field number for the "grade" field. + public const int GradeFieldNumber = 4; + private global::Pb.Game.Zhg.Grade grade_; + /// + /// 段位 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Pb.Game.Zhg.Grade Grade { + get { return grade_; } + set { + grade_ = value; + } + } + /// Field number for the "currentTitle" field. public const int CurrentTitleFieldNumber = 10; private global::Pb.Common.TitleItem currentTitle_; @@ -215,6 +547,7 @@ namespace Pb.Game.Zhg { if (!object.Equals(User, other.User)) return false; if (NobilityLevel != other.NobilityLevel) return false; if (Coin != other.Coin) return false; + if (!object.Equals(Grade, other.Grade)) return false; if (!object.Equals(CurrentTitle, other.CurrentTitle)) return false; if (!object.Equals(CurrentElite, other.CurrentElite)) return false; return Equals(_unknownFields, other._unknownFields); @@ -227,6 +560,7 @@ namespace Pb.Game.Zhg { if (user_ != null) hash ^= User.GetHashCode(); if (NobilityLevel != 0) hash ^= NobilityLevel.GetHashCode(); if (Coin != 0L) hash ^= Coin.GetHashCode(); + if (grade_ != null) hash ^= Grade.GetHashCode(); if (currentTitle_ != null) hash ^= CurrentTitle.GetHashCode(); if (currentElite_ != null) hash ^= CurrentElite.GetHashCode(); if (_unknownFields != null) { @@ -259,6 +593,10 @@ namespace Pb.Game.Zhg { output.WriteRawTag(24); output.WriteInt64(Coin); } + if (grade_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Grade); + } if (currentTitle_ != null) { output.WriteRawTag(82); output.WriteMessage(CurrentTitle); @@ -289,6 +627,10 @@ namespace Pb.Game.Zhg { output.WriteRawTag(24); output.WriteInt64(Coin); } + if (grade_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Grade); + } if (currentTitle_ != null) { output.WriteRawTag(82); output.WriteMessage(CurrentTitle); @@ -316,6 +658,9 @@ namespace Pb.Game.Zhg { if (Coin != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(Coin); } + if (grade_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Grade); + } if (currentTitle_ != null) { size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurrentTitle); } @@ -346,6 +691,12 @@ namespace Pb.Game.Zhg { if (other.Coin != 0L) { Coin = other.Coin; } + if (other.grade_ != null) { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + Grade.MergeFrom(other.Grade); + } if (other.currentTitle_ != null) { if (currentTitle_ == null) { CurrentTitle = new global::Pb.Common.TitleItem(); @@ -388,6 +739,13 @@ namespace Pb.Game.Zhg { Coin = input.ReadInt64(); break; } + case 34: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + input.ReadMessage(Grade); + break; + } case 82: { if (currentTitle_ == null) { CurrentTitle = new global::Pb.Common.TitleItem(); @@ -432,6 +790,13 @@ namespace Pb.Game.Zhg { Coin = input.ReadInt64(); break; } + case 34: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + input.ReadMessage(Grade); + break; + } case 82: { if (currentTitle_ == null) { CurrentTitle = new global::Pb.Common.TitleItem(); @@ -470,7 +835,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[1]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[2]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -711,7 +1076,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[2]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[3]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -952,7 +1317,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[3]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[4]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1153,7 +1518,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[4]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[5]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1474,7 +1839,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[5]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[6]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1675,7 +2040,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[6]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[7]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1913,7 +2278,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[7]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[8]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2191,7 +2556,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[8]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[9]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2509,7 +2874,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[9]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[10]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -2784,7 +3149,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[10]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[11]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3059,7 +3424,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[11]; } + get { return global::Pb.Game.Zhg.CommandReflection.Descriptor.MessageTypes[12]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -3082,6 +3447,7 @@ namespace Pb.Game.Zhg { user_ = other.user_ != null ? other.user_.Clone() : null; rank_ = other.rank_.Clone(); coin_ = other.coin_; + grade_ = other.grade_ != null ? other.grade_.Clone() : null; titles_ = other.titles_.Clone(); elites_ = other.elites_.Clone(); currentTitle_ = other.currentTitle_ != null ? other.currentTitle_.Clone() : null; @@ -3139,6 +3505,21 @@ namespace Pb.Game.Zhg { } } + /// Field number for the "grade" field. + public const int GradeFieldNumber = 4; + private global::Pb.Game.Zhg.Grade grade_; + /// + /// 段位 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Pb.Game.Zhg.Grade Grade { + get { return grade_; } + set { + grade_ = value; + } + } + /// Field number for the "titles" field. public const int TitlesFieldNumber = 10; private static readonly pb::FieldCodec _repeated_titles_codec @@ -3215,6 +3596,7 @@ namespace Pb.Game.Zhg { if (!object.Equals(User, other.User)) return false; if(!rank_.Equals(other.rank_)) return false; if (Coin != other.Coin) return false; + if (!object.Equals(Grade, other.Grade)) return false; if(!titles_.Equals(other.titles_)) return false; if(!elites_.Equals(other.elites_)) return false; if (!object.Equals(CurrentTitle, other.CurrentTitle)) return false; @@ -3229,6 +3611,7 @@ namespace Pb.Game.Zhg { if (user_ != null) hash ^= User.GetHashCode(); hash ^= rank_.GetHashCode(); if (Coin != 0L) hash ^= Coin.GetHashCode(); + if (grade_ != null) hash ^= Grade.GetHashCode(); hash ^= titles_.GetHashCode(); hash ^= elites_.GetHashCode(); if (currentTitle_ != null) hash ^= CurrentTitle.GetHashCode(); @@ -3260,6 +3643,10 @@ namespace Pb.Game.Zhg { output.WriteRawTag(24); output.WriteInt64(Coin); } + if (grade_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Grade); + } titles_.WriteTo(output, _repeated_titles_codec); elites_.WriteTo(output, _repeated_elites_codec); if (currentTitle_ != null) { @@ -3289,6 +3676,10 @@ namespace Pb.Game.Zhg { output.WriteRawTag(24); output.WriteInt64(Coin); } + if (grade_ != null) { + output.WriteRawTag(34); + output.WriteMessage(Grade); + } titles_.WriteTo(ref output, _repeated_titles_codec); elites_.WriteTo(ref output, _repeated_elites_codec); if (currentTitle_ != null) { @@ -3316,6 +3707,9 @@ namespace Pb.Game.Zhg { if (Coin != 0L) { size += 1 + pb::CodedOutputStream.ComputeInt64Size(Coin); } + if (grade_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Grade); + } size += titles_.CalculateSize(_repeated_titles_codec); size += elites_.CalculateSize(_repeated_elites_codec); if (currentTitle_ != null) { @@ -3346,6 +3740,12 @@ namespace Pb.Game.Zhg { if (other.Coin != 0L) { Coin = other.Coin; } + if (other.grade_ != null) { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + Grade.MergeFrom(other.Grade); + } titles_.Add(other.titles_); elites_.Add(other.elites_); if (other.currentTitle_ != null) { @@ -3390,6 +3790,13 @@ namespace Pb.Game.Zhg { Coin = input.ReadInt64(); break; } + case 34: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + input.ReadMessage(Grade); + break; + } case 82: { titles_.AddEntriesFrom(input, _repeated_titles_codec); break; @@ -3442,6 +3849,13 @@ namespace Pb.Game.Zhg { Coin = input.ReadInt64(); break; } + case 34: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.Grade(); + } + input.ReadMessage(Grade); + break; + } case 82: { titles_.AddEntriesFrom(ref input, _repeated_titles_codec); break; diff --git a/game/pb/game/zhg/Stat.cs b/game/pb/game/zhg/Stat.cs index e112687..72af0c0 100644 --- a/game/pb/game/zhg/Stat.cs +++ b/game/pb/game/zhg/Stat.cs @@ -33,18 +33,28 @@ namespace Pb.Game.Zhg { "EhAKCGtpbGxVbml0GAUgASgDEhIKCmRlS2lsbFVuaXQYBiABKAMSEgoKZmly", "c3RCbG9vZBgHIAEoCBIUCgxkZUZpcnN0Qmxvb2QYCCABKAgSEgoKa2lsbFBs", "YXllchgJIAEoAxIUCgxkZUtpbGxQbGF5ZXIYCiABKAgSEQoJaXNHZW5lcmFs", - "GAsgASgIIuoBChFTdGF0UHZQUmVwb3J0UmVzcBIPCgd3aW5DYW1wGAEgASgF", + "GAsgASgIIogFChFTdGF0UHZQUmVwb3J0UmVzcBIPCgd3aW5DYW1wGAEgASgF", "EhAKCGJhdHRsZUlkGAIgASgDEjUKCHdpbkl0ZW1zGAogAygLMiMucGIuZ2Ft", "ZS56aGcuU3RhdFB2UFJlcG9ydFJlc3AuSXRlbRI2Cglsb3N0SXRlbXMYCyAD", - "KAsyIy5wYi5nYW1lLnpoZy5TdGF0UHZQUmVwb3J0UmVzcC5JdGVtGkMKBEl0", - "ZW0SCwoDdWlkGAEgASgDEg0KBXVuYW1lGAIgASgJEhAKCHBvc2l0aW9uGAMg", - "ASgFEg0KBXNjb3JlGAQgASgCQiBaHmRjZy9nYW1lL3BiL2dhbWUvemhnO3Bi", - "R2FtZVpoZ2IGcHJvdG8z")); + "KAsyIy5wYi5nYW1lLnpoZy5TdGF0UHZQUmVwb3J0UmVzcC5JdGVtGkcKBUdy", + "YWRlEg0KBWdyYWRlGAEgASgFEg0KBWxldmVsGAIgASgFEgwKBHN0YXIYAyAB", + "KAUSEgoKYnJhdmVQb2ludBgEIAEoAxr6AQoESXRlbRILCgN1aWQYASABKAMS", + "DQoFdW5hbWUYAiABKAkSEAoIcG9zaXRpb24YAyABKAUSDQoFc2NvcmUYBCAB", + "KAISMwoFZ3JhZGUYBSABKAsyJC5wYi5nYW1lLnpoZy5TdGF0UHZQUmVwb3J0", + "UmVzcC5HcmFkZRI/CgtncmFkZVJlc3VsdBgGIAEoDjIqLnBiLmdhbWUuemhn", + "LlN0YXRQdlBSZXBvcnRSZXNwLkdyYWRlUmVzdWx0Ej8KC2dyYWRlUmVhc29u", + "GAcgASgOMioucGIuZ2FtZS56aGcuU3RhdFB2UFJlcG9ydFJlc3AuR3JhZGVS", + "ZWFzb24iaQoLR3JhZGVSZXN1bHQSCAoES2VlcBAAEgsKB0dyYWRlVXAQARIL", + "CgdMZXZlbFVwEAISCgoGU3RhclVwEAMSDQoJR3JhZGVEb3duEAQSDQoJTGV2", + "ZWxEb3duEAUSDAoIU3RhckRvd24QBiIwCgtHcmFkZVJlYXNvbhIHCgNXaW4Q", + "ABIICgRMb3N0EAESDgoKQnJhdmVQb2ludBACQiBaHmRjZy9nYW1lL3BiL2dh", + "bWUvemhnO3BiR2FtZVpoZ2IGcHJvdG8z")); descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, new pbr::FileDescriptor[] { }, new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportReq), global::Pb.Game.Zhg.StatPvPReportReq.Parser, new[]{ "WinCamp", "BattleId", "WinItems", "LostItems" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportReq.Types.Item), global::Pb.Game.Zhg.StatPvPReportReq.Types.Item.Parser, new[]{ "Uid", "Uname", "Damage", "DeDamage", "KillUnit", "DeKillUnit", "FirstBlood", "DeFirstBlood", "KillPlayer", "DeKillPlayer", "IsGeneral" }, null, null, null, null)}), - new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportResp), global::Pb.Game.Zhg.StatPvPReportResp.Parser, new[]{ "WinCamp", "BattleId", "WinItems", "LostItems" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportResp.Types.Item), global::Pb.Game.Zhg.StatPvPReportResp.Types.Item.Parser, new[]{ "Uid", "Uname", "Position", "Score" }, null, null, null, null)}) + new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportResp), global::Pb.Game.Zhg.StatPvPReportResp.Parser, new[]{ "WinCamp", "BattleId", "WinItems", "LostItems" }, null, new[]{ typeof(global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult), typeof(global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason) }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade), global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade.Parser, new[]{ "Grade_", "Level", "Star", "BravePoint" }, null, null, null, null), + new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.StatPvPReportResp.Types.Item), global::Pb.Game.Zhg.StatPvPReportResp.Types.Item.Parser, new[]{ "Uid", "Uname", "Position", "Score", "Grade", "GradeResult", "GradeReason" }, null, null, null, null)}) })); } #endregion @@ -1240,6 +1250,364 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static partial class Types { + public enum GradeResult { + /// + /// 不变(因为骁勇分抵扣) + /// + [pbr::OriginalName("Keep")] Keep = 0, + /// + /// 段位提升 + /// + [pbr::OriginalName("GradeUp")] GradeUp = 1, + /// + /// 段位等级提升 + /// + [pbr::OriginalName("LevelUp")] LevelUp = 2, + /// + /// 等级星级提升 + /// + [pbr::OriginalName("StarUp")] StarUp = 3, + /// + /// 掉段 + /// + [pbr::OriginalName("GradeDown")] GradeDown = 4, + /// + /// 降级 + /// + [pbr::OriginalName("LevelDown")] LevelDown = 5, + /// + /// 掉星 + /// + [pbr::OriginalName("StarDown")] StarDown = 6, + } + + public enum GradeReason { + /// + /// 因为获胜 + /// + [pbr::OriginalName("Win")] Win = 0, + /// + /// 因为战败 + /// + [pbr::OriginalName("Lost")] Lost = 1, + /// + /// 因为骁勇分保护,所以不掉星 + /// + [pbr::OriginalName("BravePoint")] BravePoint = 2, + } + + public sealed partial class Grade : pb::IMessage + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + , pb::IBufferMessage + #endif + { + private static readonly pb::MessageParser _parser = new pb::MessageParser(() => new Grade()); + private pb::UnknownFieldSet _unknownFields; + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pb::MessageParser Parser { get { return _parser; } } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public static pbr::MessageDescriptor Descriptor { + get { return global::Pb.Game.Zhg.StatPvPReportResp.Descriptor.NestedTypes[0]; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + pbr::MessageDescriptor pb::IMessage.Descriptor { + get { return Descriptor; } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade() { + OnConstruction(); + } + + partial void OnConstruction(); + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade(Grade other) : this() { + grade_ = other.grade_; + level_ = other.level_; + star_ = other.star_; + bravePoint_ = other.bravePoint_; + _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public Grade Clone() { + return new Grade(this); + } + + /// Field number for the "grade" field. + public const int Grade_FieldNumber = 1; + private int grade_; + /// + /// 段位 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Grade_ { + get { return grade_; } + set { + grade_ = value; + } + } + + /// Field number for the "level" field. + public const int LevelFieldNumber = 2; + private int level_; + /// + /// 段位等级 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Level { + get { return level_; } + set { + level_ = value; + } + } + + /// Field number for the "star" field. + public const int StarFieldNumber = 3; + private int star_; + /// + /// 等级星级 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int Star { + get { return star_; } + set { + star_ = value; + } + } + + /// Field number for the "bravePoint" field. + public const int BravePointFieldNumber = 4; + private long bravePoint_; + /// + /// 剩余 骁勇分(历史评分累计) + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public long BravePoint { + get { return bravePoint_; } + set { + bravePoint_ = value; + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override bool Equals(object other) { + return Equals(other as Grade); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public bool Equals(Grade other) { + if (ReferenceEquals(other, null)) { + return false; + } + if (ReferenceEquals(other, this)) { + return true; + } + if (Grade_ != other.Grade_) return false; + if (Level != other.Level) return false; + if (Star != other.Star) return false; + if (BravePoint != other.BravePoint) return false; + return Equals(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override int GetHashCode() { + int hash = 1; + if (Grade_ != 0) hash ^= Grade_.GetHashCode(); + if (Level != 0) hash ^= Level.GetHashCode(); + if (Star != 0) hash ^= Star.GetHashCode(); + if (BravePoint != 0L) hash ^= BravePoint.GetHashCode(); + if (_unknownFields != null) { + hash ^= _unknownFields.GetHashCode(); + } + return hash; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public override string ToString() { + return pb::JsonFormatter.ToDiagnosticString(this); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void WriteTo(pb::CodedOutputStream output) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + output.WriteRawMessage(this); + #else + if (Grade_ != 0) { + output.WriteRawTag(8); + output.WriteInt32(Grade_); + } + if (Level != 0) { + output.WriteRawTag(16); + output.WriteInt32(Level); + } + if (Star != 0) { + output.WriteRawTag(24); + output.WriteInt32(Star); + } + if (BravePoint != 0L) { + output.WriteRawTag(32); + output.WriteInt64(BravePoint); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(output); + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) { + if (Grade_ != 0) { + output.WriteRawTag(8); + output.WriteInt32(Grade_); + } + if (Level != 0) { + output.WriteRawTag(16); + output.WriteInt32(Level); + } + if (Star != 0) { + output.WriteRawTag(24); + output.WriteInt32(Star); + } + if (BravePoint != 0L) { + output.WriteRawTag(32); + output.WriteInt64(BravePoint); + } + if (_unknownFields != null) { + _unknownFields.WriteTo(ref output); + } + } + #endif + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public int CalculateSize() { + int size = 0; + if (Grade_ != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Grade_); + } + if (Level != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Level); + } + if (Star != 0) { + size += 1 + pb::CodedOutputStream.ComputeInt32Size(Star); + } + if (BravePoint != 0L) { + size += 1 + pb::CodedOutputStream.ComputeInt64Size(BravePoint); + } + if (_unknownFields != null) { + size += _unknownFields.CalculateSize(); + } + return size; + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(Grade other) { + if (other == null) { + return; + } + if (other.Grade_ != 0) { + Grade_ = other.Grade_; + } + if (other.Level != 0) { + Level = other.Level; + } + if (other.Star != 0) { + Star = other.Star; + } + if (other.BravePoint != 0L) { + BravePoint = other.BravePoint; + } + _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public void MergeFrom(pb::CodedInputStream input) { + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + input.ReadRawMessage(this); + #else + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input); + break; + case 8: { + Grade_ = input.ReadInt32(); + break; + } + case 16: { + Level = input.ReadInt32(); + break; + } + case 24: { + Star = input.ReadInt32(); + break; + } + case 32: { + BravePoint = input.ReadInt64(); + break; + } + } + } + #endif + } + + #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) { + uint tag; + while ((tag = input.ReadTag()) != 0) { + switch(tag) { + default: + _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input); + break; + case 8: { + Grade_ = input.ReadInt32(); + break; + } + case 16: { + Level = input.ReadInt32(); + break; + } + case 24: { + Star = input.ReadInt32(); + break; + } + case 32: { + BravePoint = input.ReadInt64(); + break; + } + } + } + } + #endif + + } + public sealed partial class Item : pb::IMessage #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE , pb::IBufferMessage @@ -1254,7 +1622,7 @@ namespace Pb.Game.Zhg { [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public static pbr::MessageDescriptor Descriptor { - get { return global::Pb.Game.Zhg.StatPvPReportResp.Descriptor.NestedTypes[0]; } + get { return global::Pb.Game.Zhg.StatPvPReportResp.Descriptor.NestedTypes[1]; } } [global::System.Diagnostics.DebuggerNonUserCodeAttribute] @@ -1278,6 +1646,9 @@ namespace Pb.Game.Zhg { uname_ = other.uname_; position_ = other.position_; score_ = other.score_; + grade_ = other.grade_ != null ? other.grade_.Clone() : null; + gradeResult_ = other.gradeResult_; + gradeReason_ = other.gradeReason_; _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); } @@ -1347,6 +1718,51 @@ namespace Pb.Game.Zhg { } } + /// Field number for the "grade" field. + public const int GradeFieldNumber = 5; + private global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade grade_; + /// + /// grade + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade Grade { + get { return grade_; } + set { + grade_ = value; + } + } + + /// Field number for the "gradeResult" field. + public const int GradeResultFieldNumber = 6; + private global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult gradeResult_ = global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep; + /// + /// 段位结果 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult GradeResult { + get { return gradeResult_; } + set { + gradeResult_ = value; + } + } + + /// Field number for the "gradeReason" field. + public const int GradeReasonFieldNumber = 7; + private global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason gradeReason_ = global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win; + /// + /// 段位结果原因 + /// + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] + [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] + public global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason GradeReason { + get { return gradeReason_; } + set { + gradeReason_ = value; + } + } + [global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] public override bool Equals(object other) { @@ -1366,6 +1782,9 @@ namespace Pb.Game.Zhg { if (Uname != other.Uname) return false; if (Position != other.Position) return false; if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Score, other.Score)) return false; + if (!object.Equals(Grade, other.Grade)) return false; + if (GradeResult != other.GradeResult) return false; + if (GradeReason != other.GradeReason) return false; return Equals(_unknownFields, other._unknownFields); } @@ -1377,6 +1796,9 @@ namespace Pb.Game.Zhg { if (Uname.Length != 0) hash ^= Uname.GetHashCode(); if (Position != 0) hash ^= Position.GetHashCode(); if (Score != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Score); + if (grade_ != null) hash ^= Grade.GetHashCode(); + if (GradeResult != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep) hash ^= GradeResult.GetHashCode(); + if (GradeReason != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win) hash ^= GradeReason.GetHashCode(); if (_unknownFields != null) { hash ^= _unknownFields.GetHashCode(); } @@ -1411,6 +1833,18 @@ namespace Pb.Game.Zhg { output.WriteRawTag(37); output.WriteFloat(Score); } + if (grade_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Grade); + } + if (GradeResult != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep) { + output.WriteRawTag(48); + output.WriteEnum((int) GradeResult); + } + if (GradeReason != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win) { + output.WriteRawTag(56); + output.WriteEnum((int) GradeReason); + } if (_unknownFields != null) { _unknownFields.WriteTo(output); } @@ -1437,6 +1871,18 @@ namespace Pb.Game.Zhg { output.WriteRawTag(37); output.WriteFloat(Score); } + if (grade_ != null) { + output.WriteRawTag(42); + output.WriteMessage(Grade); + } + if (GradeResult != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep) { + output.WriteRawTag(48); + output.WriteEnum((int) GradeResult); + } + if (GradeReason != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win) { + output.WriteRawTag(56); + output.WriteEnum((int) GradeReason); + } if (_unknownFields != null) { _unknownFields.WriteTo(ref output); } @@ -1459,6 +1905,15 @@ namespace Pb.Game.Zhg { if (Score != 0F) { size += 1 + 4; } + if (grade_ != null) { + size += 1 + pb::CodedOutputStream.ComputeMessageSize(Grade); + } + if (GradeResult != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) GradeResult); + } + if (GradeReason != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win) { + size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) GradeReason); + } if (_unknownFields != null) { size += _unknownFields.CalculateSize(); } @@ -1483,6 +1938,18 @@ namespace Pb.Game.Zhg { if (other.Score != 0F) { Score = other.Score; } + if (other.grade_ != null) { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade(); + } + Grade.MergeFrom(other.Grade); + } + if (other.GradeResult != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult.Keep) { + GradeResult = other.GradeResult; + } + if (other.GradeReason != global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason.Win) { + GradeReason = other.GradeReason; + } _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); } @@ -1514,6 +1981,21 @@ namespace Pb.Game.Zhg { Score = input.ReadFloat(); break; } + case 42: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade(); + } + input.ReadMessage(Grade); + break; + } + case 48: { + GradeResult = (global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult) input.ReadEnum(); + break; + } + case 56: { + GradeReason = (global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason) input.ReadEnum(); + break; + } } } #endif @@ -1545,6 +2027,21 @@ namespace Pb.Game.Zhg { Score = input.ReadFloat(); break; } + case 42: { + if (grade_ == null) { + Grade = new global::Pb.Game.Zhg.StatPvPReportResp.Types.Grade(); + } + input.ReadMessage(Grade); + break; + } + case 48: { + GradeResult = (global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeResult) input.ReadEnum(); + break; + } + case 56: { + GradeReason = (global::Pb.Game.Zhg.StatPvPReportResp.Types.GradeReason) input.ReadEnum(); + break; + } } } } diff --git a/game/pb/game/zhg/command.pb.go b/game/pb/game/zhg/command.pb.go index 2405121..9875bf1 100644 --- a/game/pb/game/zhg/command.pb.go +++ b/game/pb/game/zhg/command.pb.go @@ -21,6 +21,78 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type Grade struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // 段位 + Grade int32 `protobuf:"varint,1,opt,name=grade,proto3" json:"grade,omitempty"` // 段位 + Level int32 `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"` // 段位等级 + Star int32 `protobuf:"varint,3,opt,name=star,proto3" json:"star,omitempty"` // 等级星级 + BravePoint int64 `protobuf:"varint,4,opt,name=bravePoint,proto3" json:"bravePoint,omitempty"` // 剩余 骁勇分(历史评分累计) +} + +func (x *Grade) Reset() { + *x = Grade{} + if protoimpl.UnsafeEnabled { + mi := &file_game_zhg_command_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Grade) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Grade) ProtoMessage() {} + +func (x *Grade) ProtoReflect() protoreflect.Message { + mi := &file_game_zhg_command_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Grade.ProtoReflect.Descriptor instead. +func (*Grade) Descriptor() ([]byte, []int) { + return file_game_zhg_command_proto_rawDescGZIP(), []int{0} +} + +func (x *Grade) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *Grade) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *Grade) GetStar() int32 { + if x != nil { + return x.Star + } + return 0 +} + +func (x *Grade) GetBravePoint() int64 { + if x != nil { + return x.BravePoint + } + return 0 +} + // 加入游戏 push -> game.join type JoinGame struct { state protoimpl.MessageState @@ -30,6 +102,7 @@ type JoinGame struct { User *common.PbUser `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` NobilityLevel int32 `protobuf:"varint,2,opt,name=nobilityLevel,proto3" json:"nobilityLevel,omitempty"` // 贵族等级 3舰长 0总督? Coin int64 `protobuf:"varint,3,opt,name=coin,proto3" json:"coin,omitempty"` // 金币数量 + Grade *Grade `protobuf:"bytes,4,opt,name=grade,proto3" json:"grade,omitempty"` // 段位 CurrentTitle *common.TitleItem `protobuf:"bytes,10,opt,name=currentTitle,proto3" json:"currentTitle,omitempty"` // 当前佩戴的称号 CurrentElite *EliteItem `protobuf:"bytes,11,opt,name=currentElite,proto3" json:"currentElite,omitempty"` // 当前装备的精英单位 } @@ -37,7 +110,7 @@ type JoinGame struct { func (x *JoinGame) Reset() { *x = JoinGame{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[0] + mi := &file_game_zhg_command_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -50,7 +123,7 @@ func (x *JoinGame) String() string { func (*JoinGame) ProtoMessage() {} func (x *JoinGame) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[0] + mi := &file_game_zhg_command_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -63,7 +136,7 @@ func (x *JoinGame) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinGame.ProtoReflect.Descriptor instead. func (*JoinGame) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{0} + return file_game_zhg_command_proto_rawDescGZIP(), []int{1} } func (x *JoinGame) GetUser() *common.PbUser { @@ -87,6 +160,13 @@ func (x *JoinGame) GetCoin() int64 { return 0 } +func (x *JoinGame) GetGrade() *Grade { + if x != nil { + return x.Grade + } + return nil +} + func (x *JoinGame) GetCurrentTitle() *common.TitleItem { if x != nil { return x.CurrentTitle @@ -114,7 +194,7 @@ type CreateUnit struct { func (x *CreateUnit) Reset() { *x = CreateUnit{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[1] + mi := &file_game_zhg_command_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -127,7 +207,7 @@ func (x *CreateUnit) String() string { func (*CreateUnit) ProtoMessage() {} func (x *CreateUnit) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[1] + mi := &file_game_zhg_command_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -140,7 +220,7 @@ func (x *CreateUnit) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateUnit.ProtoReflect.Descriptor instead. func (*CreateUnit) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{1} + return file_game_zhg_command_proto_rawDescGZIP(), []int{2} } func (x *CreateUnit) GetUser() *common.PbUser { @@ -170,7 +250,7 @@ type Move struct { func (x *Move) Reset() { *x = Move{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[2] + mi := &file_game_zhg_command_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -183,7 +263,7 @@ func (x *Move) String() string { func (*Move) ProtoMessage() {} func (x *Move) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[2] + mi := &file_game_zhg_command_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -196,7 +276,7 @@ func (x *Move) ProtoReflect() protoreflect.Message { // Deprecated: Use Move.ProtoReflect.Descriptor instead. func (*Move) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{2} + return file_game_zhg_command_proto_rawDescGZIP(), []int{3} } func (x *Move) GetUser() *common.PbUser { @@ -225,7 +305,7 @@ type Outbreak struct { func (x *Outbreak) Reset() { *x = Outbreak{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[3] + mi := &file_game_zhg_command_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -238,7 +318,7 @@ func (x *Outbreak) String() string { func (*Outbreak) ProtoMessage() {} func (x *Outbreak) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[3] + mi := &file_game_zhg_command_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -251,7 +331,7 @@ func (x *Outbreak) ProtoReflect() protoreflect.Message { // Deprecated: Use Outbreak.ProtoReflect.Descriptor instead. func (*Outbreak) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{3} + return file_game_zhg_command_proto_rawDescGZIP(), []int{4} } func (x *Outbreak) GetUser() *common.PbUser { @@ -276,7 +356,7 @@ type OutbreakFood struct { func (x *OutbreakFood) Reset() { *x = OutbreakFood{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[4] + mi := &file_game_zhg_command_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -289,7 +369,7 @@ func (x *OutbreakFood) String() string { func (*OutbreakFood) ProtoMessage() {} func (x *OutbreakFood) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[4] + mi := &file_game_zhg_command_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -302,7 +382,7 @@ func (x *OutbreakFood) ProtoReflect() protoreflect.Message { // Deprecated: Use OutbreakFood.ProtoReflect.Descriptor instead. func (*OutbreakFood) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{4} + return file_game_zhg_command_proto_rawDescGZIP(), []int{5} } func (x *OutbreakFood) GetUser() *common.PbUser { @@ -345,7 +425,7 @@ type Wai struct { func (x *Wai) Reset() { *x = Wai{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[5] + mi := &file_game_zhg_command_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -358,7 +438,7 @@ func (x *Wai) String() string { func (*Wai) ProtoMessage() {} func (x *Wai) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[5] + mi := &file_game_zhg_command_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -371,7 +451,7 @@ func (x *Wai) ProtoReflect() protoreflect.Message { // Deprecated: Use Wai.ProtoReflect.Descriptor instead. func (*Wai) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{5} + return file_game_zhg_command_proto_rawDescGZIP(), []int{6} } func (x *Wai) GetUser() *common.PbUser { @@ -394,7 +474,7 @@ type BuildingMode struct { func (x *BuildingMode) Reset() { *x = BuildingMode{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[6] + mi := &file_game_zhg_command_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -407,7 +487,7 @@ func (x *BuildingMode) String() string { func (*BuildingMode) ProtoMessage() {} func (x *BuildingMode) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[6] + mi := &file_game_zhg_command_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -420,7 +500,7 @@ func (x *BuildingMode) ProtoReflect() protoreflect.Message { // Deprecated: Use BuildingMode.ProtoReflect.Descriptor instead. func (*BuildingMode) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{6} + return file_game_zhg_command_proto_rawDescGZIP(), []int{7} } func (x *BuildingMode) GetUser() *common.PbUser { @@ -451,7 +531,7 @@ type ChangeElite struct { func (x *ChangeElite) Reset() { *x = ChangeElite{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[7] + mi := &file_game_zhg_command_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -464,7 +544,7 @@ func (x *ChangeElite) String() string { func (*ChangeElite) ProtoMessage() {} func (x *ChangeElite) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[7] + mi := &file_game_zhg_command_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -477,7 +557,7 @@ func (x *ChangeElite) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeElite.ProtoReflect.Descriptor instead. func (*ChangeElite) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{7} + return file_game_zhg_command_proto_rawDescGZIP(), []int{8} } func (x *ChangeElite) GetCode() int32 { @@ -516,7 +596,7 @@ type ChangeTitle struct { func (x *ChangeTitle) Reset() { *x = ChangeTitle{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[8] + mi := &file_game_zhg_command_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -529,7 +609,7 @@ func (x *ChangeTitle) String() string { func (*ChangeTitle) ProtoMessage() {} func (x *ChangeTitle) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[8] + mi := &file_game_zhg_command_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -542,7 +622,7 @@ func (x *ChangeTitle) ProtoReflect() protoreflect.Message { // Deprecated: Use ChangeTitle.ProtoReflect.Descriptor instead. func (*ChangeTitle) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{8} + return file_game_zhg_command_proto_rawDescGZIP(), []int{9} } func (x *ChangeTitle) GetCode() int32 { @@ -587,7 +667,7 @@ type BuyBattleFood struct { func (x *BuyBattleFood) Reset() { *x = BuyBattleFood{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[9] + mi := &file_game_zhg_command_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -600,7 +680,7 @@ func (x *BuyBattleFood) String() string { func (*BuyBattleFood) ProtoMessage() {} func (x *BuyBattleFood) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[9] + mi := &file_game_zhg_command_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -613,7 +693,7 @@ func (x *BuyBattleFood) ProtoReflect() protoreflect.Message { // Deprecated: Use BuyBattleFood.ProtoReflect.Descriptor instead. func (*BuyBattleFood) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{9} + return file_game_zhg_command_proto_rawDescGZIP(), []int{10} } func (x *BuyBattleFood) GetUserId() int64 { @@ -651,7 +731,7 @@ type EliteItem struct { func (x *EliteItem) Reset() { *x = EliteItem{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[10] + mi := &file_game_zhg_command_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -664,7 +744,7 @@ func (x *EliteItem) String() string { func (*EliteItem) ProtoMessage() {} func (x *EliteItem) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[10] + mi := &file_game_zhg_command_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -677,7 +757,7 @@ func (x *EliteItem) ProtoReflect() protoreflect.Message { // Deprecated: Use EliteItem.ProtoReflect.Descriptor instead. func (*EliteItem) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{10} + return file_game_zhg_command_proto_rawDescGZIP(), []int{11} } func (x *EliteItem) GetId() int64 { @@ -710,6 +790,7 @@ type UserQueryMsg struct { User *common.PbUser `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // 用户信息 Rank []*UserQueryMsg_RankItem `protobuf:"bytes,2,rep,name=rank,proto3" json:"rank,omitempty"` // 排行数据(多个榜) Coin int64 `protobuf:"varint,3,opt,name=coin,proto3" json:"coin,omitempty"` // 弹币 + Grade *Grade `protobuf:"bytes,4,opt,name=grade,proto3" json:"grade,omitempty"` // 段位 Titles []*common.TitleItem `protobuf:"bytes,10,rep,name=titles,proto3" json:"titles,omitempty"` // 称号ID列表,具体称号配置 给接口取 Elites []*EliteItem `protobuf:"bytes,11,rep,name=elites,proto3" json:"elites,omitempty"` // 拥有的精英单位列表 CurrentTitle *common.TitleItem `protobuf:"bytes,12,opt,name=currentTitle,proto3" json:"currentTitle,omitempty"` // 当前佩戴的称号 @@ -719,7 +800,7 @@ type UserQueryMsg struct { func (x *UserQueryMsg) Reset() { *x = UserQueryMsg{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[11] + mi := &file_game_zhg_command_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -732,7 +813,7 @@ func (x *UserQueryMsg) String() string { func (*UserQueryMsg) ProtoMessage() {} func (x *UserQueryMsg) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[11] + mi := &file_game_zhg_command_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -745,7 +826,7 @@ func (x *UserQueryMsg) ProtoReflect() protoreflect.Message { // Deprecated: Use UserQueryMsg.ProtoReflect.Descriptor instead. func (*UserQueryMsg) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{11} + return file_game_zhg_command_proto_rawDescGZIP(), []int{12} } func (x *UserQueryMsg) GetUser() *common.PbUser { @@ -769,6 +850,13 @@ func (x *UserQueryMsg) GetCoin() int64 { return 0 } +func (x *UserQueryMsg) GetGrade() *Grade { + if x != nil { + return x.Grade + } + return nil +} + func (x *UserQueryMsg) GetTitles() []*common.TitleItem { if x != nil { return x.Titles @@ -811,7 +899,7 @@ type UserQueryMsg_RankItem struct { func (x *UserQueryMsg_RankItem) Reset() { *x = UserQueryMsg_RankItem{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_command_proto_msgTypes[12] + mi := &file_game_zhg_command_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -824,7 +912,7 @@ func (x *UserQueryMsg_RankItem) String() string { func (*UserQueryMsg_RankItem) ProtoMessage() {} func (x *UserQueryMsg_RankItem) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_command_proto_msgTypes[12] + mi := &file_game_zhg_command_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -837,7 +925,7 @@ func (x *UserQueryMsg_RankItem) ProtoReflect() protoreflect.Message { // Deprecated: Use UserQueryMsg_RankItem.ProtoReflect.Descriptor instead. func (*UserQueryMsg_RankItem) Descriptor() ([]byte, []int) { - return file_game_zhg_command_proto_rawDescGZIP(), []int{11, 0} + return file_game_zhg_command_proto_rawDescGZIP(), []int{12, 0} } func (x *UserQueryMsg_RankItem) GetRankType() int32 { @@ -867,101 +955,113 @@ var file_game_zhg_command_proto_rawDesc = []byte{ 0x0a, 0x16, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x7a, 0x68, 0x67, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0b, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe1, 0x01, 0x0a, 0x08, 0x4a, - 0x6f, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x24, - 0x0a, 0x0d, 0x6e, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6e, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, - 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, - 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, - 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x69, - 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, - 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, - 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x22, 0x47, - 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, - 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x41, 0x0a, 0x04, 0x4d, 0x6f, 0x76, 0x65, 0x12, - 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, - 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, - 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x31, 0x0a, 0x08, 0x4f, 0x75, - 0x74, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x7b, 0x0a, - 0x0c, 0x4f, 0x75, 0x74, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x46, 0x6f, 0x6f, 0x64, 0x12, 0x25, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, - 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x2c, 0x0a, 0x03, 0x57, 0x61, - 0x69, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x42, 0x75, 0x69, 0x6c, - 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6d, - 0x6f, 0x64, 0x65, 0x22, 0x62, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x45, 0x6c, 0x69, - 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, - 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x76, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, - 0x4f, 0x0a, 0x0d, 0x42, 0x75, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x6f, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, - 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x66, 0x6f, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, 0x6f, 0x6f, 0x64, - 0x22, 0x47, 0x0a, 0x09, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, - 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6f, 0x72, - 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xa7, 0x03, 0x0a, 0x0c, 0x55, 0x73, - 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, - 0x72, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x69, - 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x12, 0x2c, 0x0a, - 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, - 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x65, - 0x6c, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, - 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, - 0x74, 0x65, 0x6d, 0x52, 0x06, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x67, 0x0a, 0x05, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, + 0x12, 0x0a, 0x04, 0x73, 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, + 0x74, 0x61, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, + 0x69, 0x6e, 0x74, 0x22, 0x8b, 0x02, 0x0a, 0x08, 0x4a, 0x6f, 0x69, 0x6e, 0x47, 0x61, 0x6d, 0x65, + 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x24, 0x0a, 0x0d, 0x6e, 0x6f, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, + 0x6e, 0x6f, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, + 0x04, 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, + 0x6e, 0x12, 0x28, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x47, + 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x38, 0x0a, 0x0c, 0x63, + 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, - 0x45, 0x6c, 0x69, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, + 0x45, 0x6c, 0x69, 0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x69, 0x74, - 0x65, 0x1a, 0x50, 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, - 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, - 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, - 0x61, 0x6e, 0x6b, 0x42, 0x20, 0x5a, 0x1e, 0x64, 0x63, 0x67, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, - 0x70, 0x62, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x7a, 0x68, 0x67, 0x3b, 0x70, 0x62, 0x47, 0x61, - 0x6d, 0x65, 0x5a, 0x68, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x22, 0x47, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x6e, 0x69, 0x74, 0x12, + 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, + 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, + 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x75, 0x6e, 0x69, 0x74, 0x22, 0x41, 0x0a, 0x04, 0x4d, 0x6f, + 0x76, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0x31, 0x0a, + 0x08, 0x4f, 0x75, 0x74, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x22, 0x7b, 0x0a, 0x0c, 0x4f, 0x75, 0x74, 0x62, 0x72, 0x65, 0x61, 0x6b, 0x46, 0x6f, 0x6f, 0x64, + 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x6e, 0x69, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, + 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0x2c, 0x0a, + 0x03, 0x57, 0x61, 0x69, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, + 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x49, 0x0a, 0x0c, 0x42, + 0x75, 0x69, 0x6c, 0x64, 0x69, 0x6e, 0x67, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, + 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, + 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6d, 0x6f, 0x64, 0x65, 0x22, 0x62, 0x0a, 0x0b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x45, 0x6c, 0x69, 0x74, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, 0x04, 0x75, 0x73, 0x65, + 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, + 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x07, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x64, 0x22, 0x76, 0x0a, 0x0b, 0x43, 0x68, + 0x61, 0x6e, 0x67, 0x65, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x64, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x25, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x22, 0x4f, 0x0a, 0x0d, 0x42, 0x75, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, + 0x6f, 0x6f, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, + 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x12, + 0x12, 0x0a, 0x04, 0x66, 0x6f, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x66, + 0x6f, 0x6f, 0x64, 0x22, 0x47, 0x0a, 0x09, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, + 0x73, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0xd1, 0x03, 0x0a, + 0x0c, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x12, 0x25, 0x0a, + 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x70, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x62, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, + 0x75, 0x73, 0x65, 0x72, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, + 0x2e, 0x55, 0x73, 0x65, 0x72, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4d, 0x73, 0x67, 0x2e, 0x52, 0x61, + 0x6e, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, 0x12, 0x12, 0x0a, 0x04, + 0x63, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04, 0x63, 0x6f, 0x69, 0x6e, + 0x12, 0x28, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x12, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x2c, 0x0a, 0x06, 0x74, 0x69, + 0x74, 0x6c, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x06, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x65, 0x6c, 0x69, 0x74, + 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, + 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x06, 0x65, 0x6c, 0x69, 0x74, 0x65, 0x73, 0x12, 0x38, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, + 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, + 0x2e, 0x70, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x54, 0x69, 0x74, 0x6c, 0x65, + 0x49, 0x74, 0x65, 0x6d, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x54, 0x69, 0x74, + 0x6c, 0x65, 0x12, 0x3a, 0x0a, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x69, + 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, + 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x49, 0x74, 0x65, 0x6d, + 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x45, 0x6c, 0x69, 0x74, 0x65, 0x1a, 0x50, + 0x0a, 0x08, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x61, + 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x72, 0x61, + 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, + 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x72, 0x61, 0x6e, 0x6b, + 0x42, 0x20, 0x5a, 0x1e, 0x64, 0x63, 0x67, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x62, 0x2f, + 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x7a, 0x68, 0x67, 0x3b, 0x70, 0x62, 0x47, 0x61, 0x6d, 0x65, 0x5a, + 0x68, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -976,47 +1076,50 @@ func file_game_zhg_command_proto_rawDescGZIP() []byte { return file_game_zhg_command_proto_rawDescData } -var file_game_zhg_command_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_game_zhg_command_proto_msgTypes = make([]protoimpl.MessageInfo, 14) var file_game_zhg_command_proto_goTypes = []interface{}{ - (*JoinGame)(nil), // 0: pb.game.zhg.JoinGame - (*CreateUnit)(nil), // 1: pb.game.zhg.CreateUnit - (*Move)(nil), // 2: pb.game.zhg.Move - (*Outbreak)(nil), // 3: pb.game.zhg.Outbreak - (*OutbreakFood)(nil), // 4: pb.game.zhg.OutbreakFood - (*Wai)(nil), // 5: pb.game.zhg.Wai - (*BuildingMode)(nil), // 6: pb.game.zhg.BuildingMode - (*ChangeElite)(nil), // 7: pb.game.zhg.ChangeElite - (*ChangeTitle)(nil), // 8: pb.game.zhg.ChangeTitle - (*BuyBattleFood)(nil), // 9: pb.game.zhg.BuyBattleFood - (*EliteItem)(nil), // 10: pb.game.zhg.EliteItem - (*UserQueryMsg)(nil), // 11: pb.game.zhg.UserQueryMsg - (*UserQueryMsg_RankItem)(nil), // 12: pb.game.zhg.UserQueryMsg.RankItem - (*common.PbUser)(nil), // 13: pb.common.PbUser - (*common.TitleItem)(nil), // 14: pb.common.TitleItem + (*Grade)(nil), // 0: pb.game.zhg.Grade + (*JoinGame)(nil), // 1: pb.game.zhg.JoinGame + (*CreateUnit)(nil), // 2: pb.game.zhg.CreateUnit + (*Move)(nil), // 3: pb.game.zhg.Move + (*Outbreak)(nil), // 4: pb.game.zhg.Outbreak + (*OutbreakFood)(nil), // 5: pb.game.zhg.OutbreakFood + (*Wai)(nil), // 6: pb.game.zhg.Wai + (*BuildingMode)(nil), // 7: pb.game.zhg.BuildingMode + (*ChangeElite)(nil), // 8: pb.game.zhg.ChangeElite + (*ChangeTitle)(nil), // 9: pb.game.zhg.ChangeTitle + (*BuyBattleFood)(nil), // 10: pb.game.zhg.BuyBattleFood + (*EliteItem)(nil), // 11: pb.game.zhg.EliteItem + (*UserQueryMsg)(nil), // 12: pb.game.zhg.UserQueryMsg + (*UserQueryMsg_RankItem)(nil), // 13: pb.game.zhg.UserQueryMsg.RankItem + (*common.PbUser)(nil), // 14: pb.common.PbUser + (*common.TitleItem)(nil), // 15: pb.common.TitleItem } var file_game_zhg_command_proto_depIdxs = []int32{ - 13, // 0: pb.game.zhg.JoinGame.user:type_name -> pb.common.PbUser - 14, // 1: pb.game.zhg.JoinGame.currentTitle:type_name -> pb.common.TitleItem - 10, // 2: pb.game.zhg.JoinGame.currentElite:type_name -> pb.game.zhg.EliteItem - 13, // 3: pb.game.zhg.CreateUnit.user:type_name -> pb.common.PbUser - 13, // 4: pb.game.zhg.Move.user:type_name -> pb.common.PbUser - 13, // 5: pb.game.zhg.Outbreak.user:type_name -> pb.common.PbUser - 13, // 6: pb.game.zhg.OutbreakFood.user:type_name -> pb.common.PbUser - 13, // 7: pb.game.zhg.Wai.user:type_name -> pb.common.PbUser - 13, // 8: pb.game.zhg.BuildingMode.user:type_name -> pb.common.PbUser - 13, // 9: pb.game.zhg.ChangeElite.user:type_name -> pb.common.PbUser - 13, // 10: pb.game.zhg.ChangeTitle.user:type_name -> pb.common.PbUser - 13, // 11: pb.game.zhg.UserQueryMsg.user:type_name -> pb.common.PbUser - 12, // 12: pb.game.zhg.UserQueryMsg.rank:type_name -> pb.game.zhg.UserQueryMsg.RankItem - 14, // 13: pb.game.zhg.UserQueryMsg.titles:type_name -> pb.common.TitleItem - 10, // 14: pb.game.zhg.UserQueryMsg.elites:type_name -> pb.game.zhg.EliteItem - 14, // 15: pb.game.zhg.UserQueryMsg.currentTitle:type_name -> pb.common.TitleItem - 10, // 16: pb.game.zhg.UserQueryMsg.currentElite:type_name -> pb.game.zhg.EliteItem - 17, // [17:17] is the sub-list for method output_type - 17, // [17:17] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 14, // 0: pb.game.zhg.JoinGame.user:type_name -> pb.common.PbUser + 0, // 1: pb.game.zhg.JoinGame.grade:type_name -> pb.game.zhg.Grade + 15, // 2: pb.game.zhg.JoinGame.currentTitle:type_name -> pb.common.TitleItem + 11, // 3: pb.game.zhg.JoinGame.currentElite:type_name -> pb.game.zhg.EliteItem + 14, // 4: pb.game.zhg.CreateUnit.user:type_name -> pb.common.PbUser + 14, // 5: pb.game.zhg.Move.user:type_name -> pb.common.PbUser + 14, // 6: pb.game.zhg.Outbreak.user:type_name -> pb.common.PbUser + 14, // 7: pb.game.zhg.OutbreakFood.user:type_name -> pb.common.PbUser + 14, // 8: pb.game.zhg.Wai.user:type_name -> pb.common.PbUser + 14, // 9: pb.game.zhg.BuildingMode.user:type_name -> pb.common.PbUser + 14, // 10: pb.game.zhg.ChangeElite.user:type_name -> pb.common.PbUser + 14, // 11: pb.game.zhg.ChangeTitle.user:type_name -> pb.common.PbUser + 14, // 12: pb.game.zhg.UserQueryMsg.user:type_name -> pb.common.PbUser + 13, // 13: pb.game.zhg.UserQueryMsg.rank:type_name -> pb.game.zhg.UserQueryMsg.RankItem + 0, // 14: pb.game.zhg.UserQueryMsg.grade:type_name -> pb.game.zhg.Grade + 15, // 15: pb.game.zhg.UserQueryMsg.titles:type_name -> pb.common.TitleItem + 11, // 16: pb.game.zhg.UserQueryMsg.elites:type_name -> pb.game.zhg.EliteItem + 15, // 17: pb.game.zhg.UserQueryMsg.currentTitle:type_name -> pb.common.TitleItem + 11, // 18: pb.game.zhg.UserQueryMsg.currentElite:type_name -> pb.game.zhg.EliteItem + 19, // [19:19] is the sub-list for method output_type + 19, // [19:19] is the sub-list for method input_type + 19, // [19:19] is the sub-list for extension type_name + 19, // [19:19] is the sub-list for extension extendee + 0, // [0:19] is the sub-list for field type_name } func init() { file_game_zhg_command_proto_init() } @@ -1026,7 +1129,7 @@ func file_game_zhg_command_proto_init() { } if !protoimpl.UnsafeEnabled { file_game_zhg_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinGame); i { + switch v := v.(*Grade); i { case 0: return &v.state case 1: @@ -1038,7 +1141,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CreateUnit); i { + switch v := v.(*JoinGame); i { case 0: return &v.state case 1: @@ -1050,7 +1153,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Move); i { + switch v := v.(*CreateUnit); i { case 0: return &v.state case 1: @@ -1062,7 +1165,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Outbreak); i { + switch v := v.(*Move); i { case 0: return &v.state case 1: @@ -1074,7 +1177,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutbreakFood); i { + switch v := v.(*Outbreak); i { case 0: return &v.state case 1: @@ -1086,7 +1189,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Wai); i { + switch v := v.(*OutbreakFood); i { case 0: return &v.state case 1: @@ -1098,7 +1201,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuildingMode); i { + switch v := v.(*Wai); i { case 0: return &v.state case 1: @@ -1110,7 +1213,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeElite); i { + switch v := v.(*BuildingMode); i { case 0: return &v.state case 1: @@ -1122,7 +1225,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChangeTitle); i { + switch v := v.(*ChangeElite); i { case 0: return &v.state case 1: @@ -1134,7 +1237,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BuyBattleFood); i { + switch v := v.(*ChangeTitle); i { case 0: return &v.state case 1: @@ -1146,7 +1249,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EliteItem); i { + switch v := v.(*BuyBattleFood); i { case 0: return &v.state case 1: @@ -1158,7 +1261,7 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UserQueryMsg); i { + switch v := v.(*EliteItem); i { case 0: return &v.state case 1: @@ -1170,6 +1273,18 @@ func file_game_zhg_command_proto_init() { } } file_game_zhg_command_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UserQueryMsg); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_zhg_command_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UserQueryMsg_RankItem); i { case 0: return &v.state @@ -1188,7 +1303,7 @@ func file_game_zhg_command_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_game_zhg_command_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 14, NumExtensions: 0, NumServices: 0, }, diff --git a/game/pb/game/zhg/command.proto b/game/pb/game/zhg/command.proto index a3132f3..28449f7 100644 --- a/game/pb/game/zhg/command.proto +++ b/game/pb/game/zhg/command.proto @@ -6,11 +6,21 @@ import "common/common.proto"; option go_package = "dcg/game/pb/game/zhg;pbGameZhg"; +message Grade { + // 段位 + int32 grade = 1; // 段位 + int32 level = 2; // 段位等级 + int32 star = 3; // 等级星级 + int64 bravePoint = 4; // 剩余 骁勇分(历史评分累计) +} + // 加入游戏 push -> game.join message JoinGame{ pb.common.PbUser user = 1; int32 nobilityLevel = 2; // 贵族等级 3舰长 0总督? int64 coin = 3; // 金币数量 + Grade grade = 4; // 段位 + pb.common.TitleItem currentTitle = 10; // 当前佩戴的称号 EliteItem currentElite = 11; // 当前装备的精英单位 } @@ -94,6 +104,7 @@ message UserQueryMsg { pb.common.PbUser user = 1; // 用户信息 repeated RankItem rank = 2; // 排行数据(多个榜) int64 coin = 3; // 弹币 + Grade grade = 4; // 段位 repeated pb.common.TitleItem titles = 10; // 称号ID列表,具体称号配置 给接口取 repeated EliteItem elites = 11; // 拥有的精英单位列表 diff --git a/game/pb/game/zhg/stat.pb.go b/game/pb/game/zhg/stat.pb.go index cbe037a..75b5f67 100644 --- a/game/pb/game/zhg/stat.pb.go +++ b/game/pb/game/zhg/stat.pb.go @@ -20,6 +20,116 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type StatPvPReportResp_GradeResult int32 + +const ( + StatPvPReportResp_Keep StatPvPReportResp_GradeResult = 0 // 不变(因为骁勇分抵扣) + StatPvPReportResp_GradeUp StatPvPReportResp_GradeResult = 1 // 段位提升 + StatPvPReportResp_LevelUp StatPvPReportResp_GradeResult = 2 // 段位等级提升 + StatPvPReportResp_StarUp StatPvPReportResp_GradeResult = 3 // 等级星级提升 + StatPvPReportResp_GradeDown StatPvPReportResp_GradeResult = 4 // 掉段 + StatPvPReportResp_LevelDown StatPvPReportResp_GradeResult = 5 // 降级 + StatPvPReportResp_StarDown StatPvPReportResp_GradeResult = 6 // 掉星 +) + +// Enum value maps for StatPvPReportResp_GradeResult. +var ( + StatPvPReportResp_GradeResult_name = map[int32]string{ + 0: "Keep", + 1: "GradeUp", + 2: "LevelUp", + 3: "StarUp", + 4: "GradeDown", + 5: "LevelDown", + 6: "StarDown", + } + StatPvPReportResp_GradeResult_value = map[string]int32{ + "Keep": 0, + "GradeUp": 1, + "LevelUp": 2, + "StarUp": 3, + "GradeDown": 4, + "LevelDown": 5, + "StarDown": 6, + } +) + +func (x StatPvPReportResp_GradeResult) Enum() *StatPvPReportResp_GradeResult { + p := new(StatPvPReportResp_GradeResult) + *p = x + return p +} + +func (x StatPvPReportResp_GradeResult) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatPvPReportResp_GradeResult) Descriptor() protoreflect.EnumDescriptor { + return file_game_zhg_stat_proto_enumTypes[0].Descriptor() +} + +func (StatPvPReportResp_GradeResult) Type() protoreflect.EnumType { + return &file_game_zhg_stat_proto_enumTypes[0] +} + +func (x StatPvPReportResp_GradeResult) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatPvPReportResp_GradeResult.Descriptor instead. +func (StatPvPReportResp_GradeResult) EnumDescriptor() ([]byte, []int) { + return file_game_zhg_stat_proto_rawDescGZIP(), []int{1, 0} +} + +type StatPvPReportResp_GradeReason int32 + +const ( + StatPvPReportResp_Win StatPvPReportResp_GradeReason = 0 // 因为获胜 + StatPvPReportResp_Lost StatPvPReportResp_GradeReason = 1 // 因为战败 + StatPvPReportResp_BravePoint StatPvPReportResp_GradeReason = 2 // 因为骁勇分保护,所以不掉星 +) + +// Enum value maps for StatPvPReportResp_GradeReason. +var ( + StatPvPReportResp_GradeReason_name = map[int32]string{ + 0: "Win", + 1: "Lost", + 2: "BravePoint", + } + StatPvPReportResp_GradeReason_value = map[string]int32{ + "Win": 0, + "Lost": 1, + "BravePoint": 2, + } +) + +func (x StatPvPReportResp_GradeReason) Enum() *StatPvPReportResp_GradeReason { + p := new(StatPvPReportResp_GradeReason) + *p = x + return p +} + +func (x StatPvPReportResp_GradeReason) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StatPvPReportResp_GradeReason) Descriptor() protoreflect.EnumDescriptor { + return file_game_zhg_stat_proto_enumTypes[1].Descriptor() +} + +func (StatPvPReportResp_GradeReason) Type() protoreflect.EnumType { + return &file_game_zhg_stat_proto_enumTypes[1] +} + +func (x StatPvPReportResp_GradeReason) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StatPvPReportResp_GradeReason.Descriptor instead. +func (StatPvPReportResp_GradeReason) EnumDescriptor() ([]byte, []int) { + return file_game_zhg_stat_proto_rawDescGZIP(), []int{1, 1} +} + // PvP战报 request -> statistics.pvp.report type StatPvPReportReq struct { state protoimpl.MessageState @@ -291,6 +401,77 @@ func (x *StatPvPReportReq_Item) GetIsGeneral() bool { return false } +type StatPvPReportResp_Grade struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Grade int32 `protobuf:"varint,1,opt,name=grade,proto3" json:"grade,omitempty"` // 段位 + Level int32 `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"` // 段位等级 + Star int32 `protobuf:"varint,3,opt,name=star,proto3" json:"star,omitempty"` // 等级星级 + BravePoint int64 `protobuf:"varint,4,opt,name=bravePoint,proto3" json:"bravePoint,omitempty"` // 剩余 骁勇分(历史评分累计) +} + +func (x *StatPvPReportResp_Grade) Reset() { + *x = StatPvPReportResp_Grade{} + if protoimpl.UnsafeEnabled { + mi := &file_game_zhg_stat_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *StatPvPReportResp_Grade) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatPvPReportResp_Grade) ProtoMessage() {} + +func (x *StatPvPReportResp_Grade) ProtoReflect() protoreflect.Message { + mi := &file_game_zhg_stat_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatPvPReportResp_Grade.ProtoReflect.Descriptor instead. +func (*StatPvPReportResp_Grade) Descriptor() ([]byte, []int) { + return file_game_zhg_stat_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *StatPvPReportResp_Grade) GetGrade() int32 { + if x != nil { + return x.Grade + } + return 0 +} + +func (x *StatPvPReportResp_Grade) GetLevel() int32 { + if x != nil { + return x.Level + } + return 0 +} + +func (x *StatPvPReportResp_Grade) GetStar() int32 { + if x != nil { + return x.Star + } + return 0 +} + +func (x *StatPvPReportResp_Grade) GetBravePoint() int64 { + if x != nil { + return x.BravePoint + } + return 0 +} + type StatPvPReportResp_Item struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -300,12 +481,16 @@ type StatPvPReportResp_Item struct { Uname string `protobuf:"bytes,2,opt,name=uname,proto3" json:"uname,omitempty"` // 用户名 Position int32 `protobuf:"varint,3,opt,name=position,proto3" json:"position,omitempty"` // 名次(特指在某一方的名次) Score float32 `protobuf:"fixed32,4,opt,name=score,proto3" json:"score,omitempty"` // 评分(一位小数) + // grade + Grade *StatPvPReportResp_Grade `protobuf:"bytes,5,opt,name=grade,proto3" json:"grade,omitempty"` + GradeResult StatPvPReportResp_GradeResult `protobuf:"varint,6,opt,name=gradeResult,proto3,enum=pb.game.zhg.StatPvPReportResp_GradeResult" json:"gradeResult,omitempty"` // 段位结果 + GradeReason StatPvPReportResp_GradeReason `protobuf:"varint,7,opt,name=gradeReason,proto3,enum=pb.game.zhg.StatPvPReportResp_GradeReason" json:"gradeReason,omitempty"` // 段位结果原因 } func (x *StatPvPReportResp_Item) Reset() { *x = StatPvPReportResp_Item{} if protoimpl.UnsafeEnabled { - mi := &file_game_zhg_stat_proto_msgTypes[3] + mi := &file_game_zhg_stat_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -318,7 +503,7 @@ func (x *StatPvPReportResp_Item) String() string { func (*StatPvPReportResp_Item) ProtoMessage() {} func (x *StatPvPReportResp_Item) ProtoReflect() protoreflect.Message { - mi := &file_game_zhg_stat_proto_msgTypes[3] + mi := &file_game_zhg_stat_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -331,7 +516,7 @@ func (x *StatPvPReportResp_Item) ProtoReflect() protoreflect.Message { // Deprecated: Use StatPvPReportResp_Item.ProtoReflect.Descriptor instead. func (*StatPvPReportResp_Item) Descriptor() ([]byte, []int) { - return file_game_zhg_stat_proto_rawDescGZIP(), []int{1, 0} + return file_game_zhg_stat_proto_rawDescGZIP(), []int{1, 1} } func (x *StatPvPReportResp_Item) GetUid() int64 { @@ -362,6 +547,27 @@ func (x *StatPvPReportResp_Item) GetScore() float32 { return 0 } +func (x *StatPvPReportResp_Item) GetGrade() *StatPvPReportResp_Grade { + if x != nil { + return x.Grade + } + return nil +} + +func (x *StatPvPReportResp_Item) GetGradeResult() StatPvPReportResp_GradeResult { + if x != nil { + return x.GradeResult + } + return StatPvPReportResp_Keep +} + +func (x *StatPvPReportResp_Item) GetGradeReason() StatPvPReportResp_GradeReason { + if x != nil { + return x.GradeReason + } + return StatPvPReportResp_Win +} + var File_game_zhg_stat_proto protoreflect.FileDescriptor var file_game_zhg_stat_proto_rawDesc = []byte{ @@ -400,7 +606,7 @@ var file_game_zhg_stat_proto_rawDesc = []byte{ 0x61, 0x79, 0x65, 0x72, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1c, 0x0a, 0x09, 0x69, 0x73, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x69, 0x73, 0x47, - 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x22, 0xaf, 0x02, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x50, + 0x65, 0x6e, 0x65, 0x72, 0x61, 0x6c, 0x22, 0x8e, 0x06, 0x0a, 0x11, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x77, 0x69, 0x6e, 0x43, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, @@ -413,16 +619,46 @@ var file_game_zhg_stat_proto_rawDesc = []byte{ 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6c, 0x6f, 0x73, - 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x60, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x42, 0x20, 0x5a, 0x1e, 0x64, 0x63, 0x67, 0x2f, - 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x62, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x7a, 0x68, 0x67, - 0x3b, 0x70, 0x62, 0x47, 0x61, 0x6d, 0x65, 0x5a, 0x68, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x67, 0x0a, 0x05, 0x47, 0x72, 0x61, 0x64, 0x65, 0x12, + 0x14, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x73, + 0x74, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x74, 0x61, 0x72, 0x12, + 0x1e, 0x0a, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x0a, 0x62, 0x72, 0x61, 0x76, 0x65, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x1a, + 0xb8, 0x02, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x75, 0x6e, 0x61, 0x6d, 0x65, + 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, + 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, + 0x72, 0x65, 0x12, 0x3a, 0x0a, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x05, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x4c, + 0x0a, 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, + 0x67, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, + 0x0b, 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x4c, 0x0a, 0x0b, + 0x67, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2a, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x50, 0x76, 0x50, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x0b, 0x67, + 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x0b, 0x47, 0x72, + 0x61, 0x64, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x08, 0x0a, 0x04, 0x4b, 0x65, 0x65, + 0x70, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, 0x47, 0x72, 0x61, 0x64, 0x65, 0x55, 0x70, 0x10, 0x01, + 0x12, 0x0b, 0x0a, 0x07, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x55, 0x70, 0x10, 0x02, 0x12, 0x0a, 0x0a, + 0x06, 0x53, 0x74, 0x61, 0x72, 0x55, 0x70, 0x10, 0x03, 0x12, 0x0d, 0x0a, 0x09, 0x47, 0x72, 0x61, + 0x64, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x04, 0x12, 0x0d, 0x0a, 0x09, 0x4c, 0x65, 0x76, 0x65, + 0x6c, 0x44, 0x6f, 0x77, 0x6e, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x74, 0x61, 0x72, 0x44, + 0x6f, 0x77, 0x6e, 0x10, 0x06, 0x22, 0x30, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x52, 0x65, + 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x07, 0x0a, 0x03, 0x57, 0x69, 0x6e, 0x10, 0x00, 0x12, 0x08, 0x0a, + 0x04, 0x4c, 0x6f, 0x73, 0x74, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a, 0x42, 0x72, 0x61, 0x76, 0x65, + 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x42, 0x20, 0x5a, 0x1e, 0x64, 0x63, 0x67, 0x2f, 0x67, + 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x62, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x7a, 0x68, 0x67, 0x3b, + 0x70, 0x62, 0x47, 0x61, 0x6d, 0x65, 0x5a, 0x68, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -437,23 +673,30 @@ func file_game_zhg_stat_proto_rawDescGZIP() []byte { return file_game_zhg_stat_proto_rawDescData } -var file_game_zhg_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 4) +var file_game_zhg_stat_proto_enumTypes = make([]protoimpl.EnumInfo, 2) +var file_game_zhg_stat_proto_msgTypes = make([]protoimpl.MessageInfo, 5) var file_game_zhg_stat_proto_goTypes = []interface{}{ - (*StatPvPReportReq)(nil), // 0: pb.game.zhg.StatPvPReportReq - (*StatPvPReportResp)(nil), // 1: pb.game.zhg.StatPvPReportResp - (*StatPvPReportReq_Item)(nil), // 2: pb.game.zhg.StatPvPReportReq.Item - (*StatPvPReportResp_Item)(nil), // 3: pb.game.zhg.StatPvPReportResp.Item + (StatPvPReportResp_GradeResult)(0), // 0: pb.game.zhg.StatPvPReportResp.GradeResult + (StatPvPReportResp_GradeReason)(0), // 1: pb.game.zhg.StatPvPReportResp.GradeReason + (*StatPvPReportReq)(nil), // 2: pb.game.zhg.StatPvPReportReq + (*StatPvPReportResp)(nil), // 3: pb.game.zhg.StatPvPReportResp + (*StatPvPReportReq_Item)(nil), // 4: pb.game.zhg.StatPvPReportReq.Item + (*StatPvPReportResp_Grade)(nil), // 5: pb.game.zhg.StatPvPReportResp.Grade + (*StatPvPReportResp_Item)(nil), // 6: pb.game.zhg.StatPvPReportResp.Item } var file_game_zhg_stat_proto_depIdxs = []int32{ - 2, // 0: pb.game.zhg.StatPvPReportReq.winItems:type_name -> pb.game.zhg.StatPvPReportReq.Item - 2, // 1: pb.game.zhg.StatPvPReportReq.lostItems:type_name -> pb.game.zhg.StatPvPReportReq.Item - 3, // 2: pb.game.zhg.StatPvPReportResp.winItems:type_name -> pb.game.zhg.StatPvPReportResp.Item - 3, // 3: pb.game.zhg.StatPvPReportResp.lostItems:type_name -> pb.game.zhg.StatPvPReportResp.Item - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 4, // 0: pb.game.zhg.StatPvPReportReq.winItems:type_name -> pb.game.zhg.StatPvPReportReq.Item + 4, // 1: pb.game.zhg.StatPvPReportReq.lostItems:type_name -> pb.game.zhg.StatPvPReportReq.Item + 6, // 2: pb.game.zhg.StatPvPReportResp.winItems:type_name -> pb.game.zhg.StatPvPReportResp.Item + 6, // 3: pb.game.zhg.StatPvPReportResp.lostItems:type_name -> pb.game.zhg.StatPvPReportResp.Item + 5, // 4: pb.game.zhg.StatPvPReportResp.Item.grade:type_name -> pb.game.zhg.StatPvPReportResp.Grade + 0, // 5: pb.game.zhg.StatPvPReportResp.Item.gradeResult:type_name -> pb.game.zhg.StatPvPReportResp.GradeResult + 1, // 6: pb.game.zhg.StatPvPReportResp.Item.gradeReason:type_name -> pb.game.zhg.StatPvPReportResp.GradeReason + 7, // [7:7] is the sub-list for method output_type + 7, // [7:7] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name } func init() { file_game_zhg_stat_proto_init() } @@ -499,6 +742,18 @@ func file_game_zhg_stat_proto_init() { } } file_game_zhg_stat_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*StatPvPReportResp_Grade); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_game_zhg_stat_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*StatPvPReportResp_Item); i { case 0: return &v.state @@ -516,13 +771,14 @@ func file_game_zhg_stat_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_game_zhg_stat_proto_rawDesc, - NumEnums: 0, - NumMessages: 4, + NumEnums: 2, + NumMessages: 5, NumExtensions: 0, NumServices: 0, }, GoTypes: file_game_zhg_stat_proto_goTypes, DependencyIndexes: file_game_zhg_stat_proto_depIdxs, + EnumInfos: file_game_zhg_stat_proto_enumTypes, MessageInfos: file_game_zhg_stat_proto_msgTypes, }.Build() File_game_zhg_stat_proto = out.File diff --git a/game/pb/game/zhg/stat.proto b/game/pb/game/zhg/stat.proto index 4d98742..6de6126 100644 --- a/game/pb/game/zhg/stat.proto +++ b/game/pb/game/zhg/stat.proto @@ -27,11 +27,35 @@ message StatPvPReportReq { // PvP战报 回复 response -> statistics.pvp.report message StatPvPReportResp { + message Grade { + int32 grade = 1; // 段位 + int32 level = 2; // 段位等级 + int32 star = 3; // 等级星级 + int64 bravePoint = 4; // 剩余 骁勇分(历史评分累计) + } + enum GradeResult { + Keep = 0; // 不变(因为骁勇分抵扣) + GradeUp = 1; // 段位提升 + LevelUp = 2; // 段位等级提升 + StarUp = 3; // 等级星级提升 + GradeDown = 4; // 掉段 + LevelDown = 5; // 降级 + StarDown = 6; // 掉星 + } + enum GradeReason { + Win = 0; // 因为获胜 + Lost = 1; // 因为战败 + BravePoint = 2; // 因为骁勇分保护,所以不掉星 + } message Item { int64 uid = 1; // 用户ID string uname = 2; // 用户名 int32 position = 3; // 名次(特指在某一方的名次) float score = 4; // 评分(一位小数) + // grade + Grade grade = 5; + GradeResult gradeResult = 6; // 段位结果 + GradeReason gradeReason = 7; // 段位结果原因 } int32 winCamp = 1; // 获胜阵营 1-蓝 2-红 int64 battleId = 2; // 战斗ID