更新随机任务流程
This commit is contained in:
parent
cf9ec32b05
commit
fdc86244b5
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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 == "" {
|
||||
@ -30,6 +34,7 @@ func (this *RtaskDoitView) CreateView(t *model.TestCase) fyne.CanvasObject {
|
||||
}
|
||||
if err := service.GetPttService().SendToClient(t.MainType, t.SubType, &pb.RtaskApplyReq{
|
||||
RtaskId: cast.ToInt32(taskId.Text),
|
||||
RtaskSubId: cast.ToInt32(subTaskId.Text),
|
||||
}); err != nil {
|
||||
logrus.Error(err)
|
||||
}
|
106
modules/rtask/api_apply.go
Normal file
106
modules/rtask/api_apply.go
Normal file
@ -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
|
||||
}
|
@ -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 {
|
||||
|
@ -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
|
||||
}
|
@ -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}
|
||||
|
Loading…
Reference in New Issue
Block a user