增加任务信息
This commit is contained in:
13
logic/service/task/AcceptTask.go
Normal file
13
logic/service/task/AcceptTask.go
Normal file
@@ -0,0 +1,13 @@
|
||||
package task
|
||||
|
||||
import "blazing/common/socket/handler"
|
||||
|
||||
// AcceptTaskInboundInfo 对应Java的AcceptTaskInboundInfo类
|
||||
// 用于接收任务的入站信息
|
||||
type AcceptTaskInboundInfo struct {
|
||||
Head handler.TomeeHeader `cmd:"2201" struc:"[0]pad"`
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
}
|
||||
type AcceptTaskOutboundInfo struct {
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
}
|
||||
14
logic/service/task/AddTask.go
Normal file
14
logic/service/task/AddTask.go
Normal file
@@ -0,0 +1,14 @@
|
||||
package task
|
||||
|
||||
import "blazing/common/socket/handler"
|
||||
|
||||
// AddTaskBufInboundInfo 对应Java的AddTaskBufInboundInfo类
|
||||
// 用于接收添加任务缓冲区的入站信息
|
||||
type AddTaskBufInboundInfo struct {
|
||||
Head handler.TomeeHeader `cmd:"2204" struc:"[0]pad"`
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
TaskList []byte `json:"taskList" description:"任务步骤信息" arraySerialize:"fixedLength=20"` // 任务步骤信息,对应Java的@ArraySerialize注解
|
||||
}
|
||||
type AddTaskBufOutboundInfo struct {
|
||||
// 该结构体没有字段,对应Java中的空类
|
||||
}
|
||||
23
logic/service/task/CompleteTask.go
Normal file
23
logic/service/task/CompleteTask.go
Normal file
@@ -0,0 +1,23 @@
|
||||
package task
|
||||
|
||||
import "blazing/common/socket/handler"
|
||||
|
||||
type CompleteTaskInboundInfo struct {
|
||||
Head handler.TomeeHeader `cmd:"2202" struc:"[0]pad"`
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
OutState uint32 `json:"outState" description:"当前状态, 1为完成任务"` // 当前状态,1表示完成任务,对应Java的@UInt long
|
||||
}
|
||||
type CompleteTaskOutboundInfo struct {
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
PetTypeId uint32 `json:"petTypeId" description:"发放的精灵ID"` // 发放的精灵ID,对应Java的@UInt long
|
||||
CaptureTime uint32 `json:"captureTime" description:"发放的精灵捕获时间"` // 发放的精灵捕获时间,对应Java的@UInt long
|
||||
ItemLen uint32 `struc:"sizeof=ItemList"`
|
||||
ItemList []ItemInfo `json:"itemList" description:"发放物品的数组"` // 发放物品的数组,对应Java的List<ItemInfo>
|
||||
}
|
||||
|
||||
// ItemInfo 对应Java的ItemInfo类
|
||||
// 用于表示发放物品的信息
|
||||
type ItemInfo struct {
|
||||
ItemId uint64 `json:"itemId" description:"发放物品ID"` // 发放物品ID,对应Java的@UInt long
|
||||
ItemCount uint64 `json:"itemCount" description:"发放物品的数量"` // 发放物品的数量,对应Java的@UInt long
|
||||
}
|
||||
67
logic/service/task/GetTask.go
Normal file
67
logic/service/task/GetTask.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package task
|
||||
|
||||
import (
|
||||
"blazing/common/socket/handler"
|
||||
"encoding/binary"
|
||||
"errors"
|
||||
|
||||
"github.com/pointernil/bitset32"
|
||||
)
|
||||
|
||||
type GetTaskBufInboundInfo struct {
|
||||
Head handler.TomeeHeader `cmd:"2203" struc:"[0]pad"`
|
||||
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
}
|
||||
type GetTaskBufOutboundInfo struct {
|
||||
TaskId uint32 `json:"taskId" description:"任务ID"` // 任务ID,对应Java的@UInt long
|
||||
Flag uint32 `json:"flag" description:"暂时未知"` // 暂时未知,对应Java的@UInt long
|
||||
TaskList []uint32 `struc:"[20]byte"` // 任务步骤信息,对应Java的@ArraySerialize注解
|
||||
}
|
||||
|
||||
// 获得任务数组
|
||||
func (t *GetTaskBufOutboundInfo) GetList() *bitset32.BitSet32 {
|
||||
|
||||
return bitset32.From(t.TaskList)
|
||||
}
|
||||
|
||||
// BytesToInt32Slice 将[]byte转换为[]int32
|
||||
// 注意:src长度必须是4的倍数,因为每个int32由4字节组成
|
||||
// order参数指定字节序(binary.BigEndian 或 binary.LittleEndian)
|
||||
func BytesToInt32Slice(src []byte, order binary.ByteOrder) ([]int32, error) {
|
||||
// 检查输入长度是否为4的倍数
|
||||
if len(src)%4 != 0 {
|
||||
return nil, errors.New("输入字节切片长度必须是4的倍数")
|
||||
}
|
||||
|
||||
// 计算目标切片长度
|
||||
dstLen := len(src) / 4
|
||||
dst := make([]int32, dstLen)
|
||||
|
||||
// 逐个转换4字节为int32
|
||||
for i := 0; i < dstLen; i++ {
|
||||
// 计算当前位置的字节偏移
|
||||
offset := i * 4
|
||||
// 读取4字节并转换为uint32,再转换为int32
|
||||
dst[i] = int32(order.Uint32(src[offset : offset+4]))
|
||||
}
|
||||
|
||||
return dst, nil
|
||||
}
|
||||
|
||||
// Int32SliceToBytes 将[]int32转换回[]byte
|
||||
// order参数指定字节序(binary.BigEndian 或 binary.LittleEndian)
|
||||
func Int32SliceToBytes(src []int32, order binary.ByteOrder) []byte {
|
||||
// 计算目标字节切片长度
|
||||
dst := make([]byte, len(src)*4)
|
||||
|
||||
// 逐个将int32转换为4字节
|
||||
for i, v := range src {
|
||||
// 计算当前位置的字节偏移
|
||||
offset := i * 4
|
||||
// 将int32转换为uint32,再写入字节切片
|
||||
order.PutUint32(dst[offset:offset+4], uint32(v))
|
||||
}
|
||||
|
||||
return dst
|
||||
}
|
||||
Reference in New Issue
Block a user