上传战斗模块代码

This commit is contained in:
liwei1dao 2022-09-08 17:25:12 +08:00
parent 9166f265d1
commit 0891851f61
11 changed files with 343 additions and 67 deletions

View File

@ -8,6 +8,7 @@ import (
)
const (
game_equipsuit = "game_equipsuit.json" //套装技能表
game_monsterformat = "game_monsterformat.json" //整容表
game_monster = "game_monster.json" //怪物表
)
@ -22,6 +23,7 @@ type configureComp struct {
func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.MCompConfigure.Init(service, module, comp, options)
this.module = module.(*Battle)
this.LoadConfigure(game_equipsuit, cfg.NewGameEquipSuit)
this.LoadConfigure(game_monster, cfg.NewGameMonster)
this.LoadConfigure(game_monsterformat, cfg.NewGameMonsterFormat)
return
@ -60,3 +62,20 @@ func (this *configureComp) GetMonster(id int32) (result *cfg.GameMonsterData, er
}
return
}
//查询装备套装表
func (this *configureComp) Getequipsuit(id int32) (result *cfg.GameEquipSuitData, err error) {
var (
v interface{}
ok bool
)
if v, err = this.GetConfigure(game_monster); err != nil {
this.module.Errorln(err)
} else {
if result, ok = v.(*cfg.GameEquipSuit).GetDataMap()[id]; !ok {
err = fmt.Errorf("on found Getequipsuit:%d", id)
this.module.Errorln(err)
}
}
return
}

View File

