go_dreamfactory/cmd/v2/ui/views/dispatch.go
2023-03-31 11:11:25 +08:00

211 lines
4.7 KiB
Go

package formview
import (
"fmt"
"go_dreamfactory/cmd/v2/lib/common"
"go_dreamfactory/cmd/v2/model"
"go_dreamfactory/cmd/v2/service"
"go_dreamfactory/cmd/v2/service/observer"
"go_dreamfactory/comm"
"go_dreamfactory/pb"
"time"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/dialog"
"fyne.io/fyne/v2/widget"
"github.com/sirupsen/logrus"
"github.com/spf13/cast"
)
// 练功房派遣
type DispatchView struct {
BaseformView
itemList *common.ItemList
flag bool
noticeLabl *widget.Label //公告信息
}
func (d *DispatchView) CreateView(t *model.TestCase) fyne.CanvasObject {
d.itemList = common.NewItemList()
d.itemList.ItemList = d.itemList.CreateList()
//选择任务
d.itemList.ItemList.OnSelected = func(id widget.ListItemID) {
item := d.itemList.CachedList.Items[id]
d.itemList.SelItemId = item.Id
logrus.Debug(item)
}
//玩家公告
d.noticeLabl = new(widget.Label)
noticeFun := func() {
d.itemList.Reset()
if err := service.GetPttService().SendToClient(
t.MainType,
"notice",
&pb.DispatchNoticeReq{},
); err != nil {
logrus.Error(err)
return
}
}
noticeBtn := widget.NewButton("玩家公告", func() {
noticeFun()
})
//刷新公告
refreshBtn := widget.NewButton("刷新公告", func() {
if err := service.GetPttService().SendToClient(
t.MainType,
"refresh",
&pb.DispatchRefreshReq{},
); err != nil {
logrus.Error(err)
return
}
noticeFun()
})
//领取奖励
receiveBtn := widget.NewButton("领取奖励", func() {
if d.itemList.SelItemId == "" {
logrus.Debug("参数是空")
return
}
if err := service.GetPttService().SendToClient(
t.MainType,
"receive",
&pb.DispatchReceiveReq{
TaskId: cast.ToInt32(d.itemList.SelItemId),
},
); err != nil {
logrus.Error(err)
return
}
})
//一键领取奖励
autoReceiveBtn := widget.NewButton("一键领取", func() {
if err := service.GetPttService().SendToClient(
t.MainType,
"autoreceive",
&pb.DispatchAutoReceiveReq{},
); err != nil {
logrus.Error(err)
return
}
})
//派遣
hero1 := widget.NewEntry()
hero2 := widget.NewEntry()
form := widget.NewForm(
widget.NewFormItem("英雄1", hero1),
widget.NewFormItem("英雄2", hero2),
)
paiqianBtn := widget.NewButton("派遣", func() {
//弹窗
form.OnSubmit = func() {
if hero1.Text == "" && hero2.Text == "" {
logrus.Debug("heroId参数不能为空")
return
}
heroIds := []string{}
if hero1.Text != "" {
heroIds = append(heroIds, hero1.Text)
}
if hero2.Text != "" {
heroIds = append(heroIds, hero2.Text)
}
if err := service.GetPttService().SendToClient(
t.MainType,
"do",
&pb.DispatchDoReq{
TaskId: cast.ToInt32(d.itemList.SelItemId),
HeroIds: heroIds,
},
); err != nil {
logrus.Error(err)
return
}
}
form.SubmitText = "派遣"
paiWin := dialog.NewCustom("派遣", "关闭", form, d.w)
paiWin.Resize(fyne.NewSize(600, 300))
paiWin.Show()
})
//周奖励领取
weekReceiveBtn := widget.NewButton("周奖励", func() {
if err := service.GetPttService().SendToClient(
t.MainType,
"weekrecive",
&pb.DispatchWeekReciveReq{
Idx: 1,
},
); err != nil {
logrus.Error(err)
return
}
})
top := container.NewHBox(noticeBtn, refreshBtn, receiveBtn,
autoReceiveBtn, paiqianBtn, weekReceiveBtn)
bottom := container.NewHBox(d.noticeLabl)
c := container.NewBorder(top, bottom, nil, nil, d.itemList.ItemList)
d.noticeList()
return c
}
func (a *DispatchView) noticeList() {
if a.flag {
return
}
a.obs.AddListener(observer.EVENT_REQ_RSP, observer.Listener{
OnNotify: func(d interface{}, args ...interface{}) {
data := d.(*pb.UserMessage)
if data.MainType == string(comm.ModuleDispatch) &&
data.SubType == "notice" {
rsp := &pb.DispatchNoticeResp{}
if !comm.ProtoUnmarshal(data, rsp) {
logrus.Error("unmarshal err")
return
}
if rsp.Dispatch == nil {
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")
t2 := time.Unix(v.LeftTime, 0)
lt2 := t2.Format("15:04:05")
item := common.Item{
Id: cast.ToString(v.TaskId),
Text: fmt.Sprintf("ID:%v 状态:%v 任务截至:%v 派遣截至:%v", v.TaskId, v.Status, lt1, lt2),
Data: v,
}
a.itemList.AddItem(item)
}
}
},
})
a.flag = true
}