任务红点
This commit is contained in:
parent
1cec020d6c
commit
01cf37bd2b
@ -41,6 +41,8 @@ var (
|
||||
viewRegister = map[string]MyCaseView{
|
||||
// gm
|
||||
ff(comm.ModuleGM, "cmd"): &formview.BingoView{},
|
||||
// reddot
|
||||
ff(comm.ModuleReddot, "get"): &formview.ReddotView{},
|
||||
//sys
|
||||
ff(comm.ModuleSys, "funclist"): &formview.SysFuncListView{},
|
||||
//user
|
||||
@ -150,11 +152,13 @@ var (
|
||||
string(comm.ModuleTroll),
|
||||
string(comm.ModuleGrowtask),
|
||||
string(comm.ModuleWorldtask),
|
||||
string(comm.ModuleReddot),
|
||||
},
|
||||
"gm": {ff(comm.ModuleGM, "cmd")},
|
||||
"sys": {
|
||||
ff(comm.ModuleSys, "funclist"),
|
||||
},
|
||||
"reddot": {ff(comm.ModuleReddot, "get")},
|
||||
"user": {
|
||||
ff(comm.ModuleUser, user.UserSubTypeModifyAvatar),
|
||||
ff(comm.ModuleUser, user.UserSubTypeModifyName),
|
||||
@ -273,6 +277,18 @@ var (
|
||||
Rsp: &pb.GMCmdResp{},
|
||||
Enabled: true,
|
||||
},
|
||||
"reddot": {
|
||||
NavLabel: "红点",
|
||||
MainType: string(comm.ModuleReddot),
|
||||
Enabled: true,
|
||||
},
|
||||
ff(comm.ModuleReddot, "get"): {
|
||||
Desc: "红点",
|
||||
NavLabel: "红点",
|
||||
MainType: string(comm.ModuleReddot),
|
||||
SubType: "get",
|
||||
Enabled: true,
|
||||
},
|
||||
"sys": {
|
||||
NavLabel: "系统",
|
||||
MainType: string(comm.ModuleSys),
|
||||
|
37
cmd/v2/ui/views/reddot.go
Normal file
37
cmd/v2/ui/views/reddot.go
Normal file
@ -0,0 +1,37 @@
|
||||
package formview
|
||||
|
||||
import (
|
||||
"go_dreamfactory/cmd/v2/model"
|
||||
"go_dreamfactory/cmd/v2/service"
|
||||
"go_dreamfactory/pb"
|
||||
"strings"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/cast"
|
||||
)
|
||||
|
||||
type ReddotView struct {
|
||||
BaseformView
|
||||
}
|
||||
|
||||
func (this *ReddotView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
reddotTypeEntry := widget.NewEntry()
|
||||
|
||||
this.form.AppendItem(widget.NewFormItem("红点类型", reddotTypeEntry))
|
||||
this.form.OnSubmit = func() {
|
||||
typesStr := strings.Split(reddotTypeEntry.Text, ",")
|
||||
var rids []int32
|
||||
for _, s := range typesStr {
|
||||
rids = append(rids, cast.ToInt32(s))
|
||||
}
|
||||
if err := service.GetPttService().SendToClient(t.MainType, "get",
|
||||
&pb.ReddotGetReq{
|
||||
Rids: rids,
|
||||
}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
||||
}
|
||||
return this.form
|
||||
}
|
@ -137,6 +137,8 @@ type (
|
||||
GetTaskById(uid string, taskId int32) *pb.DBTask
|
||||
// 获取已完成的任务列表
|
||||
GetTaskFinished(uid string, taskType TaskTag) []*pb.DBTask
|
||||
// 红点
|
||||
Reddot(uid string, rid ...ReddotType) map[ReddotType]bool
|
||||
}
|
||||
|
||||
// 随机任务
|
||||
|
@ -21,8 +21,23 @@ func (this *apiComp) Get(session comm.IUserSession, req *pb.ReddotGetReq) (code
|
||||
if code = this.GetCheck(session, req); code != pb.ErrorCode_Success {
|
||||
return
|
||||
}
|
||||
for _, v := range req.Rids {
|
||||
reddot[v] = false
|
||||
for _, rid := range req.Rids {
|
||||
// reddot[v] = false
|
||||
switch rid {
|
||||
case int32(comm.Reddot1):
|
||||
for k, v := range this.module.ModuleTask.Reddot(session.GetUserId(), comm.Reddot1) {
|
||||
reddot[int32(k)] = v
|
||||
}
|
||||
case int32(comm.Reddot2):
|
||||
for k, v := range this.module.ModuleTask.Reddot(session.GetUserId(), comm.Reddot2) {
|
||||
reddot[int32(k)] = v
|
||||
}
|
||||
case int32(comm.Reddot4):
|
||||
for k, v := range this.module.ModuleTask.Reddot(session.GetUserId(), comm.Reddot2) {
|
||||
reddot[int32(k)] = v
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
// for k, v := range this.module.martialhall.Reddot(session.GetUserId(), comm.Reddot1) {
|
||||
// reddot[int32(k)] = v
|
||||
|
@ -53,6 +53,8 @@ func (this *ModelRtaskRecord) getRecord(uid string) *pb.DBRtaskRecord {
|
||||
// 玩家登录时调用
|
||||
func (this *ModelRtaskRecord) initCondiData(uid string) error {
|
||||
dr := this.getRecord(uid)
|
||||
// 判断是否有记录
|
||||
if dr.Vals == nil || len(dr.Vals) == 0 {
|
||||
// 获取rdtask_condi配置表数据
|
||||
grc, err := this.moduleRtask.configure.getRtaskCondiCfg()
|
||||
if err != nil {
|
||||
@ -62,8 +64,6 @@ func (this *ModelRtaskRecord) initCondiData(uid string) error {
|
||||
return errors.New("配置空[rdtaskcondi] err")
|
||||
}
|
||||
|
||||
// 判断是否有记录
|
||||
if dr.Vals == nil || len(dr.Vals) == 0 {
|
||||
record := &pb.DBRtaskRecord{Uid: uid}
|
||||
record.Id = primitive.NewObjectID().Hex()
|
||||
record.Vals = make(map[int32]*pb.RtaskData)
|
||||
|
@ -9,7 +9,6 @@ import (
|
||||
cfg "go_dreamfactory/sys/configure/structs"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||
"go.mongodb.org/mongo-driver/mongo"
|
||||
)
|
||||
|
||||
@ -30,21 +29,9 @@ func (this *ModelRtaskRecord) overrideUpdate(uid string, cfg *cfg.GameRdtaskCond
|
||||
}
|
||||
|
||||
if record.Vals == nil {
|
||||
data := &pb.RtaskData{
|
||||
Rtype: cfg.Type,
|
||||
Data: toMap(vals...),
|
||||
Timestamp: configure.Now().Unix(),
|
||||
record.Vals = make(map[int32]*pb.RtaskData)
|
||||
}
|
||||
record.Vals = map[int32]*pb.RtaskData{
|
||||
cfg.Id: data,
|
||||
}
|
||||
record.Id = primitive.NewObjectID().Hex()
|
||||
record.Uid = uid
|
||||
|
||||
if err := this.Add(uid, record); err != nil {
|
||||
return errors.Wrapf(err, "添加玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
||||
}
|
||||
} else {
|
||||
if v, ok := record.Vals[cfg.Id]; ok {
|
||||
m := hasUpdateData(paramLen, v, vals...)
|
||||
if len(m) > 0 {
|
||||
@ -66,7 +53,6 @@ func (this *ModelRtaskRecord) overrideUpdate(uid string, cfg *cfg.GameRdtaskCond
|
||||
}
|
||||
err = this.Change(uid, update)
|
||||
}
|
||||
}
|
||||
|
||||
this.listenTask(uid, cfg.Id)
|
||||
return
|
||||
@ -74,10 +60,6 @@ func (this *ModelRtaskRecord) overrideUpdate(uid string, cfg *cfg.GameRdtaskCond
|
||||
|
||||
// 累计更新 - 招募等
|
||||
func (this *ModelRtaskRecord) addUpdate(uid string, cfg *cfg.GameRdtaskCondiData, vals ...int32) (err error) {
|
||||
// t := configure.Now()
|
||||
// defer func() {
|
||||
// log.Debugf("add update耗时:%v", time.Since(t))
|
||||
// }()
|
||||
record := &pb.DBRtaskRecord{Uid: uid}
|
||||
err = this.Get(uid, record)
|
||||
if err != nil {
|
||||
@ -87,20 +69,8 @@ func (this *ModelRtaskRecord) addUpdate(uid string, cfg *cfg.GameRdtaskCondiData
|
||||
}
|
||||
|
||||
if record.Vals == nil {
|
||||
record.Id = primitive.NewObjectID().Hex()
|
||||
data := &pb.RtaskData{
|
||||
Data: toMap(vals...),
|
||||
Rtype: cfg.Type,
|
||||
Timestamp: configure.Now().Unix(),
|
||||
record.Vals = make(map[int32]*pb.RtaskData)
|
||||
}
|
||||
|
||||
record.Vals = map[int32]*pb.RtaskData{
|
||||
cfg.Id: data,
|
||||
}
|
||||
if err := this.Add(uid, record); err != nil {
|
||||
return errors.Wrapf(err, "添加玩家任务记录 err: %v rtype[%v]", uid, cfg.Id)
|
||||
}
|
||||
} else {
|
||||
//查找任务数据
|
||||
if v, ok := record.Vals[cfg.Id]; ok {
|
||||
newCount := make([]int32, len(vals))
|
||||
@ -124,7 +94,7 @@ func (this *ModelRtaskRecord) addUpdate(uid string, cfg *cfg.GameRdtaskCondiData
|
||||
}
|
||||
err = this.Change(uid, update)
|
||||
}
|
||||
}
|
||||
|
||||
this.listenTask(uid, cfg.Id)
|
||||
return
|
||||
}
|
||||
|
@ -29,6 +29,21 @@ func (this *ModelTask) Init(service core.IService, module core.IModule, comp cor
|
||||
return
|
||||
}
|
||||
|
||||
// 查询完成的且未领取的任务 发现未领取返回true
|
||||
func (this *ModelTask) noReceiveTask(uid string, taskTag comm.TaskTag) (bool, error) {
|
||||
list := []*pb.DBTask{}
|
||||
if err := this.GetList(uid, &list); err != nil {
|
||||
this.moduleTask.Errorf("getTaskList err %v", err)
|
||||
return false, err
|
||||
}
|
||||
for _, v := range list {
|
||||
if v.Tag == int32(taskTag) && v.Status == 1 && v.Received == 0 {
|
||||
return true, nil
|
||||
}
|
||||
}
|
||||
return false, nil
|
||||
}
|
||||
|
||||
//获取玩家任务列表
|
||||
func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newlist []*pb.DBTask) {
|
||||
list := []*pb.DBTask{}
|
||||
@ -42,7 +57,6 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newli
|
||||
return list[i].Sort < list[j].Sort
|
||||
})
|
||||
|
||||
//
|
||||
dr := this.moduleTask.ModuleRtask.GetCondiData(uid)
|
||||
if dr == nil {
|
||||
return
|
||||
@ -71,7 +85,7 @@ func (this *ModelTask) getTaskListByTag(uid string, taskTag comm.TaskTag) (newli
|
||||
return nil
|
||||
}
|
||||
|
||||
// 判断上个任务领取了才显示最后一个任务
|
||||
// 判断上个成就任务领取了才显示最后一个任务
|
||||
isReceived := func(taskId int32) bool {
|
||||
if preCnf := this.moduleTask.configure.getPreTask(taskId); preCnf != nil {
|
||||
if preTask := getCurTask(preCnf.Key); preTask != nil {
|
||||
|
@ -1,7 +1,6 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go_dreamfactory/comm"
|
||||
"go_dreamfactory/lego/core"
|
||||
"go_dreamfactory/lego/sys/event"
|
||||
@ -128,25 +127,6 @@ func (this *ModuleTask) ResetTask(uid string, taskTag comm.TaskTag) {
|
||||
this.modelTaskActive.clearTask(uid, taskTag)
|
||||
}
|
||||
|
||||
//任务处理
|
||||
// func (this *ModuleTask) SendToTask(session comm.IUserSession, condiId int32, params ...int32) (code pb.ErrorCode) {
|
||||
// tl := new(TaskListen)
|
||||
// tl.Uid = session.GetUserId()
|
||||
// tl.TaskType = comm.TaskType(condiId)
|
||||
// this.modelTask.EventApp.Dispatch(comm.EventTaskChanged, tl)
|
||||
// return
|
||||
// }
|
||||
|
||||
//创建玩家攻略任务
|
||||
func (this *ModuleTask) CreateTaskForStrategy(uid string, heroCfgId int32) {
|
||||
//
|
||||
ids := make(map[string]string)
|
||||
ids, _ = this.modelTask.Redis.HGetAllToMapString(fmt.Sprintf("task:%v_%v", uid, comm.TASK_STRATEGY))
|
||||
fmt.Println(ids)
|
||||
//
|
||||
|
||||
}
|
||||
|
||||
// 清理任务数据
|
||||
func (this *ModuleTask) CleanData(uid string) {
|
||||
this.modelTask.clearTask(uid)
|
||||
@ -156,30 +136,31 @@ func (this *ModuleTask) CleanData(uid string) {
|
||||
//任务处理器注册
|
||||
type taskHandle func(uid string, taskId int32, tp *pb.TaskParam) *pb.DBTask
|
||||
|
||||
// func (this *ModuleTask) register(taskType comm.TaskType, fn taskHandle) {
|
||||
// if _, ok := this.taskHandleMap[int32(taskType)]; !ok {
|
||||
// this.taskHandleMap[int32(taskType)] = fn
|
||||
// }
|
||||
// }
|
||||
|
||||
// 初始任务事件处理类
|
||||
// func (this *ModuleTask) initTaskHandle() {
|
||||
// if data, err := this.configure.getTaskList(); err == nil {
|
||||
// for _, v := range data {
|
||||
// switch v.TypeId {
|
||||
// case int32(comm.TaskTypeUpEquip):
|
||||
// this.register(comm.TaskTypeUpEquip, this.modelTask.UpEquip)
|
||||
// case int32(comm.TaskTypeUpHeroStar):
|
||||
// this.register(comm.TaskTypeUpHeroStar, this.modelTask.UpHeroStar)
|
||||
// case int32(comm.TaskTypeUpHeroLevel):
|
||||
// this.register(comm.TaskTypeUpHeroLevel, this.modelTask.UpHeroLevel)
|
||||
// default:
|
||||
// log.Warnf("%v task type not supported", v.TypeId)
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
func (this *ModuleTask) GetTaskFinished(uid string, taskTage comm.TaskTag) []*pb.DBTask {
|
||||
return this.modelTask.getFinishTasks(uid, taskTage)
|
||||
}
|
||||
|
||||
func (this *ModuleTask) Reddot(uid string, rid ...comm.ReddotType) (reddot map[comm.ReddotType]bool) {
|
||||
reddot = make(map[comm.ReddotType]bool)
|
||||
|
||||
for _, v := range rid {
|
||||
switch v {
|
||||
case comm.Reddot1:
|
||||
if ok, _ := this.modelTask.noReceiveTask(uid, comm.TASK_DAILY); ok {
|
||||
reddot[comm.Reddot1] = ok
|
||||
break
|
||||
}
|
||||
case comm.Reddot2:
|
||||
if ok, _ := this.modelTask.noReceiveTask(uid, comm.TASK_WEEKLY); ok {
|
||||
reddot[comm.Reddot2] = ok
|
||||
break
|
||||
}
|
||||
case comm.Reddot4:
|
||||
if ok, _ := this.modelTask.noReceiveTask(uid, comm.TASK_ACHIEVE); ok {
|
||||
reddot[comm.Reddot4] = ok
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user