113 lines
3.1 KiB
Go
113 lines
3.1 KiB
Go
package equipment
|
|
|
|
import (
|
|
"go_dreamfactory/lego/core"
|
|
"go_dreamfactory/lego/sys/log"
|
|
"go_dreamfactory/modules"
|
|
"go_dreamfactory/pb"
|
|
cfg "go_dreamfactory/sys/configure/structs"
|
|
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
"go.mongodb.org/mongo-driver/mongo"
|
|
"go.mongodb.org/mongo-driver/x/bsonx"
|
|
)
|
|
|
|
///装备 数据组件
|
|
type Model_Equipment_Comp struct {
|
|
modules.Model_Comp
|
|
module *Equipment
|
|
}
|
|
|
|
//组件初始化接口
|
|
func (this *Model_Equipment_Comp) Init(service core.IService, module core.IModule, comp core.IModuleComp, opt core.IModuleOptions) (err error) {
|
|
this.Model_Comp.Init(service, module, comp, opt)
|
|
this.module = module.(*Equipment)
|
|
this.TableName = "equipment"
|
|
//创建uid索引
|
|
this.DB.CreateIndex(core.SqlTable(this.TableName), mongo.IndexModel{
|
|
Keys: bsonx.Doc{{Key: "uid", Value: bsonx.Int32(1)}},
|
|
})
|
|
return
|
|
}
|
|
|
|
//查询用户装备数据
|
|
func (this *Model_Equipment_Comp) Equipment_QueryUserEquipmentsPackById(uId, id string) (equipment *pb.DB_Equipment, err error) {
|
|
equipment = &pb.DB_Equipment{}
|
|
err = this.GetListObj(uId, id, equipment)
|
|
return
|
|
}
|
|
|
|
///查询用户的武器背包
|
|
func (this *Model_Equipment_Comp) Equipment_QueryUserEquipmentsPack(uId string) (equipments []*pb.DB_Equipment, err error) {
|
|
equipments = make([]*pb.DB_Equipment, 0)
|
|
err = this.GetList(uId, &equipments)
|
|
return
|
|
}
|
|
|
|
//添加装备
|
|
func (this *Model_Equipment_Comp) Equipment_AddEquipmentsToPack(uId string, cIds map[int32]uint32) (err error) {
|
|
var (
|
|
configure *cfg.Game_equip
|
|
equipments []*pb.DB_Equipment
|
|
iskeep bool
|
|
add map[string]*pb.DB_Equipment
|
|
update map[string]*pb.DB_Equipment
|
|
)
|
|
if configure, err = this.module.configure_comp.GetEquipmentConfigure(); err != nil {
|
|
return
|
|
}
|
|
if equipments, err = this.Equipment_QueryUserEquipmentsPack(uId); err != nil {
|
|
return
|
|
}
|
|
add = make(map[string]*pb.DB_Equipment)
|
|
update = make(map[string]*pb.DB_Equipment)
|
|
for k, v := range cIds {
|
|
iskeep = false
|
|
for _, equipment := range equipments {
|
|
if equipment.CId == k && equipment.IsInitialState {
|
|
update[equipment.Id] = equipment
|
|
equipment.OverlayNum += v
|
|
iskeep = true
|
|
break
|
|
}
|
|
}
|
|
if !iskeep {
|
|
if _, ok := configure.GetDataMap()[k]; ok {
|
|
id := primitive.NewObjectID().Hex()
|
|
add[id] = &pb.DB_Equipment{
|
|
Id: id,
|
|
CId: k,
|
|
UId: uId,
|
|
MainEntry: make(map[uint32]int32),
|
|
AdverbEntry: make(map[uint32]int32),
|
|
OverlayNum: v,
|
|
IsInitialState: true,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if err = this.AddLists(uId, add); err != nil {
|
|
log.Errorf("[Equipment] Equipment_AddEquipmentsToPack err:%v", err)
|
|
return
|
|
}
|
|
for _, v := range update {
|
|
if err = this.ChangeList(uId, v.Id, map[string]interface{}{"overlayNum": v.OverlayNum}); err != nil {
|
|
log.Errorf("[Equipment] Equipment_AddEquipmentsToPack err:%v", err)
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func (this *Model_Equipment_Comp) Equipment_UpdateIsEquip(uid string, equipments ...*pb.DB_Equipment) (err error) {
|
|
for _, v := range equipments {
|
|
if err = this.ChangeList(uid, v.Id, map[string]interface{}{
|
|
"heroId": v.HeroId,
|
|
}); err != nil {
|
|
log.Errorf("Equipment_UpdateIsEquip err:%v", err)
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|