From fdc86244b520bbfbb11bd09dfa7b392bcad8c362 Mon Sep 17 00:00:00 2001 From: wh_zcy Date: Mon, 26 Sep 2022 17:47:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=9A=8F=E6=9C=BA=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/v2/ui/mainwindow.go | 1 - .../views/{rtask_doit.go => rtask_apply.go} | 7 +- modules/rtask/api_apply.go | 106 +++++++++++++++ modules/rtask/api_choose.go | 16 +-- modules/rtask/api_dotask.go | 125 ------------------ modules/rtask/model_rtask.go | 8 ++ 6 files changed, 122 insertions(+), 141 deletions(-) rename cmd/v2/ui/views/{rtask_doit.go => rtask_apply.go} (77%) create mode 100644 modules/rtask/api_apply.go delete mode 100644 modules/rtask/api_dotask.go diff --git a/cmd/v2/ui/mainwindow.go b/cmd/v2/ui/mainwindow.go index 3845672e5..be9a54fd2 100644 --- a/cmd/v2/ui/mainwindow.go +++ b/cmd/v2/ui/mainwindow.go @@ -98,7 +98,6 @@ func (ui *MainWindowImpl) createWindowContainer() { ui.at = newAppContainer(appRegister, ui.obs) content := container.NewBorder(ui.tb.toolbar, ui.sb.widget, nil, ui.toys.widget, ui.at) ui.w.SetContent(content) - ui.w.SetFullScreen(true) ui.w.SetCloseIntercept(ui.quiteHandle) } diff --git a/cmd/v2/ui/views/rtask_doit.go b/cmd/v2/ui/views/rtask_apply.go similarity index 77% rename from cmd/v2/ui/views/rtask_doit.go rename to cmd/v2/ui/views/rtask_apply.go index 8a1fc2813..eff997d7f 100644 --- a/cmd/v2/ui/views/rtask_doit.go +++ b/cmd/v2/ui/views/rtask_apply.go @@ -21,7 +21,11 @@ func (this *RtaskDoitView) CreateView(t *model.TestCase) fyne.CanvasObject { taskId := widget.NewEntry() taskId.PlaceHolder = "任务ID" + subTaskId := widget.NewEntry() + subTaskId.PlaceHolder = "支线任务ID" + this.form.AppendItem(widget.NewFormItem("任务ID", taskId)) + this.form.AppendItem(widget.NewFormItem("支线任务ID", subTaskId)) this.form.OnSubmit = func() { if taskId.Text == "" { @@ -29,7 +33,8 @@ func (this *RtaskDoitView) CreateView(t *model.TestCase) fyne.CanvasObject { return } if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.RtaskApplyReq{ - RtaskId: cast.ToInt32(taskId.Text), + RtaskId: cast.ToInt32(taskId.Text), + RtaskSubId: cast.ToInt32(subTaskId.Text), }); err != nil { logrus.Error(err) } diff --git a/modules/rtask/api_apply.go b/modules/rtask/api_apply.go new file mode 100644 index 000000000..b7fd39cc8 --- /dev/null +++ b/modules/rtask/api_apply.go @@ -0,0 +1,106 @@ +package rtask + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" + "go_dreamfactory/pb" + "go_dreamfactory/utils" + + "google.golang.org/protobuf/proto" +) + +// 做任务 +func (this *apiComp) ApplyCheck(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode) { + if req.RtaskId == 0 || req.RtaskSubId == 0 { + code = pb.ErrorCode_ReqParameterError + } + return +} + +func (this *apiComp) Apply(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode, data proto.Message) { + if code = this.ApplyCheck(session, req); code != pb.ErrorCode_Success { + return + } + + // 获取当前玩家任务 + rtask := this.moduleRtask.modelRtask.GetRtask(session.GetUserId()) + if rtask == nil { + code = pb.ErrorCode_RtaskNoRtask + return + } + + // 获取当前任务配置 + conf := this.moduleRtask.configure.getRtaskById(req.RtaskId) + if conf == nil { + code = pb.ErrorCode_ConfigNoFound + log.Errorf("rdtask %v no found", req.RtaskId) + return + } + + var ( + frtaskArr *pb.FrtaskIds + ok bool + ) + + // 获取当前组下已完成的任务 + if frtaskArr, ok = rtask.FrtaskIds[conf.Group]; !ok { + frtaskArr = &pb.FrtaskIds{} + } + + //验证该任务是否已完成 + if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); ok { + code = pb.ErrorCode_RtaskFinished + return + } + + sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId) + if sideConf == nil { + code = pb.ErrorCode_ConfigNoFound + log.Errorf("rdtask_side %v no found", req.RtaskSubId) + return + } + + if len(sideConf.EndTid) == 0 { + code = pb.ErrorCode_ConfigurationException + return + } + + // 没有设置选项,表示任务完成 + if sideConf.EndTid[0] == -1 && len(sideConf.ChooseId) == 0 { + frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId) + if rtask.FrtaskIds == nil { + rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds) + } + rtask.FrtaskIds[conf.Group] = frtaskArr + + update := map[string]interface{}{ + "frtaskIds": rtask.FrtaskIds, + } + + if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil { + code = pb.ErrorCode_SystemError + return + } + + if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil { + this.moduleRtask.Errorf("update rtaskId err: %v", err) + } + + } else { + // 校验完成条件 + for _, v := range sideConf.EndTid { + if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), v); !ok { + this.moduleRtask.Error(err.Error()) + code = pb.ErrorCode_RtaskCondiNoReach + return + } + } + } + + if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeApply, &pb.RtaskApplyResp{ + RtaskId: req.RtaskId, + }); err != nil { + code = pb.ErrorCode_SystemError + } + return +} diff --git a/modules/rtask/api_choose.go b/modules/rtask/api_choose.go index e392b428e..8180a3e52 100644 --- a/modules/rtask/api_choose.go +++ b/modules/rtask/api_choose.go @@ -89,22 +89,10 @@ func (this *apiComp) Choose(session comm.IUserSession, req *pb.RtaskChooseReq) ( } // userexpand update - de, err := this.moduleRtask.ModuleUser.GetUserExpand(session.GetUserId()) - if err != nil { - code = pb.ErrorCode_DBError - return + if err := this.moduleRtask.modelRtask.updateUserRtaskId(session.GetUserId(), req.RtaskId); err != nil { + this.moduleRtask.Errorf("update user rtaskId err %v", err) } - if de == nil { - code = pb.ErrorCode_UserExpandNull - return - } - - ex_update := map[string]interface{}{ - "rtaskId": req.RtaskId, - } - this.moduleRtask.ModuleUser.ChangeUserExpand(session.GetUserId(), ex_update) - // 发奖励 for _, v := range sideConf.Reward { if v.ChooseId == req.ChooseId { diff --git a/modules/rtask/api_dotask.go b/modules/rtask/api_dotask.go deleted file mode 100644 index 913d45bc2..000000000 --- a/modules/rtask/api_dotask.go +++ /dev/null @@ -1,125 +0,0 @@ -package rtask - -import ( - "go_dreamfactory/comm" - "go_dreamfactory/lego/sys/log" - "go_dreamfactory/pb" - "go_dreamfactory/utils" - - "google.golang.org/protobuf/proto" -) - -// 做任务 -func (this *apiComp) ApplyCheck(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode) { - - return -} - -func (this *apiComp) Apply(session comm.IUserSession, req *pb.RtaskApplyReq) (code pb.ErrorCode, data proto.Message) { - if code = this.ApplyCheck(session, req); code != pb.ErrorCode_Success { - return - } - - // 获取当前玩家任务 - rtask := this.moduleRtask.modelRtask.GetRtask(session.GetUserId()) - if rtask == nil { - code = pb.ErrorCode_RtaskNoRtask - return - } - - // 获取当前任务配置 - conf := this.moduleRtask.configure.getRtaskById(req.RtaskId) - if conf == nil { - code = pb.ErrorCode_ConfigNoFound - log.Errorf("rdtask %v no found", req.RtaskId) - return - } - - var ( - frtaskArr *pb.FrtaskIds - ok bool - err error - ) - - if frtaskArr, ok = rtask.FrtaskIds[conf.Group]; !ok { - frtaskArr = &pb.FrtaskIds{} - } - - //验证该任务是否已完成 - if _, ok := utils.Findx(frtaskArr.RtaskIds, req.RtaskId); ok { - code = pb.ErrorCode_RtaskFinished - return - } - - if req.RtaskSubId == 0 { - //校验前置任务和限定条件 - if err, ok = this.moduleRtask.modelRtask.checkHandle(session.GetUserId(), frtaskArr.RtaskIds, conf); !ok { - this.moduleRtask.Error(err.Error()) - code = pb.ErrorCode_RtaskCondiNoReach - return - } - } else { - sideConf := this.moduleRtask.configure.getRtaskSidById(req.RtaskSubId) - if sideConf == nil { - code = pb.ErrorCode_ConfigNoFound - log.Errorf("rdtask_side %v no found", req.RtaskSubId) - return - } - - if len(sideConf.EndTid) == 0 { - code = pb.ErrorCode_ConfigurationException - return - } - - // 没有设置选项,表示任务完成 - if sideConf.EndTid[0] == -1 { - frtaskArr.RtaskIds = append(frtaskArr.RtaskIds, req.RtaskId) - if rtask.FrtaskIds == nil { - rtask.FrtaskIds = make(map[int32]*pb.FrtaskIds) - } - rtask.FrtaskIds[conf.Group] = frtaskArr - - update := map[string]interface{}{ - "frtaskIds": rtask.FrtaskIds, - } - - if err := this.moduleRtask.modelRtask.Change(session.GetUserId(), update); err != nil { - code = pb.ErrorCode_SystemError - } - - // userexpand update - de, err := this.moduleRtask.ModuleUser.GetUserExpand(session.GetUserId()) - if err != nil { - code = pb.ErrorCode_DBError - return - } - - if de == nil { - code = pb.ErrorCode_UserExpandNull - return - } - - ex_update := map[string]interface{}{ - "rtaskId": req.RtaskId, - } - this.moduleRtask.ModuleUser.ChangeUserExpand(session.GetUserId(), ex_update) - - } else { - // 校验完成条件 - for _, v := range sideConf.EndTid { - if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), v); !ok { - this.moduleRtask.Error(err.Error()) - code = pb.ErrorCode_RtaskCondiNoReach - return - } - } - } - } - - if err := session.SendMsg(string(this.moduleRtask.GetType()), RtaskSubTypeApply, &pb.RtaskApplyResp{ - RtaskId: req.RtaskId, - }); err != nil { - code = pb.ErrorCode_SystemError - } - return -} diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go index 5b3680996..3e9b1669a 100644 --- a/modules/rtask/model_rtask.go +++ b/modules/rtask/model_rtask.go @@ -28,6 +28,14 @@ func (this *ModelRtask) Init(service core.IService, module core.IModule, comp co return } +// 更新玩家的随机任务ID +func (this *ModelRtask) updateUserRtaskId(uid string, rtaskId int32) (err error) { + ex_update := map[string]interface{}{ + "rtaskId": rtaskId, + } + return this.moduleRtask.ModuleUser.ChangeUserExpand(uid, ex_update) +} + //查询用户随机任务 func (this *ModelRtask) GetRtask(uid string) *pb.DBRtask { rtask := &pb.DBRtask{Uid: uid}