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 }