@ -1,4 +1,48 @@
package attribute
type AttributeNumeric struct {
func NewAttributeNumeric(pData float32) *AttributeNumeric {
attribute := &AttributeNumeric{
BaseValue: NewFixedNumeric(pData),
ProValue: NewFixedNumeric(pData),
AppendValue: NewFixedNumeric(pData),
BuffProValue: NewFixedNumeric(pData),
BuffValue: NewFixedNumeric(pData),
}
attribute.SetBase(pData)
return attribute
}
type AttributeNumeric struct {
fixedValue *FixedPoint
/// <summary>
/// 基础数值
/// </summary>
BaseValue *FixedNumeric
/// <summary>
/// 附加数值
/// </summary>
AppendValue *FixedNumeric
/// <summary>
/// 附加百分比数值
/// </summary>
ProValue *FixedNumeric
/// <summary>
/// Buff附加数值
/// </summary>
BuffValue *FixedNumeric
/// <summary>
/// Buff附加百分比数值
/// </summary>
BuffProValue *FixedNumeric
}
func (this *AttributeNumeric) SetBase(value float32) float32 {
this.BaseValue.Set(value)
this.onChange()
return this.BaseValue.Value()
}
func (this *AttributeNumeric) onChange() {
// this.FixedValue = (BaseValue.Fixed*(1+ProValue.Fixed)+AppendValue.Fixed)*(1+BuffProValue.Fixed) + BuffValue.Fixed
}

View File

@ -0,0 +1,20 @@
package attribute
func NewFixedNumeric(pData float32) *FixedNumeric {
fixed := &FixedNumeric{}
fixed.Set(pData)
return fixed
}
type FixedNumeric struct {
baseValue *FixedPoint
}
func (this *FixedNumeric) Set(value float32) float32 {
this.baseValue = NewFixedPoint(value)
return this.baseValue.Scalar()
}
func (this *FixedNumeric) Value() float32 {
return this.baseValue.Scalar()
}

View File

@ -1,6 +1,7 @@
package attribute
import (
"fmt"
"math"
)
@ -15,10 +16,45 @@ func NewFixedPoint(value float32) *FixedPoint {
type FixedPoint struct {
rawValue int
scalar float32
}
func (this *FixedPoint) Scalar() float32 {
return this.scalar * 0.0001
return float32(this.rawValue) * 0.0001
}
func (this *FixedPoint) ToInt() int {
return this.rawValue / CARDINAL_NUMBER
}
func (this *FixedPoint) ToFloat() float32 {
return this.Scalar()
}
func (this *FixedPoint) ToString() string {
return fmt.Sprintf("%f", this.Scalar())
}
///+
func (this *FixedPoint) Add(y *FixedPoint) *FixedPoint {
this.rawValue += y.rawValue
return this
}
///-
func (this *FixedPoint) Reduce(y *FixedPoint) *FixedPoint {
this.rawValue -= y.rawValue
return this
}
///*
func (this *FixedPoint) Multiply(y *FixedPoint) *FixedPoint {
this.rawValue = (this.rawValue * y.rawValue) / CARDINAL_NUMBER
return this
}
/// /
func (this *FixedPoint) Divide(y *FixedPoint) *FixedPoint {
this.rawValue = (this.rawValue * CARDINAL_NUMBER) / y.rawValue
return this
}

View File

@ -0,0 +1,4 @@
package fight
type FightAI struct {
}

View File

@ -1,5 +1,9 @@
package fight
func NewFightBase() *FightBase {
return &FightBase{}
}
/// <summary>
/// 每场战斗需要new一个类因为客户端有同时进行多场战斗的需求所以这里不能是单例
/// </summary>
@ -12,4 +16,66 @@ type FightBase struct {
/// 战斗是否进行中
/// </summary>
fightIng bool
/// <summary>
/// 所有参战角色集合
/// </summary>
Roles []*FightRole
/// <summary>
/// 当前回合满足行动值大于等于100的所有角色
/// </summary>
CanAtkRoles []*FightRole
/// <summary>
/// 最后一次攻击的角色
/// </summary>
LastActionRole FightRole
/// <summary>
/// 是否自动战斗
/// </summary>
AutoFight bool
/// <summary>
/// 战斗AI
/// </summary>
FightAI FightAI
/// <summary>
/// 随机数种子
/// </summary>
RandSeed int64
/// <summary>
/// 事件系统
/// </summary>
FightEvent IFightEvent
/// <summary>
/// 战报
/// </summary>
FightLog FightLog
/// <summary>
/// 是否可进入下个循环
/// </summary>
/// <remarks>
/// 客户端专用逻辑
/// </remarks>
ToNextRound bool
}
/// <summary>
/// 开始战斗
/// </summary>
func (this *FightBase) StartFight() {
this.fightIng = true
// FightDebug.Log("=========开始战斗=========")
//记录战报
// var com = new(ComStartFight)
// FightLog.AddCommand(com)
//不直接用enum防止装箱拆箱
this.FightEvent.Emit(int(EventType_OnFightStart))
// BeforeStart()
// EmitCaptainSkill()
// EmitPassiveSkillSkill()
// //todo...符文技??
// InitRoleOperateValue()
// TurnRound()
}

View File

@ -0,0 +1,17 @@
package fight
type IFightEvent interface {
Emit(eventNumber int, args ...interface{})
}
type FightEvent struct {
}
/// <summary>
/// 发送消息
/// </summary>
/// <param name="eventNumber"></param>
/// <param name="args"></param>
func (this *FightEvent) Emit(eventNumber int, args ...interface{}) {
}

View File

@ -0,0 +1,14 @@
package fight
type FightLog struct {
Commands []interface{}
}
/// <summary>
/// 增加战报日志
/// </summary>
/// <param name="log"></param>
func (this *FightLog) AddCommand(log interface{}) {
//FightDebug.Log($"<color=#35ff02>战报:{log.ToString()}</color>");
// this.Commands = app
}

View File

@ -1,4 +1,7 @@
package fight
import "go_dreamfactory/modules/battle/fight/component"
type FightRole struct {
Data component.FightRoleData
}

View File

@ -91,6 +91,22 @@ func (this *modelBattleComp) createpve(session comm.IUserSession, conn *db.DBCon
for k, v := range hero.JuexProperty {
record.Redflist[0].Team[i].Property[k] += v
}
if hero.SuiteId != 0 { //主套装
if suit, err := this.module.configure.Getequipsuit(hero.SuiteId); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
} else {
record.Redflist[0].Team[i].MainSuitSkill = suit.Skill
}
}
if hero.SuiteExtId != 0 { //副套装
if suit, err := this.module.configure.Getequipsuit(hero.SuiteExtId); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
} else {
record.Redflist[0].Team[i].SubSuitSkill = suit.Skill
}
}
} else {
record.Redflist[0].Team[i] = nil
}
@ -129,6 +145,22 @@ func (this *modelBattleComp) createpve(session comm.IUserSession, conn *db.DBCon
NormalSkill: hero.NormalSkill,
Property: hero.Property,
}
if monst.Equip4 != 0 {
if suit, err := this.module.configure.Getequipsuit(monst.Equip4); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
} else {
record.Buleflist[i].Team[i1].MainSuitSkill = suit.Skill
}
}
if monst.Equip2 != 0 {
if suit, err := this.module.configure.Getequipsuit(monst.Equip2); err != nil {
code = pb.ErrorCode_ConfigNoFound
return
} else {
record.Buleflist[i].Team[i1].SubSuitSkill = suit.Skill
}
}
record.Buleflist[i].Team[i1].Property[comm.Hp] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Hp]) * mf.Hppro)
record.Buleflist[i].Team[i1].Property[comm.Atk] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Atk]) * mf.Atkpro)
record.Buleflist[i].Team[i1].Property[comm.Def] = int32(float32(record.Buleflist[i].Team[i1].Property[comm.Def]) * mf.Defpro)

