package battle import ( "go_dreamfactory/comm" "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" "go_dreamfactory/modules" "go_dreamfactory/pb" "go.mongodb.org/mongo-driver/bson/primitive" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/x/bsonx" ) ///数据组件 type modelBattleComp struct { modules.MCompModel module *Battle } //组件初始化接口 func (this *modelBattleComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) { this.TableName = comm.TableForum this.MCompModel.Init(service, module, comp, opt) this.module = module.(*Battle) this.TableName = "battle" this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{ Keys: bsonx.Doc{{Key: "heroid", Value: bsonx.Int32(1)}}, }) return } //查询战斗记录 func (this *modelBattleComp) queryrecord(oid string) (record *pb.DBBattleRecord, err error) { record = &pb.DBBattleRecord{} if err = this.Get(oid, record); err != nil { this.module.Errorln(err) } return } //创建pve 战斗记录 func (this *modelBattleComp) createpve(session comm.IUserSession, btype pb.BattleType, req *pb.BattlePVEReq) (record *pb.DBBattleRecord, code pb.ErrorCode) { record = &pb.DBBattleRecord{ Id: primitive.NewObjectID().Hex(), Btype: btype, Ptype: req.Ptype, State: pb.BBattleState_in, RedCompId: session.GetUserId(), Redflist: make([]*pb.DBBattleFormt, 1), BlueCompId: "", Buleflist: make([]*pb.DBBattleFormt, len(req.Mformat)), } record.Redflist[0] = &pb.DBBattleFormt{ Leadpos: req.Leadpos, Team: make([]*pb.DBHero, len(req.Teamids)), } for i, v := range req.Teamids { if record.Redflist[0].Team[i], code = this.module.ModuleHero.GetHeroByObjID(session.GetUserId(), v); code != pb.ErrorCode_Success { return } } for i, v := range req.Mformat { if mf, err := this.module.configure.GetMonsterFormat(v); err != nil { code = pb.ErrorCode_ConfigNoFound return } else { record.Buleflist[i] = &pb.DBBattleFormt{ Leadpos: mf.CaptainId, Team: make([]*pb.DBHero, len(req.Teamids)), } for i1, v1 := range mf.MonsterList { if v1 == -1 { record.Buleflist[i].Team[i1] = nil } else { if monst, err := this.module.configure.GetMonster(v1); err != nil { code = pb.ErrorCode_ConfigNoFound } else { if record.Buleflist[i].Team[i1] = this.module.ModuleHero.CreateMonster(monst.HeroId, monst.Star, mf.Lv); record.Buleflist[i].Team[i1] == nil { log.Error("on found battle req data", log.Field{Key: "HeroId", Value: monst.HeroId}) code = pb.ErrorCode_ReqParameterError return } else { 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) } } } } } } // if err := this.Add(record.Id, record); err != nil { // this.module.Errorln(err) // return // } return }