go_dreamfactory/modules/rtask/model_rtask.go
2022-08-18 09:31:21 +08:00

87 lines
2.2 KiB
Go

package rtask
import (
"go_dreamfactory/comm"
"go_dreamfactory/lego/core"
"go_dreamfactory/lego/sys/log"
"go_dreamfactory/modules"
"go_dreamfactory/pb"
cfg "go_dreamfactory/sys/configure/structs"
)
type ModelRtask struct {
modules.MCompModel
moduleRtask *ModuleRtask
}
func (this *ModelRtask) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) {
this.TableName = comm.TableRtask
err = this.MCompModel.Init(service, module, comp, options)
this.moduleRtask = module.(*ModuleRtask)
return
}
func (this *ModelRtask) setNextTask(uid string, rtaskId int32) error {
update := map[string]interface{}{
"nextRtaskId": rtaskId,
}
return this.Change(uid, update)
}
func (this *ModelRtask) doRtaskHandle(uid string, param *pb.RtaskParam) (rtaskId int32, err error) {
log.Debugf("do rtask params: %v %v %v ", param.Param1, param.Param2, param.Param3)
//查询玩家的
rtask := &pb.DBRtask{}
if err = this.Get(uid, rtask); err != nil {
return
}
var taskId int32
if len(rtask.FrtaskIds) == 0 {
conf := this.moduleRtask.configure.getFirstTask()
if conf != nil {
taskId = conf.IdLast
}
} else {
//TODO
}
if rtask, ok := this.moduleRtask.rtaskHandleMap[taskId]; ok {
for _, handle := range rtask.handlers {
if ok := handle.fn(handle.cfg, param); !ok {
log.Infof("uid: %v do rtask %v condition not", uid, taskId)
break
}
}
rtaskId = taskId
}
return
}
// 1 英雄指定
func (this *ModelRtask) HeroTarget(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) {
return cfg.Data1 == tp.Param1
}
// 2 指定英雄的等级
func (this *ModelRtask) HeroLvTarget(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) {
return cfg.Data1 == tp.Param1 && cfg.Data1 == tp.Param2
}
// 3 指定英雄的指定装备的数量
func (this *ModelRtask) EquipNum(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) {
return cfg.Data1 == tp.Param1 && cfg.Data2 == tp.Param2 && cfg.Data3 == tp.Param3
}
// 4 剧情ID
func (this *ModelRtask) PoltId(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) {
return cfg.Data1 == tp.Param1
}
// 5 每日任务
func (this *ModelRtask) TaskDay(cfg *cfg.GameRdtaskTypeData, tp *pb.RtaskParam) (ok bool) {
return cfg.Data1 == tp.Param1
}