View File

@ -227,12 +227,14 @@ type BattleRole struct {
Tid int32 `protobuf:"varint,1,opt,name=tid,proto3" json:"tid"` // 临时id
Oid string `protobuf:"bytes,2,opt,name=oid,proto3" json:"oid"` // 玩家英雄数据库id
Pos int32 `protobuf:"varint,3,opt,name=pos,proto3" json:"pos"` // 站位坐标
HeroID string `protobuf:"bytes,4,opt,name=heroID,proto3" json:"heroID"` // 英雄的配置表ID
HeroID string `protobuf:"bytes,4,opt,name=heroID,proto3" json:"heroID" bson:"heroID"` //英雄的配置表ID
Star int32 `protobuf:"varint,5,opt,name=star,proto3" json:"star"` // 英雄星级
Lv int32 `protobuf:"varint,6,opt,name=lv,proto3" json:"lv"` // 英雄等级
CaptainSkill int32 `protobuf:"varint,7,opt,name=captainSkill,proto3" json:"captainSkill" bson:"captainSkill"` //队长技能
NormalSkill []*SkillData `protobuf:"bytes,8,rep,name=normalSkill,proto3" json:"normalSkill" bson:"normalSkill"` //普通技能
Property map[string]int32 `protobuf:"bytes,9,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 属性相关
MainSuitSkill int32 `protobuf:"varint,8,opt,name=mainSuitSkill,proto3" json:"mainSuitSkill" bson:"mainSuitSkill"` /// 主套装技能
SubSuitSkill int32 `protobuf:"varint,9,opt,name=subSuitSkill,proto3" json:"subSuitSkill" bson:"subSuitSkill"` /// 副套装技能
NormalSkill []*SkillData `protobuf:"bytes,10,rep,name=normalSkill,proto3" json:"normalSkill" bson:"normalSkill"` //普通技能
Property map[string]int32 `protobuf:"bytes,11,rep,name=property,proto3" json:"property" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` // 属性相关
}
func (x *BattleRole) Reset() {
@ -316,6 +318,20 @@ func (x *BattleRole) GetCaptainSkill() int32 {
return 0
}
func (x *BattleRole) GetMainSuitSkill() int32 {
if x != nil {
return x.MainSuitSkill
}
return 0
}
func (x *BattleRole) GetSubSuitSkill() int32 {
if x != nil {
return x.SubSuitSkill
}
return 0
}
func (x *BattleRole) GetNormalSkill() []*SkillData {
if x != nil {
return x.NormalSkill
@ -519,7 +535,7 @@ var File_battle_battle_db_proto protoreflect.FileDescriptor
var file_battle_battle_db_proto_rawDesc = []byte{
0x0a, 0x16, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x2f, 0x62, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x5f,
0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x12, 0x68, 0x65, 0x72, 0x6f, 0x2f, 0x68,
0x65, 0x72, 0x6f, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc4, 0x02, 0x0a,
0x65, 0x72, 0x6f, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8e, 0x03, 0x0a,
0x0a, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x69, 0x64, 0x12, 0x10, 0x0a,
0x03, 0x6f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6f, 0x69, 0x64, 0x12,
@ -530,59 +546,64 @@ var file_battle_battle_db_proto_rawDesc = []byte{
0x02, 0x6c, 0x76, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x6c, 0x76, 0x12, 0x22, 0x0a,
0x0c, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x07, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x53, 0x6b, 0x69, 0x6c,
0x6c, 0x12, 0x2c, 0x0a, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c,
0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61,
0x74, 0x61, 0x52, 0x0b, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12,
0x35, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x09, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x19, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x50,
0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72,
0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72,
0x74, 0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c,
0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a,
0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a, 0x0d, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46,
0x6f, 0x72, 0x6d, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x1f,
0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22,
0x91, 0x03, 0x0a, 0x0e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02,
0x69, 0x64, 0x12, 0x21, 0x0a, 0x05, 0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05,
0x62, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03,
0x20, 0x01, 0x28, 0x0e, 0x32, 0x09, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52,
0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x65, 0x76, 0x65, 0x6c,
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23,
0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e,
0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74,
0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64,
0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x49,
0x64, 0x12, 0x2a, 0x0a, 0x08, 0x72, 0x65, 0x64, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f,
0x72, 0x6d, 0x74, 0x52, 0x08, 0x72, 0x65, 0x64, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a,
0x0a, 0x62, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28,
0x09, 0x52, 0x0a, 0x62, 0x6c, 0x75, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a,
0x09, 0x62, 0x75, 0x6c, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0e, 0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74,
0x52, 0x09, 0x62, 0x75, 0x6c, 0x65, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x0b, 0x72,
0x6f, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e,
0x32, 0x0d, 0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x52,
0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x06,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x44,
0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x52, 0x06, 0x72, 0x65, 0x73,
0x75, 0x6c, 0x74, 0x2a, 0x30, 0x0a, 0x0a, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x54, 0x79, 0x70,
0x65, 0x12, 0x07, 0x0a, 0x03, 0x6e, 0x69, 0x6c, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x76,
0x65, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x76, 0x70, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03,
0x70, 0x76, 0x62, 0x10, 0x03, 0x2a, 0x35, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70,
0x65, 0x12, 0x0c, 0x0a, 0x08, 0x6d, 0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0x00, 0x12,
0x0a, 0x0a, 0x06, 0x70, 0x61, 0x67, 0x6f, 0x64, 0x61, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6d,
0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x10, 0x02, 0x2a, 0x1f, 0x0a, 0x0c,
0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x06, 0x0a, 0x02,
0x69, 0x6e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x65, 0x6e, 0x64, 0x10, 0x02, 0x2a, 0x2b, 0x0a,
0x0c, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x12, 0x08, 0x0a,
0x04, 0x64, 0x72, 0x61, 0x77, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x10, 0x01,
0x12, 0x08, 0x0a, 0x04, 0x62, 0x75, 0x6c, 0x65, 0x10, 0x02, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b,
0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x75, 0x69, 0x74, 0x53, 0x6b, 0x69,
0x6c, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x75,
0x69, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x53, 0x75,
0x69, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x73,
0x75, 0x62, 0x53, 0x75, 0x69, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x2c, 0x0a, 0x0b, 0x6e,
0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x0a, 0x2e, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0b, 0x6e, 0x6f,
0x72, 0x6d, 0x61, 0x6c, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x12, 0x35, 0x0a, 0x08, 0x70, 0x72, 0x6f,
0x70, 0x65, 0x72, 0x74, 0x79, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x42, 0x61,
0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74,
0x79, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79,
0x1a, 0x3b, 0x0a, 0x0d, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x45, 0x6e, 0x74, 0x72,
0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x4a, 0x0a,
0x0d, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x12, 0x18,
0x0a, 0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x07, 0x6c, 0x65, 0x61, 0x64, 0x70, 0x6f, 0x73, 0x12, 0x1f, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d,
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52,
0x6f, 0x6c, 0x65, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x91, 0x03, 0x0a, 0x0e, 0x44, 0x42,
0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02,
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x21, 0x0a, 0x05,
0x62, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0b, 0x2e, 0x42, 0x61,
0x74, 0x74, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x62, 0x74, 0x79, 0x70, 0x65, 0x12,
0x1f, 0x0a, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x09,
0x2e, 0x50, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x05, 0x70, 0x74, 0x79, 0x70, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
0x52, 0x06, 0x70, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x23, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74,
0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a,
0x09, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09,
0x52, 0x09, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x2a, 0x0a, 0x08, 0x72,
0x65, 0x64, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e,
0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x08, 0x72,
0x65, 0x64, 0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x62, 0x6c, 0x75, 0x65, 0x43,
0x6f, 0x6d, 0x70, 0x49, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x62, 0x6c, 0x75,
0x65, 0x43, 0x6f, 0x6d, 0x70, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x09, 0x62, 0x75, 0x6c, 0x65, 0x66,
0x6c, 0x69, 0x73, 0x74, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x44, 0x42, 0x42,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x46, 0x6f, 0x72, 0x6d, 0x74, 0x52, 0x09, 0x62, 0x75, 0x6c, 0x65,
0x66, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x2f, 0x0a, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x72, 0x65,
0x73, 0x75, 0x6c, 0x74, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x42,
0x61, 0x74, 0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x52, 0x0b, 0x72, 0x6f, 0x75, 0x6e, 0x64,
0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x25, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74,
0x18, 0x0b, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0d, 0x2e, 0x44, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x65, 0x43, 0x6f, 0x6d, 0x70, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2a, 0x30, 0x0a,
0x0a, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x6e,
0x69, 0x6c, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x76, 0x65, 0x10, 0x01, 0x12, 0x07, 0x0a,
0x03, 0x70, 0x76, 0x70, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x70, 0x76, 0x62, 0x10, 0x03, 0x2a,
0x35, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0c, 0x0a, 0x08, 0x6d,
0x61, 0x69, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x70, 0x61, 0x67,
0x6f, 0x64, 0x61, 0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x6d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e,
0x74, 0x61, 0x73, 0x79, 0x10, 0x02, 0x2a, 0x1f, 0x0a, 0x0c, 0x42, 0x42, 0x61, 0x74, 0x74, 0x6c,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x69, 0x6e, 0x10, 0x00, 0x12, 0x07,
0x0a, 0x03, 0x65, 0x6e, 0x64, 0x10, 0x02, 0x2a, 0x2b, 0x0a, 0x0c, 0x44, 0x42, 0x42, 0x61, 0x74,
0x74, 0x6c, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x12, 0x08, 0x0a, 0x04, 0x64, 0x72, 0x61, 0x77, 0x10,
0x00, 0x12, 0x07, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x62, 0x75,
0x6c, 0x65, 0x10, 0x02, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (