diff --git a/cmd/v2/ui/views/dispatch.go b/cmd/v2/ui/views/dispatch.go index 025e9e7ad..576bea811 100644 --- a/cmd/v2/ui/views/dispatch.go +++ b/cmd/v2/ui/views/dispatch.go @@ -18,10 +18,12 @@ import ( "github.com/spf13/cast" ) +// 练功房派遣 type DispatchView struct { BaseformView - itemList *common.ItemList - flag bool + itemList *common.ItemList + flag bool + noticeLabl *widget.Label //公告信息 } func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject { @@ -38,7 +40,7 @@ func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject { } //玩家公告 - + d.noticeLabl = new(widget.Label) noticeBtn := widget.NewButton("玩家公告", func() { d.itemList.Reset() if err := service.GetPttService().SendToClient( @@ -144,9 +146,10 @@ func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject { }) - btns := container.NewHBox(noticeBtn, refreshBtn, receiveBtn, + top := container.NewHBox(noticeBtn, refreshBtn, receiveBtn, autoReceiveBtn, paiqianBtn, weekReceiveBtn) - c := container.NewBorder(btns, nil, nil, nil, d.itemList.ItemList) + bottom := container.NewHBox(d.noticeLabl) + c := container.NewBorder(top, bottom, nil, nil, d.itemList.ItemList) d.noticeList() return c } @@ -169,6 +172,15 @@ func (a *DispatchView) noticeList() { return } + a.noticeLabl.SetText(fmt.Sprintf("公告等级:%v 免费次数:%v 刷新次数:%v 任务数:%v 周任务数:%v 周奖励领取:%v", + rsp.Dispatch.Lv, + rsp.Dispatch.FreeCount, + rsp.Dispatch.RefreshCount, + rsp.Dispatch.TaskCount, + rsp.Dispatch.WeekCount, + rsp.Dispatch.WeekReceived, + )) + a.noticeLabl.Refresh() for _, v := range rsp.Dispatch.Tasks { t1 := time.Unix(v.Duration, 0) lt1 := t1.Format("15:04:05") diff --git a/modules/dispatch/model_dispatch.go b/modules/dispatch/model_dispatch.go index 1f600c5af..09040f0e4 100644 --- a/modules/dispatch/model_dispatch.go +++ b/modules/dispatch/model_dispatch.go @@ -176,7 +176,7 @@ func (this *modelDispatch) taskRandom(uid string, dispatch *pb.DBDispatch) (task } } else { tasks = dispatch.Nb.Tasks - for i, v := range tasks{ + for i, v := range tasks { //只随机未接取的任务 if v.Status == 0 { //删除 @@ -209,41 +209,46 @@ func (this *modelDispatch) taskRandom(uid string, dispatch *pb.DBDispatch) (task return } -// 替换指定的任务 -func (this *modelDispatch) replaceTask(uid string, taskId int32, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask) { +func (this *modelDispatch) addRandomTask(uid string, dispatch *pb.DBDispatch) *pb.DispatchTask { randomTaskIds := this.getTasksWeight(uid, dispatch.Nb.Lv) + //追加一条随机任务 + ids := utils.RandomNumbers(1, len(randomTaskIds), 1) + if len(ids) <= 0 { + return nil + } + taskId := ids[0] + taskConf, err := this.module.configure.getDispatchTaskConf(int32(taskId)) + if err != nil { + return nil + } - for i, v := range dispatch.Nb.Tasks { + //公告持续截至时间 + duration := configure.Now().Unix() + int64(taskConf.Taskcd) + // 任务截至时间 + leftTime := configure.Now().Unix() + int64(taskConf.Tasktime) + + return &pb.DispatchTask{ + TaskId: int32(taskId), + Duration: duration, + LeftTime: leftTime, + } + +} + +// 替换指定的已完成任务 +func (this *modelDispatch) replaceTask(uid string, taskId int32, dispatch *pb.DBDispatch) (tasks []*pb.DispatchTask) { + tasks = dispatch.Nb.Tasks + for i, v := range tasks { //替换状态是完成的任务 if v.Status == 2 { if taskId != v.TaskId { continue } //删除 - dispatch.Nb.Tasks = append(dispatch.Nb.Tasks[:i], dispatch.Nb.Tasks[i+1:]...) + tasks = append(tasks[:i], tasks[i+1:]...) i-- - //追加一条随机任务 - ids := utils.RandomNumbers(1, len(randomTaskIds), 1) - if len(ids) <= 0 { - continue - } - taskId := ids[0] - taskConf, err := this.module.configure.getDispatchTaskConf(v.TaskId) - if err != nil { - continue - } - - //公告持续截至时间 - duration := configure.Now().Unix() + int64(taskConf.Taskcd) - // 任务截至时间 - leftTime := configure.Now().Unix() + int64(taskConf.Tasktime) - - tasks = append(tasks, &pb.DispatchTask{ - TaskId: int32(taskId), - Duration: duration, - LeftTime: leftTime, - }) + tasks = append(tasks, this.addRandomTask(uid, dispatch)) } else { tasks = append(tasks, v) } @@ -357,7 +362,7 @@ func (this *modelDispatch) dispatch(uid string, taskId int32, heroIds []string, for _, v := range disp.Nb.Tasks { if v.TaskId == taskId && v.Status == 0 { v.HeroIds = heroIds - if v.Duration >= configure.Now().Unix() { + if v.Duration <= configure.Now().Unix() { return comm.NewCustomError(pb.ErrorCode_DispatchTaskExpired) } else { if v.LeftTime >= configure.Now().Unix() { @@ -376,15 +381,6 @@ func (this *modelDispatch) dispatch(uid string, taskId int32, heroIds []string, //周任务数累加 disp.Nb.WeekCount++ - //升级 - conf, err := this.module.configure.getDispatchLvConf(disp.Nb.Lv) - if err != nil { - return err - } - if disp.Nb.WeekCount >= conf.Upgrade { - disp.Nb.Lv++ - } - update := map[string]interface{}{ "nb": disp.Nb, "ticket": disp.Ticket - 1, @@ -426,19 +422,32 @@ func (this *modelDispatch) updateTasks(uid string, noticeboard *pb.Noticeboard, // 更新公告栏任务 func (this *modelDispatch) updateNotice(uid string, dispatch *pb.DBDispatch) error { - for _, v := range dispatch.Nb.Tasks { + for i, v := range dispatch.Nb.Tasks { if v.Status == 0 { //判断到期时间 - if v.Duration >= configure.Now().Unix() { - //替换任务 - this.replaceTask(uid, v.TaskId, dispatch) + if v.Duration <= configure.Now().Unix() { + //替换到期任务 + // dispatch.Nb.Tasks = this.replaceTask(uid, v.TaskId, dispatch) + dispatch.Nb.Tasks = append(dispatch.Nb.Tasks[:i], dispatch.Nb.Tasks[i+1:]...) + i-- + //补一条 + dispatch.Nb.Tasks = append(dispatch.Nb.Tasks, this.addRandomTask(uid, dispatch)) } } if v.Status == 1 { - if v.LeftTime >= configure.Now().Unix() { + if v.LeftTime <= configure.Now().Unix() { //更改次任务状态为 v.Status = 2 //任务结束 + v.LeftTime = 0 + //升级 + conf, err := this.module.configure.getDispatchLvConf(dispatch.Nb.Lv) + if err != nil { + return err + } + if dispatch.Nb.WeekCount >= conf.Upgrade { + dispatch.Nb.Lv++ + } } } }