diff --git a/modules/battle/configure.go b/modules/battle/configure.go
index 711cbfdf3..3536f9cbc 100644
--- a/modules/battle/configure.go
+++ b/modules/battle/configure.go
@@ -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
+}
diff --git a/modules/battle/fight/attribute/attributenumeric.go b/modules/battle/fight/attribute/attributenumeric.go
index 5d6b66e71..71bd1012b 100644
--- a/modules/battle/fight/attribute/attributenumeric.go
+++ b/modules/battle/fight/attribute/attributenumeric.go
@@ -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
+ ///
+ /// 基础数值
+ ///
+ BaseValue *FixedNumeric
+ ///
+ /// 附加数值
+ ///
+ AppendValue *FixedNumeric
+ ///
+ /// 附加百分比数值
+ ///
+ ProValue *FixedNumeric
+ ///
+ /// Buff附加数值
+ ///
+ BuffValue *FixedNumeric
+ ///
+ /// Buff附加百分比数值
+ ///
+ 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
}
diff --git a/modules/battle/fight/attribute/fixednumeric.go b/modules/battle/fight/attribute/fixednumeric.go
new file mode 100644
index 000000000..2b1444ba9
--- /dev/null
+++ b/modules/battle/fight/attribute/fixednumeric.go
@@ -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()
+}
diff --git a/modules/battle/fight/attribute/fixedpoint.go b/modules/battle/fight/attribute/fixedpoint.go
index 0fc766fbd..ffbd3a283 100644
--- a/modules/battle/fight/attribute/fixedpoint.go
+++ b/modules/battle/fight/attribute/fixedpoint.go
@@ -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
+}
+
+
+
diff --git a/modules/battle/fight/fightai.go b/modules/battle/fight/fightai.go
new file mode 100644
index 000000000..706359747
--- /dev/null
+++ b/modules/battle/fight/fightai.go
@@ -0,0 +1,4 @@
+package fight
+
+type FightAI struct {
+}
diff --git a/modules/battle/fight/fightbase.go b/modules/battle/fight/fightbase.go
index 609b9cae2..1305c8470 100644
--- a/modules/battle/fight/fightbase.go
+++ b/modules/battle/fight/fightbase.go
@@ -1,5 +1,9 @@
package fight
+func NewFightBase() *FightBase {
+ return &FightBase{}
+}
+
///
/// 每场战斗需要new一个类,因为客户端有同时进行多场战斗的需求,所以这里不能是单例
///
@@ -12,4 +16,66 @@ type FightBase struct {
/// 战斗是否进行中
///
fightIng bool
+ ///
+ /// 所有参战角色集合
+ ///
+ Roles []*FightRole
+ ///
+ /// 当前回合满足行动值大于等于100的所有角色
+ ///
+ CanAtkRoles []*FightRole
+ ///
+ /// 最后一次攻击的角色
+ ///
+ LastActionRole FightRole
+ ///
+ /// 是否自动战斗
+ ///
+ AutoFight bool
+ ///
+ /// 战斗AI
+ ///
+ FightAI FightAI
+ ///
+ /// 随机数种子
+ ///
+ RandSeed int64
+ ///
+ /// 事件系统
+ ///
+ FightEvent IFightEvent
+ ///
+ /// 战报
+ ///
+ FightLog FightLog
+
+ ///
+ /// 是否可进入下个循环
+ ///
+ ///
+ /// 客户端专用逻辑
+ ///
+ ToNextRound bool
+}
+
+///
+/// 开始战斗
+///
+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()
}
diff --git a/modules/battle/fight/fightevent.go b/modules/battle/fight/fightevent.go
new file mode 100644
index 000000000..6d932bfa1
--- /dev/null
+++ b/modules/battle/fight/fightevent.go
@@ -0,0 +1,17 @@
+package fight
+
+type IFightEvent interface {
+ Emit(eventNumber int, args ...interface{})
+}
+
+type FightEvent struct {
+}
+
+///
+/// 发送消息
+///
+///
+///
+func (this *FightEvent) Emit(eventNumber int, args ...interface{}) {
+
+}
diff --git a/modules/battle/fight/fightlog.go b/modules/battle/fight/fightlog.go
new file mode 100644
index 000000000..2d0338deb
--- /dev/null
+++ b/modules/battle/fight/fightlog.go
@@ -0,0 +1,14 @@
+package fight
+
+type FightLog struct {
+ Commands []interface{}
+}
+
+///
+/// 增加战报日志
+///
+///
+func (this *FightLog) AddCommand(log interface{}) {
+ //FightDebug.Log($"战报:{log.ToString()}");
+ // this.Commands = app
+}
diff --git a/modules/battle/fight/fightrole.go b/modules/battle/fight/fightrole.go
index 5791dc25f..309dcf949 100644
--- a/modules/battle/fight/fightrole.go
+++ b/modules/battle/fight/fightrole.go
@@ -1,4 +1,7 @@
package fight
+import "go_dreamfactory/modules/battle/fight/component"
+
type FightRole struct {
+ Data component.FightRoleData
}
diff --git a/modules/battle/modelBattle.go b/modules/battle/modelBattle.go
index f18d9fe76..c71efcb11 100644
--- a/modules/battle/modelBattle.go
+++ b/modules/battle/modelBattle.go
@@ -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)
diff --git a/pb/battle_db.pb.go b/pb/battle_db.pb.go
index 5ba4ffdbf..de2e3eae9 100644
--- a/pb/battle_db.pb.go
+++ b/pb/battle_db.pb.go
@@ -224,15 +224,17 @@ type BattleRole struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
- 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
- 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"` // 属性相关
+ 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" 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"` //队长技能
+ 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 (