refactor: 粮草版,精英单位,称号。

main
NorthLan 2 years ago
parent 5a3febc5cc
commit 852471d7bb

@ -1,6 +0,0 @@
Name: usercenter.rpc
ListenOn: 127.0.0.1:8080
Etcd:
Hosts:
- 127.0.0.1:2379
Key: usercenter.rpc

@ -1,7 +0,0 @@
package config
import "github.com/zeromicro/go-zero/zrpc"
type Config struct {
zrpc.RpcServerConf
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type BuyEliteLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewBuyEliteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BuyEliteLogic {
return &BuyEliteLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *BuyEliteLogic) BuyElite(in *pb.EliteReq) (*pb.BuyEliteResp, error) {
// todo: add your logic here and delete this line
return &pb.BuyEliteResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type BuyTitleLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewBuyTitleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BuyTitleLogic {
return &BuyTitleLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *BuyTitleLogic) BuyTitle(in *pb.TitleReq) (*pb.BuyTitleResp, error) {
// todo: add your logic here and delete this line
return &pb.BuyTitleResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type ChangeCoinLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewChangeCoinLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChangeCoinLogic {
return &ChangeCoinLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// changeCoin 新增或扣减用户弹币
func (l *ChangeCoinLogic) ChangeCoin(in *pb.ChangeCoinReq) (*pb.Empty, error) {
// todo: add your logic here and delete this line
return &pb.Empty{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type ChangeEliteLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewChangeEliteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChangeEliteLogic {
return &ChangeEliteLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *ChangeEliteLogic) ChangeElite(in *pb.EliteReq) (*pb.ChangeEliteResp, error) {
// todo: add your logic here and delete this line
return &pb.ChangeEliteResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type ChangeTitleLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewChangeTitleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ChangeTitleLogic {
return &ChangeTitleLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *ChangeTitleLogic) ChangeTitle(in *pb.TitleReq) (*pb.ChangeTitleResp, error) {
// todo: add your logic here and delete this line
return &pb.ChangeTitleResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type DrawGiftPackLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewDrawGiftPackLogic(ctx context.Context, svcCtx *svc.ServiceContext) *DrawGiftPackLogic {
return &DrawGiftPackLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *DrawGiftPackLogic) DrawGiftPack(in *pb.DrawGiftPackReq) (*pb.DrawGiftPackResp, error) {
// todo: add your logic here and delete this line
return &pb.DrawGiftPackResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type GetUserCoinLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetUserCoinLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserCoinLogic {
return &GetUserCoinLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// getUserCoin 获取用户弹币
func (l *GetUserCoinLogic) GetUserCoin(in *pb.UserIdReq) (*pb.GetUserCoinResp, error) {
// todo: add your logic here and delete this line
return &pb.GetUserCoinResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type GetUserDetailsLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetUserDetailsLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserDetailsLogic {
return &GetUserDetailsLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// getUserDetails 获取用户详细信息
func (l *GetUserDetailsLogic) GetUserDetails(in *pb.UserIdReq) (*pb.UserDetailsResp, error) {
// todo: add your logic here and delete this line
return &pb.UserDetailsResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type GetUserIdByPUidLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGetUserIdByPUidLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetUserIdByPUidLogic {
return &GetUserIdByPUidLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// getUserIdByPUid 通过平台用户id获取系统用户ID
func (l *GetUserIdByPUidLogic) GetUserIdByPUid(in *pb.PlatformUserReq) (*pb.UserIdResp, error) {
// todo: add your logic here and delete this line
return &pb.UserIdResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type GiveEliteLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGiveEliteLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GiveEliteLogic {
return &GiveEliteLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GiveEliteLogic) GiveElite(in *pb.GiveEliteReq) (*pb.BuyEliteResp, error) {
// todo: add your logic here and delete this line
return &pb.BuyEliteResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type GiveTitleLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewGiveTitleLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GiveTitleLogic {
return &GiveTitleLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *GiveTitleLogic) GiveTitle(in *pb.GiveTitleReq) (*pb.BuyTitleResp, error) {
// todo: add your logic here and delete this line
return &pb.BuyTitleResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type RankPvpLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewRankPvpLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RankPvpLogic {
return &RankPvpLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// rankPvp pvp排行
func (l *RankPvpLogic) RankPvp(in *pb.RankPvpReq) (*pb.RankPvpResp, error) {
// todo: add your logic here and delete this line
return &pb.RankPvpResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type RankPvpSubmitLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewRankPvpSubmitLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RankPvpSubmitLogic {
return &RankPvpSubmitLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *RankPvpSubmitLogic) RankPvpSubmit(in *pb.RankPvpSubmitReq) (*pb.RankPvpSubmitResp, error) {
// todo: add your logic here and delete this line
return &pb.RankPvpSubmitResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type RetrievePlatformUserLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewRetrievePlatformUserLogic(ctx context.Context, svcCtx *svc.ServiceContext) *RetrievePlatformUserLogic {
return &RetrievePlatformUserLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// retrievePlatformUser 新增或获取用户
func (l *RetrievePlatformUserLogic) RetrievePlatformUser(in *pb.PlatformUserReq) (*pb.PlatformUserResp, error) {
// todo: add your logic here and delete this line
return &pb.PlatformUserResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type StatPvpReportLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewStatPvpReportLogic(ctx context.Context, svcCtx *svc.ServiceContext) *StatPvpReportLogic {
return &StatPvpReportLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *StatPvpReportLogic) StatPvpReport(in *pb.StatPvPReportReq) (*pb.StatPvPReportResp, error) {
// todo: add your logic here and delete this line
return &pb.StatPvPReportResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type TransferUserCoinLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewTransferUserCoinLogic(ctx context.Context, svcCtx *svc.ServiceContext) *TransferUserCoinLogic {
return &TransferUserCoinLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// transferUserCoin 转移用户弹币
func (l *TransferUserCoinLogic) TransferUserCoin(in *pb.TransferUserCoinReq) (*pb.TransferUserCoinResp, error) {
// todo: add your logic here and delete this line
return &pb.TransferUserCoinResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type UserBuyNobilityLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUserBuyNobilityLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserBuyNobilityLogic {
return &UserBuyNobilityLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *UserBuyNobilityLogic) UserBuyNobility(in *pb.UserBuyNobilityReq) (*pb.Empty, error) {
// todo: add your logic here and delete this line
return &pb.Empty{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type UserCheckInLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUserCheckInLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserCheckInLogic {
return &UserCheckInLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// UserCheckIn 用户签到|打卡
func (l *UserCheckInLogic) UserCheckIn(in *pb.UserIdReq) (*pb.UserCheckInResp, error) {
// todo: add your logic here and delete this line
return &pb.UserCheckInResp{}, nil
}

@ -1,30 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type UserRankPvpLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUserRankPvpLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserRankPvpLogic {
return &UserRankPvpLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
func (l *UserRankPvpLogic) UserRankPvp(in *pb.UserRankReq) (*pb.UserRankResp, error) {
// todo: add your logic here and delete this line
return &pb.UserRankResp{}, nil
}

@ -1,31 +0,0 @@
package logic
import (
"context"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/logx"
)
type UserSendGiftLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewUserSendGiftLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UserSendGiftLogic {
return &UserSendGiftLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
// UserSendGift 用户赠送礼物
func (l *UserSendGiftLogic) UserSendGift(in *pb.UserSendGiftReq) (*pb.Empty, error) {
// todo: add your logic here and delete this line
return &pb.Empty{}, nil
}

@ -1,132 +0,0 @@
// Code generated by goctl. DO NOT EDIT!
// Source: user_center.proto
package server
import (
"context"
"dcg/app/user_center/internal/logic"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
)
type UserCenterServer struct {
svcCtx *svc.ServiceContext
pb.UnimplementedUserCenterServer
}
func NewUserCenterServer(svcCtx *svc.ServiceContext) *UserCenterServer {
return &UserCenterServer{
svcCtx: svcCtx,
}
}
// retrievePlatformUser 新增或获取用户
func (s *UserCenterServer) RetrievePlatformUser(ctx context.Context, in *pb.PlatformUserReq) (*pb.PlatformUserResp, error) {
l := logic.NewRetrievePlatformUserLogic(ctx, s.svcCtx)
return l.RetrievePlatformUser(in)
}
// getUserDetails 获取用户详细信息
func (s *UserCenterServer) GetUserDetails(ctx context.Context, in *pb.UserIdReq) (*pb.UserDetailsResp, error) {
l := logic.NewGetUserDetailsLogic(ctx, s.svcCtx)
return l.GetUserDetails(in)
}
// getUserIdByPUid 通过平台用户id获取系统用户ID
func (s *UserCenterServer) GetUserIdByPUid(ctx context.Context, in *pb.PlatformUserReq) (*pb.UserIdResp, error) {
l := logic.NewGetUserIdByPUidLogic(ctx, s.svcCtx)
return l.GetUserIdByPUid(in)
}
// UserCheckIn 用户签到|打卡
func (s *UserCenterServer) UserCheckIn(ctx context.Context, in *pb.UserIdReq) (*pb.UserCheckInResp, error) {
l := logic.NewUserCheckInLogic(ctx, s.svcCtx)
return l.UserCheckIn(in)
}
// changeCoin 新增或扣减用户弹币
func (s *UserCenterServer) ChangeCoin(ctx context.Context, in *pb.ChangeCoinReq) (*pb.Empty, error) {
l := logic.NewChangeCoinLogic(ctx, s.svcCtx)
return l.ChangeCoin(in)
}
// getUserCoin 获取用户弹币
func (s *UserCenterServer) GetUserCoin(ctx context.Context, in *pb.UserIdReq) (*pb.GetUserCoinResp, error) {
l := logic.NewGetUserCoinLogic(ctx, s.svcCtx)
return l.GetUserCoin(in)
}
// transferUserCoin 转移用户弹币
func (s *UserCenterServer) TransferUserCoin(ctx context.Context, in *pb.TransferUserCoinReq) (*pb.TransferUserCoinResp, error) {
l := logic.NewTransferUserCoinLogic(ctx, s.svcCtx)
return l.TransferUserCoin(in)
}
// UserSendGift 用户赠送礼物
func (s *UserCenterServer) UserSendGift(ctx context.Context, in *pb.UserSendGiftReq) (*pb.Empty, error) {
l := logic.NewUserSendGiftLogic(ctx, s.svcCtx)
return l.UserSendGift(in)
}
func (s *UserCenterServer) UserBuyNobility(ctx context.Context, in *pb.UserBuyNobilityReq) (*pb.Empty, error) {
l := logic.NewUserBuyNobilityLogic(ctx, s.svcCtx)
return l.UserBuyNobility(in)
}
func (s *UserCenterServer) StatPvpReport(ctx context.Context, in *pb.StatPvPReportReq) (*pb.StatPvPReportResp, error) {
l := logic.NewStatPvpReportLogic(ctx, s.svcCtx)
return l.StatPvpReport(in)
}
func (s *UserCenterServer) DrawGiftPack(ctx context.Context, in *pb.DrawGiftPackReq) (*pb.DrawGiftPackResp, error) {
l := logic.NewDrawGiftPackLogic(ctx, s.svcCtx)
return l.DrawGiftPack(in)
}
// rankPvp pvp排行
func (s *UserCenterServer) RankPvp(ctx context.Context, in *pb.RankPvpReq) (*pb.RankPvpResp, error) {
l := logic.NewRankPvpLogic(ctx, s.svcCtx)
return l.RankPvp(in)
}
func (s *UserCenterServer) RankPvpSubmit(ctx context.Context, in *pb.RankPvpSubmitReq) (*pb.RankPvpSubmitResp, error) {
l := logic.NewRankPvpSubmitLogic(ctx, s.svcCtx)
return l.RankPvpSubmit(in)
}
func (s *UserCenterServer) UserRankPvp(ctx context.Context, in *pb.UserRankReq) (*pb.UserRankResp, error) {
l := logic.NewUserRankPvpLogic(ctx, s.svcCtx)
return l.UserRankPvp(in)
}
func (s *UserCenterServer) GiveElite(ctx context.Context, in *pb.GiveEliteReq) (*pb.BuyEliteResp, error) {
l := logic.NewGiveEliteLogic(ctx, s.svcCtx)
return l.GiveElite(in)
}
func (s *UserCenterServer) BuyElite(ctx context.Context, in *pb.EliteReq) (*pb.BuyEliteResp, error) {
l := logic.NewBuyEliteLogic(ctx, s.svcCtx)
return l.BuyElite(in)
}
func (s *UserCenterServer) GiveTitle(ctx context.Context, in *pb.GiveTitleReq) (*pb.BuyTitleResp, error) {
l := logic.NewGiveTitleLogic(ctx, s.svcCtx)
return l.GiveTitle(in)
}
func (s *UserCenterServer) BuyTitle(ctx context.Context, in *pb.TitleReq) (*pb.BuyTitleResp, error) {
l := logic.NewBuyTitleLogic(ctx, s.svcCtx)
return l.BuyTitle(in)
}
func (s *UserCenterServer) ChangeElite(ctx context.Context, in *pb.EliteReq) (*pb.ChangeEliteResp, error) {
l := logic.NewChangeEliteLogic(ctx, s.svcCtx)
return l.ChangeElite(in)
}
func (s *UserCenterServer) ChangeTitle(ctx context.Context, in *pb.TitleReq) (*pb.ChangeTitleResp, error) {
l := logic.NewChangeTitleLogic(ctx, s.svcCtx)
return l.ChangeTitle(in)
}

@ -1,13 +0,0 @@
package svc
import "dcg/app/user_center/internal/config"
type ServiceContext struct {
Config config.Config
}
func NewServiceContext(c config.Config) *ServiceContext {
return &ServiceContext{
Config: c,
}
}

@ -2777,8 +2777,7 @@ type RankPvpSubmitResp_Result struct {
Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
Coin int64 `protobuf:"varint,4,opt,name=coin,proto3" json:"coin,omitempty"` // 获取到的积分数
Title string `protobuf:"bytes,5,opt,name=title,proto3" json:"title,omitempty"` // 获取到的称号
TitleDuration int64 `protobuf:"varint,6,opt,name=titleDuration,proto3" json:"titleDuration,omitempty"` // 称号持续时间(单位: 秒,负数为无限长)
Title int64 `protobuf:"varint,5,opt,name=title,proto3" json:"title,omitempty"` // 获取到的称号ID
}
func (x *RankPvpSubmitResp_Result) Reset() {
@ -2841,17 +2840,10 @@ func (x *RankPvpSubmitResp_Result) GetCoin() int64 {
return 0
}
func (x *RankPvpSubmitResp_Result) GetTitle() string {
func (x *RankPvpSubmitResp_Result) GetTitle() int64 {
if x != nil {
return x.Title
}
return ""
}
func (x *RankPvpSubmitResp_Result) GetTitleDuration() int64 {
if x != nil {
return x.TitleDuration
}
return 0
}
@ -3209,166 +3201,164 @@ var file_user_center_proto_rawDesc = []byte{
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, 0xdb, 0x02, 0x0a, 0x11, 0x52, 0x61,
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, 0xa4, 0x01, 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, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74,
0x6c, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74,
0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x74, 0x69, 0x74, 0x6c, 0x65,
0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 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, 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, 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, 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,
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, 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, 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,
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, 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, 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,
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, 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, 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,
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,
}
var (

@ -239,8 +239,7 @@ message RankPvpSubmitResp {
string username = 2;
string avatar = 3;
int64 coin = 4; //
string title = 5; //
int64 titleDuration = 6; // (: ,)
int64 title = 5; // ID
}
message Item {
pb.vars.RankType rankType = 1; //

@ -1,40 +0,0 @@
package main
import (
"flag"
"fmt"
"dcg/app/user_center/internal/config"
"dcg/app/user_center/internal/server"
"dcg/app/user_center/internal/svc"
"dcg/app/user_center/pb"
"github.com/zeromicro/go-zero/core/conf"
"github.com/zeromicro/go-zero/core/service"
"github.com/zeromicro/go-zero/zrpc"
"google.golang.org/grpc"
"google.golang.org/grpc/reflection"
)
var configFile = flag.String("f", "etc/user_center.yaml", "the config file")
func main() {
flag.Parse()
var c config.Config
conf.MustLoad(*configFile, &c)
ctx := svc.NewServiceContext(c)
svr := server.NewUserCenterServer(ctx)
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
pb.RegisterUserCenterServer(grpcServer, svr)
if c.Mode == service.DevMode || c.Mode == service.TestMode {
reflection.Register(grpcServer)
}
})
defer s.Stop()
fmt.Printf("Starting rpc server at %s...\n", c.ListenOn)
s.Start()
}

@ -28,15 +28,17 @@ Kafka:
Topic: "notify-user-coin-dev"
ConsumerGroup: "notifyUserCoinConsumerG-dev"
Game:
# 30213831837876229 地球
AdminUserId: [30096265903603717, 30213831837876229]
Zhg:
# 1元=10 Coin (1元40个步兵)
CoinFoodRatio: 4
OutbreakCount: 2
OutbreakCount: 3
OutbreakBaseCost: 5
OutbreakCostDict:
1: 4 # 步兵
2: 9 # 骑兵
3: 5 # 弓箭手
1: 3 # 步兵
2: 7 # 骑兵
3: 4 # 弓箭手
4: 3 # 法师
Zhghz:
Zhgfb:
@ -100,7 +102,7 @@ Game:
Log:
Console:
Level: debug
Format: console-
Format: console
File:
Enabled: false
Level: info

@ -15,24 +15,90 @@ Kafka:
Addr: [ "127.0.0.1:9093" ]
Topic: "gift"
ConsumerGroup: "giftToPush"
GuardBuy:
Addr: [ "127.0.0.1:9093" ]
Topic: "guardBuy"
ConsumerGroup: "guardBuyConsumerG"
RewardPool:
Addr: [ "127.0.0.1:9093" ]
Topic: "rewardPool"
ConsumerGroup: "rewardPoolConsumerG"
UserCoin:
Addr: [ "127.0.0.1:9093" ]
Topic: "notify-user-coin"
ConsumerGroup: "notifyUserCoinConsumerG"
Game:
ModeDict:
8722013: 0
Common:
Commands: [ "q", "查询", "打卡", "签到" ]
# 30213831837876229 地球
AdminUserId: [30096265903603717, 30213831837876229]
Zhg:
Commands: [ "j", "加入", "加入游戏", "s", "w", "我在哪", "s1", "s2", "s3", "s4", "c1", "c2", "c3", "c4", "r1", "r2", "r3", "m1", "m2", "m3" ]
OutbreakCount: 5
OutbreakBaseCost: 300
# 1元=10 Coin (1元40个步兵)
CoinFoodRatio: 4
OutbreakCount: 3
OutbreakBaseCost: 5
OutbreakCostDict:
1: 120 # 步兵
2: 160 # 骑兵
3: 200 # 弓箭手
4: 220 # 法师
1: 3 # 步兵
2: 7 # 骑兵
3: 4 # 弓箭手
4: 3 # 法师
Zhghz:
Commands: [ "j", "加入", "t1", "t2", "t3", "t4", "t5", "t6", "t7", "t8", "w", "我在哪", "m1", "m2", "m3", "m4", "f", "开炮" ]
Zhgfb:
Commands: [ ]
Zhgzd:
MaxStrategicPoints: 100
StrategicRecoverSpeed: 5
CommandUnitDict:
1: "0001"
2: "0004"
3: "0003"
4: "0006"
CommandCostDict:
s:
Common: 0
Units:
"0001": 30
"0003": 35
"0004": 30
"0006": 30
c:
Common: 5
r:
Common: 10
p:
Common: 10
m:
Common: 5
DispatchCountDict:
"0001": 5
"0003": 5
"0004": 2
"0006": 5
GiftEffect:
StrategicMaximal:
# 这个好诶 10电池 1元
GiftIds: [ 30758,30971,31213,31478 ]
Addon: 10
Limit: 5
StrategicRecover:
# 打call 5电池 0.5元
GiftIds: [ 31278,31037,31212,31485 ]
Addon: 3
Duration: 5
Limit: 10
SupportSkill:
# 辣条随机 免费
- GiftIds: [ 1 ]
SkillIds: [ "S0001", "S0001", "S0002","S0002", "S0003", "S0005" ]
# 小花花 - 火墙 1电池 0.1元
- GiftIds: [ 31036, 31476 ]
SkillIds: [ "S0001" ]
# 牛哇牛哇 - 雷击 1电池 0.1元
- GiftIds: [ 31225, 31214, 31039, 31202, 31477 ]
SkillIds: [ "S0003" ]
# i了i了 - 箭雨 1电池 0.1元
- GiftIds: [ 31060, 31216 ]
SkillIds: [ "S0002" ]
SuperSkill:
# 干杯 超级技能
GiftIds: [30606, 31049, 31251, 31116]
Log:
Console:
Level: info

@ -37,6 +37,7 @@ type (
UserCoin Kafka // 用户金币变动消息
}
Game struct {
AdminUserId []int64 // 管理员ID
// Zhg 指挥官PvP模式
Zhg struct {
CoinFoodRatio float32 // 硬币到粮草的转换系数(乘)

@ -60,15 +60,19 @@ func NewZhgLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic {
}, cmd.Pattern{
Prefix: "bw",
Alias: []string{"购买精英", "买精英"},
ContentMaxLen: 1,
ContentMaxLen: 2,
}, cmd.Pattern{
Prefix: "zw",
Alias: []string{"装备精英"},
ContentMaxLen: 1,
ContentMaxLen: 2,
}, cmd.Pattern{
Prefix: "zz",
Alias: []string{"使用称号"},
ContentMaxLen: 1,
ContentMaxLen: 2,
}, cmd.Pattern{
Prefix: "结算",
Alias: nil,
ContentMaxLen: 2,
},
)),
}
@ -84,6 +88,8 @@ func NewZhgLiveGameLogic(svcCtx *svc.ServiceContext) *LiveGameLogic {
resp.RegisterCMDHandler(resp.handleBuyElite, "bw")
resp.RegisterCMDHandler(resp.handleChangeElite, "zw")
resp.RegisterCMDHandler(resp.handleChangeTitle, "zz")
//
resp.RegisterCMDHandler(resp.handleRankSubmit, "结算")
// gift
resp.RegisterGiftHandler(resp.handleGift)
return resp.LiveGameLogic
@ -103,17 +109,21 @@ func (h *ZhgGameLogic) handleQuery(roomId int64, _ []rune, user *pbCommon.PbUser
// details
if details, err := h.svcCtx.UserCenterRpc.GetUserDetails(h.svcCtx.Ctx, &usercenter.UserIdReq{UserId: user.UserId}); err == nil {
resp.Coin = details.Coin
if details.CurrentTitle != nil {
resp.CurrentTitle = &pbCommon.TitleItem{
Id: details.CurrentTitle.Id,
Name: details.CurrentTitle.Name,
Sort: details.CurrentTitle.Sort,
Remain: details.CurrentTitle.Remain,
}
}
if details.CurrentElite != nil {
resp.CurrentElite = &pbGameZhg.EliteItem{
Id: details.CurrentElite.Id,
Sort: details.CurrentElite.Sort,
Remain: details.CurrentElite.Remain,
}
}
resp.Titles = make([]*pbCommon.TitleItem, 0, len(details.Titles))
for _, item := range details.Titles {
resp.Titles = append(resp.Titles, &pbCommon.TitleItem{
@ -166,22 +176,29 @@ func (h *ZhgGameLogic) handleJoinGame(roomId int64, _ []rune, user *pbCommon.PbU
return
}
room.Broadcast(pb.PushZhgJoinGame, &pbGameZhg.JoinGame{
resp := &pbGameZhg.JoinGame{
User: user,
NobilityLevel: details.NobilityLevel,
Coin: details.Coin,
CurrentTitle: &pbCommon.TitleItem{
}
if details.CurrentTitle != nil {
resp.CurrentTitle = &pbCommon.TitleItem{
Id: details.CurrentTitle.Id,
Name: details.CurrentTitle.Name,
Sort: details.CurrentTitle.Sort,
Remain: details.CurrentTitle.Remain,
},
CurrentElite: &pbGameZhg.EliteItem{
}
}
if details.CurrentElite != nil {
resp.CurrentElite = &pbGameZhg.EliteItem{
Id: details.CurrentElite.Id,
Sort: details.CurrentElite.Sort,
Remain: details.CurrentElite.Remain,
},
})
}
}
room.Broadcast(pb.PushZhgJoinGame, resp)
}
func (h *ZhgGameLogic) handleOutbreak(roomId int64, content []rune, user *pbCommon.PbUser) {
@ -408,6 +425,61 @@ 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) {
room, err := manager.GameManager.RoomByLiveRoomId(roomId)
if err != nil {
return
}
if len(content) == 0 {
return
}
var isAdminUser bool
for _, i := range config.Config.Game.AdminUserId {
if user.UserId == i {
isAdminUser = true
break
}
}
if !isAdminUser {
return
}
rankType := pbVars.RankType_General
if r, err := strconv.ParseInt(string(content), 10, 0); err == nil {
rankType = pbVars.RankType(r)
}
rpcResp, err := h.svcCtx.UserCenterRpc.RankPvpSubmit(h.svcCtx.Ctx, &usercenter.RankPvpSubmitReq{
RankType: rankType,
AllRankType: false,
})
if err != nil {
code, msg, _ := grpcx.WrapGrpcErr(err)
logger.SLog.Errorf("结算排行榜时RPC错误 code:[%d] msg:[%s] %v", code, msg, err)
return
}
resp := &pbGameZhg.RankRvpSubmitResult{
Items: make([]*pbGameZhg.RankRvpSubmitResult_Item, 0, len(rpcResp.Items)),
}
for _, item := range rpcResp.Items {
tmp := &pbGameZhg.RankRvpSubmitResult_Item{
RankType: item.RankType,
Results: make([]*pbGameZhg.RankRvpSubmitResult_Result, 0, len(item.Results)),
}
for _, result := range item.Results {
tmp.Results = append(tmp.Results, &pbGameZhg.RankRvpSubmitResult_Result{
UserId: result.UserId,
Username: result.Username,
Avatar: result.Avatar,
Coin: result.Coin,
Title: result.Title,
})
}
resp.Items = append(resp.Items, tmp)
}
logger.SLog.Debugf("用户 [%s] 结算排行榜 %d\n%+v", user.Username, rankType, resp)
room.Broadcast(pb.PushZhgRankSubmit, resp)
}
func (h *ZhgGameLogic) handleGift(roomId int64, user *pbCommon.PbUser, gift *pbMq.MqGift) {
// TODO 暂时没有特殊礼物需求,留空
}

@ -30,20 +30,21 @@ namespace Pb.Game.Zhg {
"ZRgBIAEoDjIRLnBiLnZhcnMuUmFua1R5cGUSLAoFaXRlbXMYAiADKAsyHS5w",
"Yi5nYW1lLnpoZy5SYW5rUHZwUmVzcC5JdGVtGkEKBEl0ZW0SCwoDdWlkGAEg",
"ASgDEg0KBXVuYW1lGAIgASgJEg0KBXNjb3JlGAMgASgDEg4KBmF2YXRhchgE",
"IAEoCSL1AQoTUmFua1J2cFN1Ym1pdFJlc3VsdBI0CgVpdGVtcxgBIAMoCzIl",
"LnBiLmdhbWUuemhnLlJhbmtSdnBTdWJtaXRSZXN1bHQuSXRlbRpFCgZSZXdh",
"cmQSCwoDdWlkGAEgASgDEg0KBXVuYW1lGAIgASgJEhAKCGludGVncmFsGAMg",
"ASgDEg0KBXRpdGxlGAQgASgDGmEKBEl0ZW0SHwoEdHlwZRgBIAEoDjIRLnBi",
"LnZhcnMuUmFua1R5cGUSOAoHcmV3YXJkcxgCIAMoCzInLnBiLmdhbWUuemhn",
"LlJhbmtSdnBTdWJtaXRSZXN1bHQuUmV3YXJkQiBaHmRjZy9nYW1lL3BiL2dh",
"bWUvemhnO3BiR2FtZVpoZ2IGcHJvdG8z"));
"IAEoCSKLAgoTUmFua1J2cFN1Ym1pdFJlc3VsdBI0CgVpdGVtcxgBIAMoCzIl",
"LnBiLmdhbWUuemhnLlJhbmtSdnBTdWJtaXRSZXN1bHQuSXRlbRpXCgZSZXN1",
"bHQSDgoGdXNlcklkGAEgASgDEhAKCHVzZXJuYW1lGAIgASgJEg4KBmF2YXRh",
"chgDIAEoCRIMCgRjb2luGAQgASgDEg0KBXRpdGxlGAUgASgDGmUKBEl0ZW0S",
"IwoIcmFua1R5cGUYASABKA4yES5wYi52YXJzLlJhbmtUeXBlEjgKB3Jlc3Vs",
"dHMYAiADKAsyJy5wYi5nYW1lLnpoZy5SYW5rUnZwU3VibWl0UmVzdWx0LlJl",
"c3VsdEIgWh5kY2cvZ2FtZS9wYi9nYW1lL3poZztwYkdhbWVaaGdiBnByb3Rv",
"Mw=="));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Pb.Vars.VarsReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(null, null, new pbr::GeneratedClrTypeInfo[] {
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankPvpReq), global::Pb.Game.Zhg.RankPvpReq.Parser, new[]{ "Type", "TopN" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankPvpResp), global::Pb.Game.Zhg.RankPvpResp.Parser, new[]{ "Type", "Items" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankPvpResp.Types.Item), global::Pb.Game.Zhg.RankPvpResp.Types.Item.Parser, new[]{ "Uid", "Uname", "Score", "Avatar" }, null, null, null, null)}),
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult), global::Pb.Game.Zhg.RankRvpSubmitResult.Parser, new[]{ "Items" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward), global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward.Parser, new[]{ "Uid", "Uname", "Integral", "Title" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Item), global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Item.Parser, new[]{ "Type", "Rewards" }, null, null, null, null)})
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult), global::Pb.Game.Zhg.RankRvpSubmitResult.Parser, new[]{ "Items" }, null, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result), global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result.Parser, new[]{ "UserId", "Username", "Avatar", "Coin", "Title" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Item), global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Item.Parser, new[]{ "RankType", "Results" }, null, null, null, null)})
}));
}
#endregion
@ -1001,19 +1002,16 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static partial class Types {
/// <summary>
/// Reward 具体奖励
/// </summary>
public sealed partial class Reward : pb::IMessage<Reward>
public sealed partial class Result : pb::IMessage<Result>
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
, pb::IBufferMessage
#endif
{
private static readonly pb::MessageParser<Reward> _parser = new pb::MessageParser<Reward>(() => new Reward());
private static readonly pb::MessageParser<Result> _parser = new pb::MessageParser<Result>(() => new Result());
private pb::UnknownFieldSet _unknownFields;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public static pb::MessageParser<Reward> Parser { get { return _parser; } }
public static pb::MessageParser<Result> Parser { get { return _parser; } }
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@ -1029,7 +1027,7 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public Reward() {
public Result() {
OnConstruction();
}
@ -1037,70 +1035,77 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public Reward(Reward other) : this() {
uid_ = other.uid_;
uname_ = other.uname_;
integral_ = other.integral_;
public Result(Result other) : this() {
userId_ = other.userId_;
username_ = other.username_;
avatar_ = other.avatar_;
coin_ = other.coin_;
title_ = other.title_;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public Reward Clone() {
return new Reward(this);
public Result Clone() {
return new Result(this);
}
/// <summary>Field number for the "uid" field.</summary>
public const int UidFieldNumber = 1;
private long uid_;
/// <summary>
/// 用户ID
/// </summary>
/// <summary>Field number for the "userId" field.</summary>
public const int UserIdFieldNumber = 1;
private long userId_;
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public long Uid {
get { return uid_; }
public long UserId {
get { return userId_; }
set {
uid_ = value;
userId_ = value;
}
}
/// <summary>Field number for the "uname" field.</summary>
public const int UnameFieldNumber = 2;
private string uname_ = "";
/// <summary>
/// 用户名称
/// </summary>
/// <summary>Field number for the "username" field.</summary>
public const int UsernameFieldNumber = 2;
private string username_ = "";
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public string Uname {
get { return uname_; }
public string Username {
get { return username_; }
set {
uname_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
username_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
}
}
/// <summary>Field number for the "integral" field.</summary>
public const int IntegralFieldNumber = 3;
private long integral_;
/// <summary>Field number for the "avatar" field.</summary>
public const int AvatarFieldNumber = 3;
private string avatar_ = "";
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public string Avatar {
get { return avatar_; }
set {
avatar_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
}
}
/// <summary>Field number for the "coin" field.</summary>
public const int CoinFieldNumber = 4;
private long coin_;
/// <summary>
/// 积分奖励
/// 获取到的积分数
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public long Integral {
get { return integral_; }
public long Coin {
get { return coin_; }
set {
integral_ = value;
coin_ = value;
}
}
/// <summary>Field number for the "title" field.</summary>
public const int TitleFieldNumber = 4;
public const int TitleFieldNumber = 5;
private long title_;
/// <summary>
/// 称号奖励(称号ID列表)
/// 获取到的称号ID
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
@ -1114,21 +1119,22 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) {
return Equals(other as Reward);
return Equals(other as Result);
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public bool Equals(Reward other) {
public bool Equals(Result other) {
if (ReferenceEquals(other, null)) {
return false;
}
if (ReferenceEquals(other, this)) {
return true;
}
if (Uid != other.Uid) return false;
if (Uname != other.Uname) return false;
if (Integral != other.Integral) return false;
if (UserId != other.UserId) return false;
if (Username != other.Username) return false;
if (Avatar != other.Avatar) return false;
if (Coin != other.Coin) return false;
if (Title != other.Title) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -1137,9 +1143,10 @@ namespace Pb.Game.Zhg {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override int GetHashCode() {
int hash = 1;
if (Uid != 0L) hash ^= Uid.GetHashCode();
if (Uname.Length != 0) hash ^= Uname.GetHashCode();
if (Integral != 0L) hash ^= Integral.GetHashCode();
if (UserId != 0L) hash ^= UserId.GetHashCode();
if (Username.Length != 0) hash ^= Username.GetHashCode();
if (Avatar.Length != 0) hash ^= Avatar.GetHashCode();
if (Coin != 0L) hash ^= Coin.GetHashCode();
if (Title != 0L) hash ^= Title.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
@ -1159,20 +1166,24 @@ namespace Pb.Game.Zhg {
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
output.WriteRawMessage(this);
#else
if (Uid != 0L) {
if (UserId != 0L) {
output.WriteRawTag(8);
output.WriteInt64(Uid);
output.WriteInt64(UserId);
}
if (Uname.Length != 0) {
if (Username.Length != 0) {
output.WriteRawTag(18);
output.WriteString(Uname);
output.WriteString(Username);
}
if (Integral != 0L) {
output.WriteRawTag(24);
output.WriteInt64(Integral);
if (Avatar.Length != 0) {
output.WriteRawTag(26);
output.WriteString(Avatar);
}
if (Title != 0L) {
if (Coin != 0L) {
output.WriteRawTag(32);
output.WriteInt64(Coin);
}
if (Title != 0L) {
output.WriteRawTag(40);
output.WriteInt64(Title);
}
if (_unknownFields != null) {
@ -1185,20 +1196,24 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
if (Uid != 0L) {
if (UserId != 0L) {
output.WriteRawTag(8);
output.WriteInt64(Uid);
output.WriteInt64(UserId);
}
if (Uname.Length != 0) {
if (Username.Length != 0) {
output.WriteRawTag(18);
output.WriteString(Uname);
output.WriteString(Username);
}
if (Integral != 0L) {
output.WriteRawTag(24);
output.WriteInt64(Integral);
if (Avatar.Length != 0) {
output.WriteRawTag(26);
output.WriteString(Avatar);
}
if (Title != 0L) {
if (Coin != 0L) {
output.WriteRawTag(32);
output.WriteInt64(Coin);
}
if (Title != 0L) {
output.WriteRawTag(40);
output.WriteInt64(Title);
}
if (_unknownFields != null) {
@ -1211,14 +1226,17 @@ namespace Pb.Game.Zhg {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public int CalculateSize() {
int size = 0;
if (Uid != 0L) {
size += 1 + pb::CodedOutputStream.ComputeInt64Size(Uid);
if (UserId != 0L) {
size += 1 + pb::CodedOutputStream.ComputeInt64Size(UserId);
}
if (Uname.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(Uname);
if (Username.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(Username);
}
if (Avatar.Length != 0) {
size += 1 + pb::CodedOutputStream.ComputeStringSize(Avatar);
}
if (Integral != 0L) {
size += 1 + pb::CodedOutputStream.ComputeInt64Size(Integral);
if (Coin != 0L) {
size += 1 + pb::CodedOutputStream.ComputeInt64Size(Coin);
}
if (Title != 0L) {
size += 1 + pb::CodedOutputStream.ComputeInt64Size(Title);
@ -1231,18 +1249,21 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public void MergeFrom(Reward other) {
public void MergeFrom(Result other) {
if (other == null) {
return;
}
if (other.Uid != 0L) {
Uid = other.Uid;
if (other.UserId != 0L) {
UserId = other.UserId;
}
if (other.Uname.Length != 0) {
Uname = other.Uname;
if (other.Username.Length != 0) {
Username = other.Username;
}
if (other.Integral != 0L) {
Integral = other.Integral;
if (other.Avatar.Length != 0) {
Avatar = other.Avatar;
}
if (other.Coin != 0L) {
Coin = other.Coin;
}
if (other.Title != 0L) {
Title = other.Title;
@ -1263,18 +1284,22 @@ namespace Pb.Game.Zhg {
_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
break;
case 8: {
Uid = input.ReadInt64();
UserId = input.ReadInt64();
break;
}
case 18: {
Uname = input.ReadString();
Username = input.ReadString();
break;
}
case 24: {
Integral = input.ReadInt64();
case 26: {
Avatar = input.ReadString();
break;
}
case 32: {
Coin = input.ReadInt64();
break;
}
case 40: {
Title = input.ReadInt64();
break;
}
@ -1294,18 +1319,22 @@ namespace Pb.Game.Zhg {
_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
break;
case 8: {
Uid = input.ReadInt64();
UserId = input.ReadInt64();
break;
}
case 18: {
Uname = input.ReadString();
Username = input.ReadString();
break;
}
case 24: {
Integral = input.ReadInt64();
case 26: {
Avatar = input.ReadString();
break;
}
case 32: {
Coin = input.ReadInt64();
break;
}
case 40: {
Title = input.ReadInt64();
break;
}
@ -1316,9 +1345,6 @@ namespace Pb.Game.Zhg {
}
/// <summary>
/// Item 奖励项
/// </summary>
public sealed partial class Item : pb::IMessage<Item>
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
, pb::IBufferMessage
@ -1353,8 +1379,8 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public Item(Item other) : this() {
type_ = other.type_;
rewards_ = other.rewards_.Clone();
rankType_ = other.rankType_;
results_ = other.results_.Clone();
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
}
@ -1364,33 +1390,33 @@ namespace Pb.Game.Zhg {
return new Item(this);
}
/// <summary>Field number for the "type" field.</summary>
public const int TypeFieldNumber = 1;
private global::Pb.Vars.RankType type_ = global::Pb.Vars.RankType.Unknown;
/// <summary>Field number for the "rankType" field.</summary>
public const int RankTypeFieldNumber = 1;
private global::Pb.Vars.RankType rankType_ = global::Pb.Vars.RankType.Unknown;
/// <summary>
/// 类型
/// 排行榜类型
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public global::Pb.Vars.RankType Type {
get { return type_; }
public global::Pb.Vars.RankType RankType {
get { return rankType_; }
set {
type_ = value;
rankType_ = value;
}
}
/// <summary>Field number for the "rewards" field.</summary>
public const int RewardsFieldNumber = 2;
private static readonly pb::FieldCodec<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward> _repeated_rewards_codec
= pb::FieldCodec.ForMessage(18, global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward.Parser);
private readonly pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward> rewards_ = new pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward>();
/// <summary>Field number for the "results" field.</summary>
public const int ResultsFieldNumber = 2;
private static readonly pb::FieldCodec<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result> _repeated_results_codec
= pb::FieldCodec.ForMessage(18, global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result.Parser);
private readonly pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result> results_ = new pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result>();
/// <summary>
/// 奖励项
/// 上榜玩家?
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Reward> Rewards {
get { return rewards_; }
public pbc::RepeatedField<global::Pb.Game.Zhg.RankRvpSubmitResult.Types.Result> Results {
get { return results_; }
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
@ -1408,8 +1434,8 @@ namespace Pb.Game.Zhg {
if (ReferenceEquals(other, this)) {
return true;
}
if (Type != other.Type) return false;
if(!rewards_.Equals(other.rewards_)) return false;
if (RankType != other.RankType) return false;
if(!results_.Equals(other.results_)) return false;
return Equals(_unknownFields, other._unknownFields);
}
@ -1417,8 +1443,8 @@ namespace Pb.Game.Zhg {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override int GetHashCode() {
int hash = 1;
if (Type != global::Pb.Vars.RankType.Unknown) hash ^= Type.GetHashCode();
hash ^= rewards_.GetHashCode();
if (RankType != global::Pb.Vars.RankType.Unknown) hash ^= RankType.GetHashCode();
hash ^= results_.GetHashCode();
if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode();
}
@ -1437,11 +1463,11 @@ namespace Pb.Game.Zhg {
#if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
output.WriteRawMessage(this);
#else
if (Type != global::Pb.Vars.RankType.Unknown) {
if (RankType != global::Pb.Vars.RankType.Unknown) {
output.WriteRawTag(8);
output.WriteEnum((int) Type);
output.WriteEnum((int) RankType);
}
rewards_.WriteTo(output, _repeated_rewards_codec);
results_.WriteTo(output, _repeated_results_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(output);
}
@ -1452,11 +1478,11 @@ namespace Pb.Game.Zhg {
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
if (Type != global::Pb.Vars.RankType.Unknown) {
if (RankType != global::Pb.Vars.RankType.Unknown) {
output.WriteRawTag(8);
output.WriteEnum((int) Type);
output.WriteEnum((int) RankType);
}
rewards_.WriteTo(ref output, _repeated_rewards_codec);
results_.WriteTo(ref output, _repeated_results_codec);
if (_unknownFields != null) {
_unknownFields.WriteTo(ref output);
}
@ -1467,10 +1493,10 @@ namespace Pb.Game.Zhg {
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public int CalculateSize() {
int size = 0;
if (Type != global::Pb.Vars.RankType.Unknown) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
if (RankType != global::Pb.Vars.RankType.Unknown) {
size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) RankType);
}
size += rewards_.CalculateSize(_repeated_rewards_codec);
size += results_.CalculateSize(_repeated_results_codec);
if (_unknownFields != null) {
size += _unknownFields.CalculateSize();
}
@ -1483,10 +1509,10 @@ namespace Pb.Game.Zhg {
if (other == null) {
return;
}
if (other.Type != global::Pb.Vars.RankType.Unknown) {
Type = other.Type;
if (other.RankType != global::Pb.Vars.RankType.Unknown) {
RankType = other.RankType;
}
rewards_.Add(other.rewards_);
results_.Add(other.results_);
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
}
@ -1503,11 +1529,11 @@ namespace Pb.Game.Zhg {
_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
break;
case 8: {
Type = (global::Pb.Vars.RankType) input.ReadEnum();
RankType = (global::Pb.Vars.RankType) input.ReadEnum();
break;
}
case 18: {
rewards_.AddEntriesFrom(input, _repeated_rewards_codec);
results_.AddEntriesFrom(input, _repeated_results_codec);
break;
}
}
@ -1526,11 +1552,11 @@ namespace Pb.Game.Zhg {
_unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
break;
case 8: {
Type = (global::Pb.Vars.RankType) input.ReadEnum();
RankType = (global::Pb.Vars.RankType) input.ReadEnum();
break;
}
case 18: {
rewards_.AddEntriesFrom(ref input, _repeated_rewards_codec);
results_.AddEntriesFrom(ref input, _repeated_results_codec);
break;
}
}

@ -252,20 +252,20 @@ func (x *RankPvpResp_Item) GetAvatar() string {
return ""
}
// Reward 具体奖励
type RankRvpSubmitResult_Reward struct {
type RankRvpSubmitResult_Result struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Uid int64 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"` // 用户ID
Uname string `protobuf:"bytes,2,opt,name=uname,proto3" json:"uname,omitempty"` // 用户名称
Integral int64 `protobuf:"varint,3,opt,name=integral,proto3" json:"integral,omitempty"` // 积分奖励
Title int64 `protobuf:"varint,4,opt,name=title,proto3" json:"title,omitempty"` // 称号奖励(称号ID列表)
UserId int64 `protobuf:"varint,1,opt,name=userId,proto3" json:"userId,omitempty"`
Username string `protobuf:"bytes,2,opt,name=username,proto3" json:"username,omitempty"`
Avatar string `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
Coin int64 `protobuf:"varint,4,opt,name=coin,proto3" json:"coin,omitempty"` // 获取到的积分数
Title int64 `protobuf:"varint,5,opt,name=title,proto3" json:"title,omitempty"` // 获取到的称号ID
}
func (x *RankRvpSubmitResult_Reward) Reset() {
*x = RankRvpSubmitResult_Reward{}
func (x *RankRvpSubmitResult_Result) Reset() {
*x = RankRvpSubmitResult_Result{}
if protoimpl.UnsafeEnabled {
mi := &file_game_zhg_rank_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -273,13 +273,13 @@ func (x *RankRvpSubmitResult_Reward) Reset() {
}
}
func (x *RankRvpSubmitResult_Reward) String() string {
func (x *RankRvpSubmitResult_Result) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*RankRvpSubmitResult_Reward) ProtoMessage() {}
func (*RankRvpSubmitResult_Result) ProtoMessage() {}
func (x *RankRvpSubmitResult_Reward) ProtoReflect() protoreflect.Message {
func (x *RankRvpSubmitResult_Result) ProtoReflect() protoreflect.Message {
mi := &file_game_zhg_rank_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
@ -291,47 +291,53 @@ func (x *RankRvpSubmitResult_Reward) ProtoReflect() protoreflect.Message {
return mi.MessageOf(x)
}
// Deprecated: Use RankRvpSubmitResult_Reward.ProtoReflect.Descriptor instead.
func (*RankRvpSubmitResult_Reward) Descriptor() ([]byte, []int) {
// Deprecated: Use RankRvpSubmitResult_Result.ProtoReflect.Descriptor instead.
func (*RankRvpSubmitResult_Result) Descriptor() ([]byte, []int) {
return file_game_zhg_rank_proto_rawDescGZIP(), []int{2, 0}
}
func (x *RankRvpSubmitResult_Reward) GetUid() int64 {
func (x *RankRvpSubmitResult_Result) GetUserId() int64 {
if x != nil {
return x.Uid
return x.UserId
}
return 0
}
func (x *RankRvpSubmitResult_Reward) GetUname() string {
func (x *RankRvpSubmitResult_Result) GetUsername() string {
if x != nil {
return x.Uname
return x.Username
}
return ""
}
func (x *RankRvpSubmitResult_Reward) GetIntegral() int64 {
func (x *RankRvpSubmitResult_Result) GetAvatar() string {
if x != nil {
return x.Integral
return x.Avatar
}
return ""
}
func (x *RankRvpSubmitResult_Result) GetCoin() int64 {
if x != nil {
return x.Coin
}
return 0
}
func (x *RankRvpSubmitResult_Reward) GetTitle() int64 {
func (x *RankRvpSubmitResult_Result) GetTitle() int64 {
if x != nil {
return x.Title
}
return 0
}
// Item 奖励项
type RankRvpSubmitResult_Item struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Type vars.RankType `protobuf:"varint,1,opt,name=type,proto3,enum=pb.vars.RankType" json:"type,omitempty"` // 榜单类型
Rewards []*RankRvpSubmitResult_Reward `protobuf:"bytes,2,rep,name=rewards,proto3" json:"rewards,omitempty"` // 奖励项
RankType vars.RankType `protobuf:"varint,1,opt,name=rankType,proto3,enum=pb.vars.RankType" json:"rankType,omitempty"` // 排行榜类型
Results []*RankRvpSubmitResult_Result `protobuf:"bytes,2,rep,name=results,proto3" json:"results,omitempty"` // 上榜玩家?
}
func (x *RankRvpSubmitResult_Item) Reset() {
@ -366,16 +372,16 @@ func (*RankRvpSubmitResult_Item) Descriptor() ([]byte, []int) {
return file_game_zhg_rank_proto_rawDescGZIP(), []int{2, 1}
}
func (x *RankRvpSubmitResult_Item) GetType() vars.RankType {
func (x *RankRvpSubmitResult_Item) GetRankType() vars.RankType {
if x != nil {
return x.Type
return x.RankType
}
return vars.RankType(0)
}
func (x *RankRvpSubmitResult_Item) GetRewards() []*RankRvpSubmitResult_Reward {
func (x *RankRvpSubmitResult_Item) GetResults() []*RankRvpSubmitResult_Result {
if x != nil {
return x.Rewards
return x.Results
}
return nil
}
@ -403,28 +409,30 @@ var file_game_zhg_rank_proto_rawDesc = []byte{
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, 0xa8, 0x02, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x6b, 0x52,
0x61, 0x76, 0x61, 0x74, 0x61, 0x72, 0x22, 0xcc, 0x02, 0x0a, 0x13, 0x52, 0x61, 0x6e, 0x6b, 0x52,
0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x3b,
0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e,
0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x52, 0x61, 0x6e, 0x6b,
0x52, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x1a, 0x62, 0x0a, 0x06, 0x52,
0x65, 0x77, 0x61, 0x72, 0x64, 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, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
0x08, 0x69, 0x6e, 0x74, 0x65, 0x67, 0x72, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74,
0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x1a,
0x70, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x25, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18,
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, 0x78, 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, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x41,
0x0a, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x27, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68, 0x67, 0x2e, 0x52, 0x61,
0x6e, 0x6b, 0x52, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x52, 0x07, 0x72, 0x65, 0x77, 0x61, 0x72, 0x64,
0x73, 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,
0x52, 0x61, 0x6e, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x61, 0x6e, 0x6b, 0x54, 0x79,
0x70, 0x65, 0x12, 0x41, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x02, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x62, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x2e, 0x7a, 0x68,
0x67, 0x2e, 0x52, 0x61, 0x6e, 0x6b, 0x52, 0x76, 0x70, 0x53, 0x75, 0x62, 0x6d, 0x69, 0x74, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x07, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x73, 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 (
@ -445,7 +453,7 @@ var file_game_zhg_rank_proto_goTypes = []interface{}{
(*RankPvpResp)(nil), // 1: pb.game.zhg.RankPvpResp
(*RankRvpSubmitResult)(nil), // 2: pb.game.zhg.RankRvpSubmitResult
(*RankPvpResp_Item)(nil), // 3: pb.game.zhg.RankPvpResp.Item
(*RankRvpSubmitResult_Reward)(nil), // 4: pb.game.zhg.RankRvpSubmitResult.Reward
(*RankRvpSubmitResult_Result)(nil), // 4: pb.game.zhg.RankRvpSubmitResult.Result
(*RankRvpSubmitResult_Item)(nil), // 5: pb.game.zhg.RankRvpSubmitResult.Item
(vars.RankType)(0), // 6: pb.vars.RankType
}
@ -454,8 +462,8 @@ var file_game_zhg_rank_proto_depIdxs = []int32{
6, // 1: pb.game.zhg.RankPvpResp.type:type_name -> pb.vars.RankType
3, // 2: pb.game.zhg.RankPvpResp.items:type_name -> pb.game.zhg.RankPvpResp.Item
5, // 3: pb.game.zhg.RankRvpSubmitResult.items:type_name -> pb.game.zhg.RankRvpSubmitResult.Item
6, // 4: pb.game.zhg.RankRvpSubmitResult.Item.type:type_name -> pb.vars.RankType
4, // 5: pb.game.zhg.RankRvpSubmitResult.Item.rewards:type_name -> pb.game.zhg.RankRvpSubmitResult.Reward
6, // 4: pb.game.zhg.RankRvpSubmitResult.Item.rankType:type_name -> pb.vars.RankType
4, // 5: pb.game.zhg.RankRvpSubmitResult.Item.results:type_name -> pb.game.zhg.RankRvpSubmitResult.Result
6, // [6:6] is the sub-list for method output_type
6, // [6:6] is the sub-list for method input_type
6, // [6:6] is the sub-list for extension type_name
@ -518,7 +526,7 @@ func file_game_zhg_rank_proto_init() {
}
}
file_game_zhg_rank_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*RankRvpSubmitResult_Reward); i {
switch v := v.(*RankRvpSubmitResult_Result); i {
case 0:
return &v.state
case 1:

@ -26,17 +26,16 @@ message RankPvpResp {
// RankRvpSubmitResult push -> rank.submit ()
message RankRvpSubmitResult {
// Reward
message Reward {
int64 uid = 1; // ID
string uname = 2; //
int64 integral = 3; //
int64 title = 4; // (ID)
message Result {
int64 userId = 1;
string username = 2;
string avatar = 3;
int64 coin = 4; //
int64 title = 5; // ID
}
// Item
message Item {
pb.vars.RankType type = 1; //
repeated Reward rewards = 2; //
pb.vars.RankType rankType = 1; //
repeated Result results = 2; //
}
repeated Item items = 1;
}

@ -26,6 +26,7 @@ const (
PushZhgChangeElite = "game.change.elite"
PushZhgChangeTitle = "game.change.title"
PushZhgBuyFood = "game.buy.food"
PushZhgRankSubmit = "game.rank.submit"
)
// zhgzd

Loading…
Cancel
Save