Files
bl/logic/service/task/GetTask.go
昔念 5e01837f78 refactor(logic): 重构逻辑层代码
- 移除未使用的 SocketHandler_Tomee.go、ai.go、effect_1.go 文件
- 更新 player 包名引用,替换原 service 包
- 调整 TomeeHeader 和相关处理逻辑至 player 包
- 更新各控制器中的 Player 引用为 player 包中的类型
- 移除冗余的 GetPlayer 方法,使用新逻辑
2025-09-14 01:35:16 +08:00

68 lines
2.0 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 task
import (
"blazing/logic/service/player"
"encoding/binary"
"errors"
"github.com/pointernil/bitset32"
)
type GetTaskBufInboundInfo struct {
Head player.TomeeHeader `cmd:"2203|2234" 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
}