任务提交
This commit is contained in:
@@ -7,6 +7,7 @@ import (
|
||||
"blazing/cool"
|
||||
"blazing/logic/service"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"bytes"
|
||||
@@ -89,32 +90,35 @@ func init() { //默认初始化扫描
|
||||
methodValue := value.MethodByName(method.Name)
|
||||
fmt.Println("找到注册方法", method.Name)
|
||||
methodValue.Type().NumIn()
|
||||
var func_cmd = getcmd(methodValue.Type().In(0))
|
||||
if func_cmd == 0 { //说明不是注册方法
|
||||
glog.Warning(context.Background(), "方法参数必须是结构体", method.Name, "跳过注册")
|
||||
continue
|
||||
|
||||
for _, func_cmd := range getcmd(methodValue.Type().In(0)) {
|
||||
if func_cmd == 0 { //说明不是注册方法
|
||||
glog.Warning(context.Background(), "方法参数必须是结构体", method.Name, "跳过注册")
|
||||
continue
|
||||
}
|
||||
|
||||
if cool.Config.PortBL == 0 && func_cmd > 1000 { //判断login服务器
|
||||
continue
|
||||
|
||||
}
|
||||
|
||||
if cool.Config.PortBL != 0 && func_cmd < 1000 { //判断login服务器
|
||||
continue
|
||||
|
||||
}
|
||||
glog.Debug(context.Background(), "注册方法", func_cmd, method.Name)
|
||||
// fmt.Println(methodValue.Interface().(func(gnet.Conn, handler.TomeeHeader)))
|
||||
_, ok := cool.CmdCache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache
|
||||
|
||||
if ok { //方法已存在init
|
||||
glog.Error(context.Background(), "方法已存在init,不会初始化后面的方法", func_cmd)
|
||||
}
|
||||
}
|
||||
|
||||
if cool.Config.PortBL == 0 && func_cmd > 1000 { //判断login服务器
|
||||
continue
|
||||
|
||||
}
|
||||
|
||||
if cool.Config.PortBL != 0 && func_cmd < 1000 { //判断login服务器
|
||||
continue
|
||||
|
||||
}
|
||||
glog.Debug(context.Background(), "注册方法", func_cmd, method.Name)
|
||||
// fmt.Println(methodValue.Interface().(func(gnet.Conn, handler.TomeeHeader)))
|
||||
_, ok := cool.CmdCache.LoadOrStore(func_cmd, methodValue) //TODO 待实现对不同用户初始化方法以取消全局cmdcache
|
||||
|
||||
if ok { //方法已存在init
|
||||
glog.Error(context.Background(), "方法已存在init,不会初始化后面的方法", func_cmd)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func getcmd(t reflect.Type) uint32 {
|
||||
func getcmd(t reflect.Type) []uint32 {
|
||||
// 处理指针类型
|
||||
if t.Kind() == reflect.Ptr {
|
||||
t = t.Elem() // 获取指针指向的类型
|
||||
@@ -123,7 +127,7 @@ func getcmd(t reflect.Type) uint32 {
|
||||
// 确保是结构体
|
||||
if t.Kind() != reflect.Struct {
|
||||
|
||||
return 0
|
||||
return []uint32{0}
|
||||
}
|
||||
|
||||
// 遍历结构体字段
|
||||
@@ -135,7 +139,7 @@ func getcmd(t reflect.Type) uint32 {
|
||||
if field.Type == reflect.TypeOf(handler.TomeeHeader{}) {
|
||||
// fmt.Println(reflect.ValueOf(field))
|
||||
|
||||
return gconv.Uint32(field.Tag.Get("cmd"))
|
||||
return gconv.SliceUint32(strings.Split(field.Tag.Get("cmd"), "|"))
|
||||
|
||||
}
|
||||
|
||||
@@ -150,7 +154,7 @@ func getcmd(t reflect.Type) uint32 {
|
||||
}
|
||||
// fmt.Println()
|
||||
}
|
||||
return 0
|
||||
return []uint32{0}
|
||||
}
|
||||
|
||||
// 遍历结构体方法并执行RECV_cmd
|
||||
|
||||
@@ -21,7 +21,7 @@ func (h *Controller) MapEnter(data *maps.InInfo, c *entity.Player) (result *maps
|
||||
data.Broadcast(c.MapId, *tt) //同步广播
|
||||
// 如果是无怪地图,直接返回
|
||||
|
||||
if mservice.NewMonsterService().GetId(c.MapId) == 0 {
|
||||
if mservice.NewMonsterService().GetId(c.MapId) == nil {
|
||||
return nil, -1
|
||||
}
|
||||
|
||||
|
||||
@@ -13,28 +13,48 @@ import (
|
||||
*/
|
||||
func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *entity.Player) (result *task.AcceptTaskOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if data.Head.CMD == 2201 { //判断不是每日任务
|
||||
service.NewUserService(c.UserID).TaskExec(func(ttt map[uint32]model.TaskInfo) bool {
|
||||
ft, ok := ttt[data.TaskId]
|
||||
if ok { //如果找到任务
|
||||
if ft.Status == 0 { //可以接受
|
||||
ft.Status = 1 //接受
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
ttt[data.TaskId] = model.TaskInfo{
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
} else {
|
||||
service.NewUserService(c.UserID).DailyTaskExec(func(ttt map[uint32]model.DailyTaskInfo) bool {
|
||||
ft, ok := ttt[data.TaskId]
|
||||
if ok { //如果找到任务
|
||||
if ft.Status == 0 { //可以接受
|
||||
ft.Status = 1 //接受
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
ttt[data.TaskId] = model.DailyTaskInfo{
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
}
|
||||
|
||||
result = &task.AcceptTaskOutboundInfo{}
|
||||
result.TaskId = data.TaskId
|
||||
|
||||
service.NewUserService(c.UserID).TaskExec(func(ttt map[uint32]model.TaskInfo) bool {
|
||||
ft, ok := ttt[data.TaskId]
|
||||
if ok { //如果找到任务
|
||||
if ft.Status == 0 { //可以接受
|
||||
ft.Status = 1 //接受
|
||||
return true
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
ttt[data.TaskId] = model.TaskInfo{
|
||||
Status: 1,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
return result, 0
|
||||
}
|
||||
|
||||
@@ -42,15 +62,71 @@ func (h Controller) AcceptTask(data *task.AcceptTaskInboundInfo, c *entity.Playe
|
||||
* 更新任务步骤
|
||||
*/
|
||||
func (h Controller) AddTaskBuf(data *task.AddTaskBufInboundInfo, c *entity.Player) (result *task.AddTaskBufOutboundInfo, err errorcode.ErrorCode) {
|
||||
service.NewUserService(c.UserID).TaskExec(func(ttt map[uint32]model.TaskInfo) bool {
|
||||
if conditions, ok := ttt[data.TaskId]; ok {
|
||||
conditions.TaskInfo = data.TaskList
|
||||
ttt[data.TaskId] = conditions
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
if data.Head.CMD == 2204 { //判断不是每日任务
|
||||
service.NewUserService(c.UserID).TaskExec(func(ttt map[uint32]model.TaskInfo) bool {
|
||||
if conditions, ok := ttt[data.TaskId]; ok {
|
||||
conditions.TaskInfo = data.TaskList
|
||||
ttt[data.TaskId] = conditions
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
} else {
|
||||
service.NewUserService(c.UserID).DailyTaskExec(func(ttt map[uint32]model.DailyTaskInfo) bool {
|
||||
if conditions, ok := ttt[data.TaskId]; ok {
|
||||
conditions.DailyTaskInfo = data.TaskList
|
||||
ttt[data.TaskId] = conditions
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
return &task.AddTaskBufOutboundInfo{}, 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 完成任务
|
||||
*/
|
||||
func (h Controller) Complete_Task(data *task.CompleteTaskInboundInfo, c *entity.Player) (result *task.CompleteTaskOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if data.Head.CMD == 2202 { //判断不是每日任务
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
return &task.CompleteTaskOutboundInfo{}, 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取任务状态
|
||||
*/
|
||||
func (h Controller) Get_Task_Buf(data *task.GetTaskBufInboundInfo, c *entity.Player) (result *task.GetTaskBufOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if data.Head.CMD == 2203 { //判断不是每日任务
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
return &task.GetTaskBufOutboundInfo{}, 0
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务
|
||||
*/
|
||||
func (h Controller) Delete_Task(data *task.DeleteTaskInboundInfo, c *entity.Player) (result *task.DeleteTaskOutboundInfo, err errorcode.ErrorCode) {
|
||||
|
||||
if data.Head.CMD == 2205 { //判断不是每日任务
|
||||
|
||||
} else {
|
||||
|
||||
}
|
||||
|
||||
return &task.DeleteTaskOutboundInfo{}, 0
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user