Files
bl/logic/controller/task.go
昔念 ecd9cb704c ```
refactor(logic): 优化任务完成逻辑并提高可读性

- 将 `QuitSelf` 中的硬编码延时改为 `5 * time.Second`,提高可读性
- 使用 `switch` 语句重构任务奖励逻辑,替代多个 `if` 判断
- 统一处理任务 85、86、87、88 的奖励发放逻辑
- 添加默认分支处理未定义的任务 ID 和状态
- 修复函数签名中的空格格式问题
- 在任务服务中补充玩家 ID 和任务 ID 的赋值逻辑
```
2025-10-10 01:10:13 +08:00

149 lines
3.7 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package controller
import (
"blazing/common/socket/errorcode"
"blazing/logic/service/player"
"blazing/logic/service/task"
"blazing/modules/blazing/model"
)
/**
* 接受任务
*/
func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *player.Player) (result *task.AcceptTaskOutboundInfo, err errorcode.ErrorCode) {
//isdaliy := false
// if data.Head.CMD != 2201 { //判断是每日任务
// //isdaliy = true
// }
if c.Info.TaskList[data.TaskId-1] == 0 {
c.Info.TaskList[data.TaskId-1] = 1
}
result = &task.AcceptTaskOutboundInfo{}
result.TaskId = data.TaskId
return result, 0
}
/**
* 更新任务步骤
*/
func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *player.Player) (result *task.AddTaskBufOutboundInfo, err errorcode.ErrorCode) {
// isdaliy := false
// if data.Head.CMD != 2204 { //判断是每日任务
// isdaliy = true
// }
result = &task.AddTaskBufOutboundInfo{}
c.Service.Task(data.TaskId, func(te *model.TaskEX) bool {
te.Data = data.TaskList
return true
})
return &task.AddTaskBufOutboundInfo{}, 0
}
/**
* 完成任务
*/
func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *player.Player) (result *task.CompleteTaskOutboundInfo, err errorcode.ErrorCode) {
if c.Info.TaskList[data.TaskId-1] != 1 { //如果任务没有接受或者已经完成Complete_Task
return result, 0
}
c.Info.TaskList[data.TaskId-1] = 3
result = &task.CompleteTaskOutboundInfo{}
result.ItemList = make([]task.ItemInfo, 0)
result.TaskId = data.TaskId
// 处理新手注册相关任务
switch data.TaskId {
case 85:
// 新手注册任务-奖励物品
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 100027, ItemCount: 1},
task.ItemInfo{ItemId: 100028, ItemCount: 1},
task.ItemInfo{ItemId: 500001, ItemCount: 1},
task.ItemInfo{ItemId: 500502, ItemCount: 1},
task.ItemInfo{ItemId: 500503, ItemCount: 1},
)
case 86:
// 新手注册任务-宠物奖励
var petid int
switch data.OutState {
case 1:
petid = 1
case 2:
petid = 7
case 3:
petid = 4
default:
// 处理未定义的OutState可根据业务需求调整
// 例如: log.Printf("未知的OutState: %d", data.OutState)
// return result // 或其他错误处理
}
r := model.GenPetInfo(petid, 31, -1, 0, 0, 5)
result.CaptureTime = r.CatchTime
result.PetTypeId = r.ID
c.Service.PetAdd(*r)
case 87:
// 新手注册任务-奖励物品
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 300001, ItemCount: 5},
task.ItemInfo{ItemId: 300011, ItemCount: 5},
)
case 88:
// 新手注册任务-奖励物品
result.ItemList = append(result.ItemList,
task.ItemInfo{ItemId: 1, ItemCount: 5000},
)
// 可以根据需要添加其他任务ID的处理
// case xxx:
// ...
default:
// 处理未定义的任务ID可选
// log.Printf("未处理的任务ID: %d", data.TaskId)
}
var ttt []model.SingleItemInfo
for _, v := range result.ItemList {
ttt = append(ttt, model.SingleItemInfo{ItemId: v.ItemId, ItemCnt: v.ItemCount})
}
c.ItemAdd(ttt)
return result, 0
}
/**
* 获取任务状态
*/
func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *player.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) {
result = &task.GetTaskBufOutboundInfo{}
c.Service.Task(data.TaskId, func(te *model.TaskEX) bool {
result.TaskId = te.TaskID
result.TaskList = te.Data
return false
})
return result, 0
}
/**
* 删除任务
*/
func (h Controller) Delete_Task(data *task.DeleteTaskInboundInfo, c *player.Player) (result *task.DeleteTaskOutboundInfo, err errorcode.ErrorCode) {
// if data.Head.CMD == 2205 { //判断不是每日任务
// } else {
// }
return &task.DeleteTaskOutboundInfo{}, 0
}