87 lines
2.2 KiB
Go
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
|
|
}
|