2025-07-05 22:29:11 +08:00
|
|
|
/*
|
|
|
|
|
文件名:Pack_Class.nut
|
|
|
|
|
路径:Base/_Tool/Pack_Class.nut
|
|
|
|
|
创建日期:2025-06-30 09:24
|
|
|
|
|
文件用途:字节包
|
|
|
|
|
*/
|
2025-10-14 09:17:56 +08:00
|
|
|
class Packet {
|
2025-07-05 22:29:11 +08:00
|
|
|
|
|
|
|
|
//读取指针位置
|
2025-10-14 09:17:56 +08:00
|
|
|
Index = 0;
|
2025-07-05 22:29:11 +08:00
|
|
|
|
|
|
|
|
//内存数据
|
|
|
|
|
Pointer = null;
|
|
|
|
|
//包大小
|
|
|
|
|
Size = 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//加载包
|
2025-10-14 09:17:56 +08:00
|
|
|
function Load(P, S) {
|
2025-07-05 22:29:11 +08:00
|
|
|
Pointer = P;
|
|
|
|
|
Size = S;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-14 09:17:56 +08:00
|
|
|
//读取指针跳转
|
|
|
|
|
function Seek(...) {
|
|
|
|
|
local Pos = vargv[0];
|
|
|
|
|
local Mode = 0;
|
|
|
|
|
if(vargc > 1) Mode = vargv[1];
|
|
|
|
|
if (Mode == 0) {
|
|
|
|
|
Index = Pos;
|
|
|
|
|
} else if (Mode == 1) {
|
|
|
|
|
Index += Pos;
|
|
|
|
|
} else if (Mode == 2) {
|
|
|
|
|
Index -= Pos;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2025-07-05 22:29:11 +08:00
|
|
|
//读取整形
|
2025-10-14 09:17:56 +08:00
|
|
|
function GetInt() {
|
2025-07-05 22:29:11 +08:00
|
|
|
local Size_t = 4;
|
2025-10-14 09:17:56 +08:00
|
|
|
if (Index + Size_t > Size) {
|
2025-07-05 22:29:11 +08:00
|
|
|
print("读取包越界!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
2025-10-14 09:17:56 +08:00
|
|
|
local Buf = NativePointer(Pointer).add(Index).readInt();
|
|
|
|
|
Index += Size_t;
|
2025-07-05 22:29:11 +08:00
|
|
|
return Buf;
|
|
|
|
|
}
|
|
|
|
|
|
2025-10-14 09:17:56 +08:00
|
|
|
//读取流
|
|
|
|
|
function GetStream(Size_t) {
|
|
|
|
|
if (Index + Size_t > Size) {
|
|
|
|
|
print("读取包越界!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
local Np = NativePointer(Pointer).add(Index);
|
|
|
|
|
Np.Size = Size_t;
|
|
|
|
|
Index += Size_t;
|
|
|
|
|
return Np;
|
|
|
|
|
}
|
2025-07-05 22:29:11 +08:00
|
|
|
}
|