mirror of
https://github.com/tiennm99/zfoo.git
synced 2026-10-13 20:15:20 +00:00
test[gdscript]: gdscript protocol test
This commit is contained in:
1 parent
3ff774074c
commit
7f90231210
15 files changed
+14195
-666
No files matched your search
+18
-13
@@ -1,9 +1,14 @@
|
||||
extends Node2D
|
||||
|
||||
|
||||
const ProtocolManager = preload("res://gdProtocol/ProtocolManager.gd")
|
||||
const ByteBuffer = preload("res://gdProtocol/buffer/ByteBuffer.gd")
|
||||
const FileUtils = preload("res://zfoo/util/FileUtils.gd")
|
||||
const ProtocolManager = preload("res://zfoogd/ProtocolManager.gd")
|
||||
const ByteBuffer = preload("res://zfoogd/ByteBuffer.gd")
|
||||
const FileUtils = preload("res://zfoo/FileUtils.gd")
|
||||
|
||||
# 测试参数
|
||||
#op.setFoldProtocol(true);
|
||||
#op.setProtocolPath("D:\\github\\godot-bird\\protocoltest");
|
||||
#op.getGenerateLanguages().add(CodeLanguage.GdScript);
|
||||
|
||||
func _ready():
|
||||
var buffer = ByteBuffer.new()
|
||||
@@ -38,8 +43,8 @@ func _ready():
|
||||
assert(999999 == buffer.readInt())
|
||||
assert(2147483647 == buffer.readInt())
|
||||
|
||||
var maxLong = int("9223372036854775807")
|
||||
var minLong = int("-9223372036854775808")
|
||||
var maxLong: int = 9223372036854775807
|
||||
var minLong: int = maxLong + 1
|
||||
buffer.writeLong(maxLong)
|
||||
buffer.writeLong(9999999999999999)
|
||||
buffer.writeLong(99999999)
|
||||
@@ -74,22 +79,22 @@ func _ready():
|
||||
buffer.writeString(strValue)
|
||||
assert(strValue == buffer.readString())
|
||||
|
||||
buffer.writeChar(strValue)
|
||||
assert(strValue[0] == buffer.readChar())
|
||||
buffer.writeChar("")
|
||||
assert(ByteBuffer.EMPTY == buffer.readChar())
|
||||
test()
|
||||
|
||||
|
||||
func test():
|
||||
ProtocolManager.initProtocol()
|
||||
var buffer = ByteBuffer.new()
|
||||
var poolByteArray = FileUtils.readFileToByteArray("user://ComplexObject.bytes")
|
||||
buffer.writePoolByteArray(poolByteArray)
|
||||
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-no-compatible.txt")
|
||||
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-inner-compatible.txt")
|
||||
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-compatible.txt")
|
||||
#var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-inner-compatible.txt")
|
||||
var poolByteArray = FileUtils.readFileToByteArray("res://test/protocol/normal-out-inner-inner-compatible.txt")
|
||||
|
||||
buffer.writePackedByteArray(poolByteArray)
|
||||
|
||||
var packet = ProtocolManager.read(buffer)
|
||||
print(packet)
|
||||
packet.myCompatible = 0
|
||||
|
||||
var newByteBuffer = ByteBuffer.new()
|
||||
ProtocolManager.write(newByteBuffer, packet);
|
||||
print(newByteBuffer.getWriteOffset())
|
||||
@@ -1,33 +0,0 @@
|
||||
const ComplexObject = preload("res://gdProtocol/packet/ComplexObject.gd")
|
||||
const NormalObject = preload("res://gdProtocol/packet/NormalObject.gd")
|
||||
const ObjectA = preload("res://gdProtocol/packet/ObjectA.gd")
|
||||
const ObjectB = preload("res://gdProtocol/packet/ObjectB.gd")
|
||||
const SimpleObject = preload("res://gdProtocol/packet/SimpleObject.gd")
|
||||
|
||||
const protocols = {}
|
||||
|
||||
static func getProtocol(protocolId: int):
|
||||
return protocols[protocolId]
|
||||
|
||||
static func newInstance(protocolId: int):
|
||||
var protocol = protocols[protocolId]
|
||||
return protocol.new()
|
||||
|
||||
static func write(buffer, packet):
|
||||
var protocolId: int = packet.PROTOCOL_ID
|
||||
buffer.writeShort(protocolId)
|
||||
var protocol = protocols[protocolId]
|
||||
protocol.write(buffer, packet)
|
||||
|
||||
static func read(buffer):
|
||||
var protocolId = buffer.readShort();
|
||||
var protocol = protocols[protocolId]
|
||||
var packet = protocol.read(buffer);
|
||||
return packet;
|
||||
|
||||
static func initProtocol():
|
||||
protocols[100] = ComplexObject
|
||||
protocols[101] = NormalObject
|
||||
protocols[102] = ObjectA
|
||||
protocols[103] = ObjectB
|
||||
protocols[104] = SimpleObject
|
||||
@@ -1,408 +0,0 @@
|
||||
# 复杂的对象
|
||||
# 包括了各种复杂的结构,数组,List,Set,Map
|
||||
#
|
||||
# @author godotg
|
||||
|
||||
# byte类型,最简单的整形
|
||||
var a # byte
|
||||
# byte的包装类型
|
||||
# 优先使用基础类型,包装类型会有装箱拆箱
|
||||
var aa # java.lang.Byte
|
||||
# 数组类型
|
||||
var aaa # byte[]
|
||||
var aaaa # java.lang.Byte[]
|
||||
var b # short
|
||||
var bb # java.lang.Short
|
||||
var bbb # short[]
|
||||
var bbbb # java.lang.Short[]
|
||||
var c # int
|
||||
var cc # java.lang.Integer
|
||||
var ccc # int[]
|
||||
var cccc # java.lang.Integer[]
|
||||
var d # long
|
||||
var dd # java.lang.Long
|
||||
var ddd # long[]
|
||||
var dddd # java.lang.Long[]
|
||||
var e # float
|
||||
var ee # java.lang.Float
|
||||
var eee # float[]
|
||||
var eeee # java.lang.Float[]
|
||||
var f # double
|
||||
var ff # java.lang.Double
|
||||
var fff # double[]
|
||||
var ffff # java.lang.Double[]
|
||||
var g # boolean
|
||||
var gg # java.lang.Boolean
|
||||
var ggg # boolean[]
|
||||
var gggg # java.lang.Boolean[]
|
||||
var h # char
|
||||
var hh # java.lang.Character
|
||||
var hhh # char[]
|
||||
var hhhh # java.lang.Character[]
|
||||
var jj # java.lang.String
|
||||
var jjj # java.lang.String[]
|
||||
var kk # com.zfoo.protocol.packet.ObjectA
|
||||
var kkk # com.zfoo.protocol.packet.ObjectA[]
|
||||
var l # java.util.List<java.lang.Integer>
|
||||
var ll # java.util.List<java.util.List<java.util.List<java.lang.Integer>>>
|
||||
var lll # java.util.List<java.util.List<com.zfoo.protocol.packet.ObjectA>>
|
||||
var llll # java.util.List<java.lang.String>
|
||||
var lllll # java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>
|
||||
var m # java.util.Map<java.lang.Integer, java.lang.String>
|
||||
var mm # java.util.Map<java.lang.Integer, com.zfoo.protocol.packet.ObjectA>
|
||||
var mmm # java.util.Map<com.zfoo.protocol.packet.ObjectA, java.util.List<java.lang.Integer>>
|
||||
var mmmm # java.util.Map<java.util.List<java.util.List<com.zfoo.protocol.packet.ObjectA>>, java.util.List<java.util.List<java.util.List<java.lang.Integer>>>>
|
||||
var mmmmm # java.util.Map<java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>, java.util.Set<java.util.Map<java.lang.Integer, java.lang.String>>>
|
||||
var s # java.util.Set<java.lang.Integer>
|
||||
var ss # java.util.Set<java.util.Set<java.util.List<java.lang.Integer>>>
|
||||
var sss # java.util.Set<java.util.Set<com.zfoo.protocol.packet.ObjectA>>
|
||||
var ssss # java.util.Set<java.lang.String>
|
||||
var sssss # java.util.Set<java.util.Map<java.lang.Integer, java.lang.String>>
|
||||
# 如果要修改协议并且兼容老协议,需要加上Compatible注解,按照增加的顺序添加order
|
||||
var myCompatible # int
|
||||
var myObject # com.zfoo.protocol.packet.ObjectA
|
||||
|
||||
const PROTOCOL_ID = 100
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (buffer.writePacketFlag(packet)):
|
||||
return
|
||||
buffer.writeByte(packet.a)
|
||||
buffer.writeByte(packet.aa)
|
||||
buffer.writeByteArray(packet.aaa)
|
||||
buffer.writeByteArray(packet.aaaa)
|
||||
buffer.writeShort(packet.b)
|
||||
buffer.writeShort(packet.bb)
|
||||
buffer.writeShortArray(packet.bbb)
|
||||
buffer.writeShortArray(packet.bbbb)
|
||||
buffer.writeInt(packet.c)
|
||||
buffer.writeInt(packet.cc)
|
||||
buffer.writeIntArray(packet.ccc)
|
||||
buffer.writeIntArray(packet.cccc)
|
||||
buffer.writeLong(packet.d)
|
||||
buffer.writeLong(packet.dd)
|
||||
buffer.writeLongArray(packet.ddd)
|
||||
buffer.writeLongArray(packet.dddd)
|
||||
buffer.writeFloat(packet.e)
|
||||
buffer.writeFloat(packet.ee)
|
||||
buffer.writeFloatArray(packet.eee)
|
||||
buffer.writeFloatArray(packet.eeee)
|
||||
buffer.writeDouble(packet.f)
|
||||
buffer.writeDouble(packet.ff)
|
||||
buffer.writeDoubleArray(packet.fff)
|
||||
buffer.writeDoubleArray(packet.ffff)
|
||||
buffer.writeBool(packet.g)
|
||||
buffer.writeBool(packet.gg)
|
||||
buffer.writeBooleanArray(packet.ggg)
|
||||
buffer.writeBooleanArray(packet.gggg)
|
||||
buffer.writeChar(packet.h)
|
||||
buffer.writeChar(packet.hh)
|
||||
buffer.writeCharArray(packet.hhh)
|
||||
buffer.writeCharArray(packet.hhhh)
|
||||
buffer.writeString(packet.jj)
|
||||
buffer.writeStringArray(packet.jjj)
|
||||
buffer.writePacket(packet.kk, 102)
|
||||
buffer.writePacketArray(packet.kkk, 102)
|
||||
buffer.writeIntArray(packet.l)
|
||||
if (packet.ll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.ll.size())
|
||||
for element0 in packet.ll:
|
||||
if (element0 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element0.size())
|
||||
for element1 in element0:
|
||||
buffer.writeIntArray(element1)
|
||||
if (packet.lll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.lll.size())
|
||||
for element2 in packet.lll:
|
||||
buffer.writePacketArray(element2, 102)
|
||||
buffer.writeStringArray(packet.llll)
|
||||
if (packet.lllll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.lllll.size())
|
||||
for element3 in packet.lllll:
|
||||
buffer.writeIntStringMap(element3)
|
||||
buffer.writeIntStringMap(packet.m)
|
||||
buffer.writeIntPacketMap(packet.mm, 102)
|
||||
if (packet.mmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmm.size())
|
||||
for key4 in packet.mmm:
|
||||
var value5 = packet.mmm[key4]
|
||||
buffer.writePacket(key4, 102)
|
||||
buffer.writeIntArray(value5)
|
||||
if (packet.mmmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmmm.size())
|
||||
for key6 in packet.mmmm:
|
||||
var value7 = packet.mmmm[key6]
|
||||
if (key6 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(key6.size())
|
||||
for element8 in key6:
|
||||
buffer.writePacketArray(element8, 102)
|
||||
if (value7 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(value7.size())
|
||||
for element9 in value7:
|
||||
if (element9 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element9.size())
|
||||
for element10 in element9:
|
||||
buffer.writeIntArray(element10)
|
||||
if (packet.mmmmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmmmm.size())
|
||||
for key11 in packet.mmmmm:
|
||||
var value12 = packet.mmmmm[key11]
|
||||
if (key11 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(key11.size())
|
||||
for element13 in key11:
|
||||
buffer.writeIntStringMap(element13)
|
||||
if (value12 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(value12.size())
|
||||
for element14 in value12:
|
||||
buffer.writeIntStringMap(element14)
|
||||
buffer.writeIntArray(packet.s)
|
||||
if (packet.ss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.ss.size())
|
||||
for element15 in packet.ss:
|
||||
if (element15 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element15.size())
|
||||
for element16 in element15:
|
||||
buffer.writeIntArray(element16)
|
||||
if (packet.sss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.sss.size())
|
||||
for element17 in packet.sss:
|
||||
buffer.writePacketArray(element17, 102)
|
||||
buffer.writeStringArray(packet.ssss)
|
||||
if (packet.sssss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.sssss.size())
|
||||
for element18 in packet.sssss:
|
||||
buffer.writeIntStringMap(element18)
|
||||
buffer.writeInt(packet.myCompatible)
|
||||
buffer.writePacket(packet.myObject, 102)
|
||||
|
||||
|
||||
static func read(buffer):
|
||||
if (!buffer.readBool()):
|
||||
return null
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result19 = buffer.readByte()
|
||||
packet.a = result19
|
||||
var result20 = buffer.readByte()
|
||||
packet.aa = result20
|
||||
var array21 = buffer.readByteArray()
|
||||
packet.aaa = array21
|
||||
var array22 = buffer.readByteArray()
|
||||
packet.aaaa = array22
|
||||
var result23 = buffer.readShort()
|
||||
packet.b = result23
|
||||
var result24 = buffer.readShort()
|
||||
packet.bb = result24
|
||||
var array25 = buffer.readShortArray()
|
||||
packet.bbb = array25
|
||||
var array26 = buffer.readShortArray()
|
||||
packet.bbbb = array26
|
||||
var result27 = buffer.readInt()
|
||||
packet.c = result27
|
||||
var result28 = buffer.readInt()
|
||||
packet.cc = result28
|
||||
var array29 = buffer.readIntArray()
|
||||
packet.ccc = array29
|
||||
var array30 = buffer.readIntArray()
|
||||
packet.cccc = array30
|
||||
var result31 = buffer.readLong()
|
||||
packet.d = result31
|
||||
var result32 = buffer.readLong()
|
||||
packet.dd = result32
|
||||
var array33 = buffer.readLongArray()
|
||||
packet.ddd = array33
|
||||
var array34 = buffer.readLongArray()
|
||||
packet.dddd = array34
|
||||
var result35 = buffer.readFloat()
|
||||
packet.e = result35
|
||||
var result36 = buffer.readFloat()
|
||||
packet.ee = result36
|
||||
var array37 = buffer.readFloatArray()
|
||||
packet.eee = array37
|
||||
var array38 = buffer.readFloatArray()
|
||||
packet.eeee = array38
|
||||
var result39 = buffer.readDouble()
|
||||
packet.f = result39
|
||||
var result40 = buffer.readDouble()
|
||||
packet.ff = result40
|
||||
var array41 = buffer.readDoubleArray()
|
||||
packet.fff = array41
|
||||
var array42 = buffer.readDoubleArray()
|
||||
packet.ffff = array42
|
||||
var result43 = buffer.readBool()
|
||||
packet.g = result43
|
||||
var result44 = buffer.readBool()
|
||||
packet.gg = result44
|
||||
var array45 = buffer.readBooleanArray()
|
||||
packet.ggg = array45
|
||||
var array46 = buffer.readBooleanArray()
|
||||
packet.gggg = array46
|
||||
var result47 = buffer.readChar()
|
||||
packet.h = result47
|
||||
var result48 = buffer.readChar()
|
||||
packet.hh = result48
|
||||
var array49 = buffer.readCharArray()
|
||||
packet.hhh = array49
|
||||
var array50 = buffer.readCharArray()
|
||||
packet.hhhh = array50
|
||||
var result51 = buffer.readString()
|
||||
packet.jj = result51
|
||||
var array52 = buffer.readStringArray()
|
||||
packet.jjj = array52
|
||||
var result53 = buffer.readPacket(102)
|
||||
packet.kk = result53
|
||||
var array54 = buffer.readPacketArray(102)
|
||||
packet.kkk = array54
|
||||
var list55 = buffer.readIntArray()
|
||||
packet.l = list55
|
||||
var result56 = []
|
||||
var size58 = buffer.readInt()
|
||||
if (size58 > 0):
|
||||
for index57 in range(size58):
|
||||
var result59 = []
|
||||
var size61 = buffer.readInt()
|
||||
if (size61 > 0):
|
||||
for index60 in range(size61):
|
||||
var list62 = buffer.readIntArray()
|
||||
result59.append(list62)
|
||||
result56.append(result59)
|
||||
packet.ll = result56
|
||||
var result63 = []
|
||||
var size65 = buffer.readInt()
|
||||
if (size65 > 0):
|
||||
for index64 in range(size65):
|
||||
var list66 = buffer.readPacketArray(102)
|
||||
result63.append(list66)
|
||||
packet.lll = result63
|
||||
var list67 = buffer.readStringArray()
|
||||
packet.llll = list67
|
||||
var result68 = []
|
||||
var size70 = buffer.readInt()
|
||||
if (size70 > 0):
|
||||
for index69 in range(size70):
|
||||
var map71 = buffer.readIntStringMap()
|
||||
result68.append(map71)
|
||||
packet.lllll = result68
|
||||
var map72 = buffer.readIntStringMap()
|
||||
packet.m = map72
|
||||
var map73 = buffer.readIntPacketMap(102)
|
||||
packet.mm = map73
|
||||
var result74 = {}
|
||||
var size75 = buffer.readInt()
|
||||
if (size75 > 0):
|
||||
for index76 in range(size75):
|
||||
var result77 = buffer.readPacket(102)
|
||||
var list78 = buffer.readIntArray()
|
||||
result74[result77] = list78
|
||||
packet.mmm = result74
|
||||
var result79 = {}
|
||||
var size80 = buffer.readInt()
|
||||
if (size80 > 0):
|
||||
for index81 in range(size80):
|
||||
var result82 = []
|
||||
var size84 = buffer.readInt()
|
||||
if (size84 > 0):
|
||||
for index83 in range(size84):
|
||||
var list85 = buffer.readPacketArray(102)
|
||||
result82.append(list85)
|
||||
var result86 = []
|
||||
var size88 = buffer.readInt()
|
||||
if (size88 > 0):
|
||||
for index87 in range(size88):
|
||||
var result89 = []
|
||||
var size91 = buffer.readInt()
|
||||
if (size91 > 0):
|
||||
for index90 in range(size91):
|
||||
var list92 = buffer.readIntArray()
|
||||
result89.append(list92)
|
||||
result86.append(result89)
|
||||
result79[result82] = result86
|
||||
packet.mmmm = result79
|
||||
var result93 = {}
|
||||
var size94 = buffer.readInt()
|
||||
if (size94 > 0):
|
||||
for index95 in range(size94):
|
||||
var result96 = []
|
||||
var size98 = buffer.readInt()
|
||||
if (size98 > 0):
|
||||
for index97 in range(size98):
|
||||
var map99 = buffer.readIntStringMap()
|
||||
result96.append(map99)
|
||||
var result100 = []
|
||||
var size102 = buffer.readInt()
|
||||
if (size102 > 0):
|
||||
for index101 in range(size102):
|
||||
var map103 = buffer.readIntStringMap()
|
||||
result100.append(map103)
|
||||
result93[result96] = result100
|
||||
packet.mmmmm = result93
|
||||
var set104 = buffer.readIntArray()
|
||||
packet.s = set104
|
||||
var result105 = []
|
||||
var size107 = buffer.readInt()
|
||||
if (size107 > 0):
|
||||
for index106 in range(size107):
|
||||
var result108 = []
|
||||
var size110 = buffer.readInt()
|
||||
if (size110 > 0):
|
||||
for index109 in range(size110):
|
||||
var list111 = buffer.readIntArray()
|
||||
result108.append(list111)
|
||||
result105.append(result108)
|
||||
packet.ss = result105
|
||||
var result112 = []
|
||||
var size114 = buffer.readInt()
|
||||
if (size114 > 0):
|
||||
for index113 in range(size114):
|
||||
var set115 = buffer.readPacketArray(102)
|
||||
result112.append(set115)
|
||||
packet.sss = result112
|
||||
var set116 = buffer.readStringArray()
|
||||
packet.ssss = set116
|
||||
var result117 = []
|
||||
var size119 = buffer.readInt()
|
||||
if (size119 > 0):
|
||||
for index118 in range(size119):
|
||||
var map120 = buffer.readIntStringMap()
|
||||
result117.append(map120)
|
||||
packet.sssss = result117
|
||||
if (!buffer.isReadable()):
|
||||
return packet
|
||||
var result121 = buffer.readInt()
|
||||
packet.myCompatible = result121
|
||||
if (!buffer.isReadable()):
|
||||
return packet
|
||||
var result122 = buffer.readPacket(102)
|
||||
packet.myObject = result122
|
||||
return packet
|
||||
@@ -1,27 +0,0 @@
|
||||
# @author godotg
|
||||
|
||||
var a # int
|
||||
var m # java.util.Map<java.lang.Integer, java.lang.String>
|
||||
var objectB # com.zfoo.protocol.packet.ObjectB
|
||||
|
||||
const PROTOCOL_ID = 102
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (buffer.writePacketFlag(packet)):
|
||||
return
|
||||
buffer.writeInt(packet.a)
|
||||
buffer.writeIntStringMap(packet.m)
|
||||
buffer.writePacket(packet.objectB, 103)
|
||||
|
||||
|
||||
static func read(buffer):
|
||||
if (!buffer.readBool()):
|
||||
return null
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readInt()
|
||||
packet.a = result0
|
||||
var map1 = buffer.readIntStringMap()
|
||||
packet.m = map1
|
||||
var result2 = buffer.readPacket(103)
|
||||
packet.objectB = result2
|
||||
return packet
|
||||
@@ -1,19 +0,0 @@
|
||||
# @author godotg
|
||||
|
||||
var flag # boolean
|
||||
|
||||
const PROTOCOL_ID = 103
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (buffer.writePacketFlag(packet)):
|
||||
return
|
||||
buffer.writeBool(packet.flag)
|
||||
|
||||
|
||||
static func read(buffer):
|
||||
if (!buffer.readBool()):
|
||||
return null
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readBool()
|
||||
packet.flag = result0
|
||||
return packet
|
||||
@@ -1,23 +0,0 @@
|
||||
# @author godotg
|
||||
|
||||
var c # int
|
||||
var g # boolean
|
||||
|
||||
const PROTOCOL_ID = 104
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (buffer.writePacketFlag(packet)):
|
||||
return
|
||||
buffer.writeInt(packet.c)
|
||||
buffer.writeBool(packet.g)
|
||||
|
||||
|
||||
static func read(buffer):
|
||||
if (!buffer.readBool()):
|
||||
return null
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readInt()
|
||||
packet.c = result0
|
||||
var result1 = buffer.readBool()
|
||||
packet.g = result1
|
||||
return packet
|
||||
+168
-119
@@ -1,22 +1,48 @@
|
||||
const ProtocolManager = preload("res://gdProtocol/ProtocolManager.gd")
|
||||
const ProtocolManager = preload("res://zfoogd/ProtocolManager.gd")
|
||||
|
||||
const EMPTY: String = ""
|
||||
|
||||
const maxInt: int = 2147483647
|
||||
const minInt: int = -2147483648
|
||||
|
||||
var buffer = StreamPeerBuffer.new()
|
||||
|
||||
var writeOffset: int = 0 setget setWriteOffset, getWriteOffset
|
||||
var readOffset: int = 0 setget setReadOffset, getReadOffset
|
||||
var writeOffset: int = 0
|
||||
var readOffset: int = 0
|
||||
|
||||
func _init():
|
||||
buffer.big_endian = true
|
||||
|
||||
func adjustPadding(predictionLength: int, beforeWriteIndex: int) -> void:
|
||||
var currentWriteIndex = writeOffset
|
||||
var predictionCount = writeIntCount(predictionLength)
|
||||
var length = currentWriteIndex - beforeWriteIndex - predictionCount
|
||||
var lengthCount = writeIntCount(length)
|
||||
var padding = lengthCount - predictionCount
|
||||
if padding == 0:
|
||||
setWriteOffset(beforeWriteIndex)
|
||||
writeInt(length)
|
||||
setWriteOffset(currentWriteIndex)
|
||||
else:
|
||||
buffer.seek(currentWriteIndex - length)
|
||||
var retainedByteBuf = buffer.get_partial_data(length)
|
||||
buffer.seek(beforeWriteIndex)
|
||||
writeInt(length)
|
||||
buffer.put_partial_data(retainedByteBuf)
|
||||
setWriteOffset(getWriteOffset() + length)
|
||||
pass
|
||||
|
||||
func compatibleRead(beforeReadIndex: int, length: int) -> bool:
|
||||
return length != -1 && getReadOffset() < length + beforeReadIndex
|
||||
|
||||
# -------------------------------------------------get/set-------------------------------------------------
|
||||
func setWriteOffset(writeIndex: int) -> void:
|
||||
if (writeIndex > buffer.get_size()):
|
||||
var template = "writeIndex[{}] out of bounds exception: readerIndex: {}, writerIndex: {} (expected: 0 <= readerIndex <= writerIndex <= capacity: {})"
|
||||
printerr(template.format([writeIndex, readOffset, writeOffset, buffer.size()], "{}"))
|
||||
printerr(template.format([writeIndex, readOffset, writeOffset, buffer.get_size()], "{}"))
|
||||
return
|
||||
writeOffset = writeIndex
|
||||
pass
|
||||
|
||||
func getWriteOffset() -> int:
|
||||
return writeOffset
|
||||
@@ -27,6 +53,7 @@ func setReadOffset(readIndex: int) -> void:
|
||||
printerr(template.format([readIndex, readOffset, writeOffset, buffer.size()], "{}"))
|
||||
return
|
||||
readOffset = readIndex
|
||||
pass
|
||||
|
||||
func getReadOffset() -> int:
|
||||
return readOffset
|
||||
@@ -35,22 +62,25 @@ func isReadable() -> bool:
|
||||
return writeOffset > readOffset
|
||||
|
||||
# -------------------------------------------------write/read-------------------------------------------------
|
||||
func writePoolByteArray(value: PoolByteArray):
|
||||
var length = value.size()
|
||||
func writePackedByteArray(value: PackedByteArray):
|
||||
var length: int = value.size()
|
||||
buffer.put_partial_data(value)
|
||||
writeOffset += length
|
||||
|
||||
pass
|
||||
|
||||
func toPackedByteArray() -> PackedByteArray:
|
||||
return buffer.data_array.slice(0, writeOffset)
|
||||
|
||||
func writeBool(value: bool) -> void:
|
||||
var byte = 0
|
||||
if (value):
|
||||
byte = 1
|
||||
var byte: int = 1 if value else 0
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_8(byte)
|
||||
writeOffset += 1
|
||||
pass
|
||||
|
||||
func readBool() -> bool:
|
||||
buffer.seek(readOffset)
|
||||
var byte = buffer.get_8()
|
||||
var byte: int = buffer.get_8()
|
||||
readOffset += 1
|
||||
return byte == 1
|
||||
|
||||
@@ -58,10 +88,11 @@ func writeByte(value: int) -> void:
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_8(value)
|
||||
writeOffset += 1
|
||||
pass
|
||||
|
||||
func readByte() -> int:
|
||||
buffer.seek(readOffset)
|
||||
var value = buffer.get_8()
|
||||
var value: int = buffer.get_8()
|
||||
readOffset += 1
|
||||
return value
|
||||
|
||||
@@ -69,6 +100,7 @@ func writeShort(value: int) -> void:
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_16(value)
|
||||
writeOffset += 2
|
||||
pass
|
||||
|
||||
func readShort() -> int:
|
||||
buffer.seek(readOffset)
|
||||
@@ -76,37 +108,63 @@ func readShort() -> int:
|
||||
readOffset += 2
|
||||
return value
|
||||
|
||||
func writeRawInt(value) -> void:
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_32(value)
|
||||
writeOffset += 4
|
||||
pass
|
||||
|
||||
func readRawInt() -> int:
|
||||
buffer.seek(readOffset)
|
||||
var value = buffer.get_32()
|
||||
readOffset += 4
|
||||
return value
|
||||
|
||||
func writeInt(value) -> void:
|
||||
if !(minInt <= value && value <= maxInt):
|
||||
printerr("value must range between minInt:-2147483648 and maxInt:2147483647")
|
||||
return
|
||||
writeLong(value)
|
||||
pass
|
||||
|
||||
func writeIntCount(value: int) -> int:
|
||||
if !(minInt <= value && value <= maxInt):
|
||||
printerr("value must range between minInt:-2147483648 and maxInt:2147483647")
|
||||
return 0
|
||||
if value >> 7 == 0:
|
||||
return 1
|
||||
if value >> 14 == 0:
|
||||
return 2
|
||||
if value >> 21 == 0:
|
||||
return 3
|
||||
if value >> 28 == 0:
|
||||
return 4
|
||||
return 5
|
||||
|
||||
func readInt() -> int:
|
||||
return readLong()
|
||||
|
||||
func writeLong(longValue: int) -> void:
|
||||
var value = (longValue << 1) ^ (longValue >> 63)
|
||||
var value: int = (longValue << 1) ^ (longValue >> 63)
|
||||
|
||||
if (value >> 7 == 0):
|
||||
writeByte(value)
|
||||
return
|
||||
|
||||
if (value >> 14 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte(value >> 7)
|
||||
return
|
||||
|
||||
if (value >> 21 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
writeByte(value >> 14)
|
||||
return
|
||||
|
||||
if (value >> 28 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
writeByte((value >> 14) | 0x80)
|
||||
writeByte(value >> 21)
|
||||
return
|
||||
|
||||
if (value >> 35 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
@@ -114,7 +172,6 @@ func writeLong(longValue: int) -> void:
|
||||
writeByte((value >> 21) | 0x80)
|
||||
writeByte(value >> 28)
|
||||
return
|
||||
|
||||
if (value >> 42 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
@@ -123,7 +180,6 @@ func writeLong(longValue: int) -> void:
|
||||
writeByte((value >> 28) | 0x80)
|
||||
writeByte(value >> 35)
|
||||
return
|
||||
|
||||
if (value >> 49 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
@@ -133,7 +189,6 @@ func writeLong(longValue: int) -> void:
|
||||
writeByte((value >> 35) | 0x80)
|
||||
writeByte(value >> 42)
|
||||
return
|
||||
|
||||
if (value >> 56 == 0):
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
@@ -144,7 +199,6 @@ func writeLong(longValue: int) -> void:
|
||||
writeByte((value >> 42) | 0x80)
|
||||
writeByte(value >> 49)
|
||||
return
|
||||
|
||||
writeByte(value | 0x80)
|
||||
writeByte((value >> 7) | 0x80)
|
||||
writeByte((value >> 14) | 0x80)
|
||||
@@ -154,6 +208,7 @@ func writeLong(longValue: int) -> void:
|
||||
writeByte((value >> 42) | 0x80)
|
||||
writeByte((value >> 49) | 0x80)
|
||||
writeByte(value >> 56)
|
||||
pass
|
||||
|
||||
func readLong() -> int:
|
||||
var byte: int = readByte()
|
||||
@@ -182,7 +237,6 @@ func readLong() -> int:
|
||||
if (byte < 0):
|
||||
byte = readByte()
|
||||
value = value & 0x00FFFFFF_FFFFFFFF | byte << 56
|
||||
|
||||
var mask = value >> 1
|
||||
if (mask < 0):
|
||||
mask = mask & 0x7FFFFFFF_FFFFFFFF
|
||||
@@ -193,6 +247,7 @@ func writeFloat(value: float) -> void:
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_float(value)
|
||||
writeOffset += 4
|
||||
pass
|
||||
|
||||
func readFloat() -> float:
|
||||
buffer.seek(readOffset)
|
||||
@@ -204,6 +259,7 @@ func writeDouble(value: float) -> void:
|
||||
buffer.seek(writeOffset)
|
||||
buffer.put_double(value)
|
||||
writeOffset += 8
|
||||
pass
|
||||
|
||||
func readDouble() -> float:
|
||||
buffer.seek(readOffset)
|
||||
@@ -216,43 +272,29 @@ func writeString(value: String) -> void:
|
||||
if (value == null || value.length() ==0):
|
||||
writeInt(0)
|
||||
return
|
||||
|
||||
buffer.seek(writeOffset)
|
||||
|
||||
var strBytes = value.to_utf8()
|
||||
var length = strBytes.size()
|
||||
var strBytes: PackedByteArray = value.to_utf8_buffer()
|
||||
var length: int = strBytes.size()
|
||||
writeInt(length)
|
||||
buffer.put_partial_data(strBytes)
|
||||
writeOffset += length
|
||||
pass
|
||||
|
||||
func readString() -> String:
|
||||
var length = readInt()
|
||||
var length: int = readInt()
|
||||
if (length <= 0):
|
||||
return EMPTY
|
||||
|
||||
buffer.seek(readOffset)
|
||||
var value = buffer.get_utf8_string(length)
|
||||
var strBytes = value.to_utf8()
|
||||
var value: String = buffer.get_utf8_string(length)
|
||||
var strBytes: PackedByteArray = value.to_utf8_buffer()
|
||||
readOffset += length
|
||||
return value
|
||||
|
||||
func writeChar(value) -> void:
|
||||
if (value == null || value.length() == 0):
|
||||
writeString(EMPTY)
|
||||
return
|
||||
writeString(value[0])
|
||||
|
||||
func readChar() -> String:
|
||||
return readString()
|
||||
|
||||
func writePacketFlag(packet) -> bool:
|
||||
var flag = (packet == null)
|
||||
writeBool(!flag)
|
||||
return flag
|
||||
|
||||
func writePacket(packet, protocolId):
|
||||
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
|
||||
protocolRegistration.write(self, packet)
|
||||
pass
|
||||
|
||||
func readPacket(protocolId):
|
||||
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
|
||||
@@ -265,163 +307,163 @@ func writeBooleanArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeBool(element)
|
||||
|
||||
func readBooleanArray():
|
||||
var array = []
|
||||
pass
|
||||
|
||||
func readBooleanArray() -> Array[bool]:
|
||||
var array: Array[bool] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readBool())
|
||||
return array
|
||||
|
||||
|
||||
func writeByteArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeByte(element)
|
||||
|
||||
func readByteArray():
|
||||
var array = []
|
||||
pass
|
||||
|
||||
func readByteArray() -> Array[int]:
|
||||
var array: Array[int] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readByte())
|
||||
return array
|
||||
|
||||
|
||||
func writeShortArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeShort(element)
|
||||
|
||||
pass
|
||||
|
||||
func readShortArray():
|
||||
var array = []
|
||||
var array: Array[int] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readShort())
|
||||
return array
|
||||
|
||||
|
||||
func writeIntArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeInt(element)
|
||||
|
||||
pass
|
||||
|
||||
func readIntArray():
|
||||
var array = []
|
||||
var array: Array[int] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readInt())
|
||||
return array
|
||||
|
||||
|
||||
func writeLongArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeLong(element)
|
||||
|
||||
pass
|
||||
|
||||
func readLongArray():
|
||||
var array = []
|
||||
var array: Array[int] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readLong())
|
||||
return array
|
||||
|
||||
|
||||
func writeFloatArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeFloat(element)
|
||||
|
||||
pass
|
||||
|
||||
func readFloatArray():
|
||||
var array = []
|
||||
var array: Array[float] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readFloat())
|
||||
return array
|
||||
|
||||
|
||||
func writeDoubleArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeDouble(element)
|
||||
|
||||
pass
|
||||
|
||||
func readDoubleArray():
|
||||
var array = []
|
||||
var array: Array[float] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readDouble())
|
||||
return array
|
||||
|
||||
func writeCharArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
for element in array:
|
||||
writeChar(element)
|
||||
|
||||
func readCharArray():
|
||||
var array = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readChar())
|
||||
return array
|
||||
|
||||
|
||||
func writeStringArray(array):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
writeString(element)
|
||||
|
||||
pass
|
||||
|
||||
func readStringArray():
|
||||
var array = []
|
||||
var array: Array[String] = []
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
for index in range(size):
|
||||
array.append(readString())
|
||||
return array
|
||||
|
||||
|
||||
func writePacketArray(array, protocolId):
|
||||
if (array == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
|
||||
writeInt(array.size());
|
||||
writeInt(array.size())
|
||||
for element in array:
|
||||
protocolRegistration.write(self, element)
|
||||
|
||||
pass
|
||||
|
||||
func readPacketArray(protocolId):
|
||||
var array = []
|
||||
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
|
||||
var array = Array([], typeof(protocolRegistration), StringName("RefCounted"), protocolRegistration)
|
||||
var size = readInt()
|
||||
if (size > 0):
|
||||
var protocolRegistration = ProtocolManager.getProtocol(protocolId)
|
||||
for index in range(size):
|
||||
array.append(protocolRegistration.read(self))
|
||||
#var a = array.get_typed_class_name()
|
||||
#var b = array.get_typed_script()
|
||||
#var c = array.get_typed_builtin()
|
||||
|
||||
#var typeArray: Array[ObjectA] = []
|
||||
#var aa = typeArray.get_typed_class_name()
|
||||
#var bb = typeArray.get_typed_script()
|
||||
#var cc = typeArray.get_typed_builtin()
|
||||
return array
|
||||
|
||||
func writeIntIntMap(map):
|
||||
@@ -432,7 +474,8 @@ func writeIntIntMap(map):
|
||||
for key in map:
|
||||
writeInt(key)
|
||||
writeInt(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readIntIntMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -442,16 +485,17 @@ func readIntIntMap():
|
||||
var value = readInt()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeIntLongMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
else:
|
||||
writeInt(map.size())
|
||||
for key in map:
|
||||
writeInt(map)
|
||||
writeInt(key)
|
||||
writeLong(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readIntLongMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -461,7 +505,7 @@ func readIntLongMap():
|
||||
var value = readLong()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeIntStringMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -470,7 +514,8 @@ func writeIntStringMap(map):
|
||||
for key in map:
|
||||
writeInt(key)
|
||||
writeString(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readIntStringMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -481,7 +526,6 @@ func readIntStringMap():
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeIntPacketMap(map, protocolId):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -491,6 +535,7 @@ func writeIntPacketMap(map, protocolId):
|
||||
for key in map:
|
||||
writeInt(key)
|
||||
protocolRegistration.write(self, map[key])
|
||||
pass
|
||||
|
||||
func readIntPacketMap(protocolId):
|
||||
var map = {}
|
||||
@@ -502,8 +547,7 @@ func readIntPacketMap(protocolId):
|
||||
var value = protocolRegistration.read(self)
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
|
||||
func writeLongIntMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -512,7 +556,8 @@ func writeLongIntMap(map):
|
||||
for key in map:
|
||||
writeLong(key)
|
||||
writeInt(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readLongIntMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -522,7 +567,7 @@ func readLongIntMap():
|
||||
var value = readInt()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeLongLongMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -531,7 +576,8 @@ func writeLongLongMap(map):
|
||||
for key in map:
|
||||
writeLong(key)
|
||||
writeLong(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readLongLongMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -541,7 +587,7 @@ func readLongLongMap():
|
||||
var value = readLong()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeLongStringMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -550,7 +596,8 @@ func writeLongStringMap(map):
|
||||
for key in map:
|
||||
writeLong(key)
|
||||
writeString(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readLongStringMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -561,7 +608,6 @@ func readLongStringMap():
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeLongPacketMap(map, protocolId):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -571,6 +617,7 @@ func writeLongPacketMap(map, protocolId):
|
||||
for key in map:
|
||||
writeLong(key)
|
||||
protocolRegistration.write(self, map[key])
|
||||
pass
|
||||
|
||||
func readLongPacketMap(protocolId):
|
||||
var map = {}
|
||||
@@ -582,7 +629,6 @@ func readLongPacketMap(protocolId):
|
||||
var value = protocolRegistration.read(self)
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeStringIntMap(map):
|
||||
if (map == null):
|
||||
@@ -592,7 +638,8 @@ func writeStringIntMap(map):
|
||||
for key in map:
|
||||
writeString(key)
|
||||
writeInt(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readStringIntMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -602,7 +649,7 @@ func readStringIntMap():
|
||||
var value = readInt()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeStringLongMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -611,7 +658,8 @@ func writeStringLongMap(map):
|
||||
for key in map:
|
||||
writeString(key)
|
||||
writeLong(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readStringLongMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -621,7 +669,7 @@ func readStringLongMap():
|
||||
var value = readLong()
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeStringStringMap(map):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -630,7 +678,8 @@ func writeStringStringMap(map):
|
||||
for key in map:
|
||||
writeString(key)
|
||||
writeString(map[key])
|
||||
|
||||
pass
|
||||
|
||||
func readStringStringMap():
|
||||
var map = {}
|
||||
var size = readInt()
|
||||
@@ -641,7 +690,6 @@ func readStringStringMap():
|
||||
map[key] = value
|
||||
return map
|
||||
|
||||
|
||||
func writeStringPacketMap(map, protocolId):
|
||||
if (map == null):
|
||||
writeInt(0)
|
||||
@@ -651,6 +699,7 @@ func writeStringPacketMap(map, protocolId):
|
||||
for key in map:
|
||||
writeString(key)
|
||||
protocolRegistration.write(self, map[key])
|
||||
pass
|
||||
|
||||
func readStringPacketMap(protocolId):
|
||||
var map = {}
|
||||
@@ -0,0 +1,36 @@
|
||||
const EmptyObject = preload("res://zfoogd/packet/EmptyObject.gd")
|
||||
const VeryBigObject = preload("res://zfoogd/packet/VeryBigObject.gd")
|
||||
const ComplexObject = preload("res://zfoogd/packet/ComplexObject.gd")
|
||||
const NormalObject = preload("res://zfoogd/packet/NormalObject.gd")
|
||||
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
|
||||
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
|
||||
const SimpleObject = preload("res://zfoogd/packet/SimpleObject.gd")
|
||||
|
||||
const protocols: Dictionary = {
|
||||
0: EmptyObject,
|
||||
1: VeryBigObject,
|
||||
100: ComplexObject,
|
||||
101: NormalObject,
|
||||
102: ObjectA,
|
||||
103: ObjectB,
|
||||
104: SimpleObject
|
||||
}
|
||||
|
||||
static func getProtocol(protocolId: int):
|
||||
return protocols[protocolId]
|
||||
|
||||
static func newInstance(protocolId: int):
|
||||
var protocol = protocols[protocolId]
|
||||
return protocol.new()
|
||||
|
||||
static func write(buffer, packet):
|
||||
var protocolId: int = packet.PROTOCOL_ID
|
||||
buffer.writeShort(protocolId)
|
||||
var protocol = protocols[protocolId]
|
||||
protocol.write(buffer, packet)
|
||||
|
||||
static func read(buffer):
|
||||
var protocolId = buffer.readShort()
|
||||
var protocol = protocols[protocolId]
|
||||
var packet = protocol.read(buffer)
|
||||
return packet
|
||||
@@ -0,0 +1,401 @@
|
||||
const PROTOCOL_ID = 100
|
||||
const PROTOCOL_CLASS_NAME = "ComplexObject"
|
||||
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
|
||||
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
|
||||
|
||||
# 复杂的对象,包括了各种复杂的结构,数组,List,Set,Map
|
||||
# byte类型,最简单的整形
|
||||
var a: int
|
||||
# byte的包装类型,优先使用基础类型,包装类型会有装箱拆箱
|
||||
var aa: int
|
||||
# 数组类型
|
||||
var aaa: Array[int]
|
||||
var aaaa: Array[int]
|
||||
var b: int
|
||||
var bb: int
|
||||
var bbb: Array[int]
|
||||
var bbbb: Array[int]
|
||||
var c: int
|
||||
var cc: int
|
||||
var ccc: Array[int]
|
||||
var cccc: Array[int]
|
||||
var d: int
|
||||
var dd: int
|
||||
var ddd: Array[int]
|
||||
var dddd: Array[int]
|
||||
var e: float
|
||||
var ee: float
|
||||
var eee: Array[float]
|
||||
var eeee: Array[float]
|
||||
var f: float
|
||||
var ff: float
|
||||
var fff: Array[float]
|
||||
var ffff: Array[float]
|
||||
var g: bool
|
||||
var gg: bool
|
||||
var ggg: Array[bool]
|
||||
var gggg: Array[bool]
|
||||
var jj: String
|
||||
var jjj: Array[String]
|
||||
var kk: ObjectA
|
||||
var kkk: Array[ObjectA]
|
||||
var l: Array[int]
|
||||
var ll: Array # Array<Array<Array<number>>>
|
||||
var lll: Array # Array<Array<ObjectA>>
|
||||
var llll: Array[String]
|
||||
var lllll: Array # Array<Map<number, string>>
|
||||
var m: Dictionary # Map<number, string>
|
||||
var mm: Dictionary # Map<number, ObjectA>
|
||||
var mmm: Dictionary # Map<ObjectA, Array<number>>
|
||||
var mmmm: Dictionary # Map<Array<Array<ObjectA>>, Array<Array<Array<number>>>>
|
||||
var mmmmm: Dictionary # Map<Array<Map<number, string>>, Set<Map<number, string>>>
|
||||
var s: Array[int]
|
||||
var ss: Array # Set<Set<Array<number>>>
|
||||
var sss: Array # Set<Set<ObjectA>>
|
||||
var ssss: Array[String]
|
||||
var sssss: Array # Set<Map<number, string>>
|
||||
# 如果要修改协议并且兼容老协议,需要加上Compatible注解,按照增加的顺序添加order
|
||||
var myCompatible: int
|
||||
var myObject: ObjectA
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{a:{}, aa:{}, aaa:{}, aaaa:{}, b:{}, bb:{}, bbb:{}, bbbb:{}, c:{}, cc:{}, ccc:{}, cccc:{}, d:{}, dd:{}, ddd:{}, dddd:{}, e:{}, ee:{}, eee:{}, eeee:{}, f:{}, ff:{}, fff:{}, ffff:{}, g:{}, gg:{}, ggg:{}, gggg:{}, jj:'{}', jjj:{}, kk:{}, kkk:{}, l:{}, ll:{}, lll:{}, llll:{}, lllll:{}, m:{}, mm:{}, mmm:{}, mmmm:{}, mmmmm:{}, s:{}, ss:{}, sss:{}, ssss:{}, sssss:{}, myCompatible:{}, myObject:{}}"
|
||||
var params = [self.a, self.aa, JSON.stringify(self.aaa), JSON.stringify(self.aaaa), self.b, self.bb, JSON.stringify(self.bbb), JSON.stringify(self.bbbb), self.c, self.cc, JSON.stringify(self.ccc), JSON.stringify(self.cccc), self.d, self.dd, JSON.stringify(self.ddd), JSON.stringify(self.dddd), self.e, self.ee, JSON.stringify(self.eee), JSON.stringify(self.eeee), self.f, self.ff, JSON.stringify(self.fff), JSON.stringify(self.ffff), self.g, self.gg, JSON.stringify(self.ggg), JSON.stringify(self.gggg), self.jj, JSON.stringify(self.jjj), self.kk, JSON.stringify(self.kkk), JSON.stringify(self.l), JSON.stringify(self.ll), JSON.stringify(self.lll), JSON.stringify(self.llll), JSON.stringify(self.lllll), JSON.stringify(self.m), JSON.stringify(self.mm), JSON.stringify(self.mmm), JSON.stringify(self.mmmm), JSON.stringify(self.mmmmm), JSON.stringify(self.s), JSON.stringify(self.ss), JSON.stringify(self.sss), JSON.stringify(self.ssss), JSON.stringify(self.sssss), self.myCompatible, self.myObject]
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
var beforeWriteIndex = buffer.getWriteOffset()
|
||||
buffer.writeInt(36962)
|
||||
buffer.writeByte(packet.a)
|
||||
buffer.writeByte(packet.aa)
|
||||
buffer.writeByteArray(packet.aaa)
|
||||
buffer.writeByteArray(packet.aaaa)
|
||||
buffer.writeShort(packet.b)
|
||||
buffer.writeShort(packet.bb)
|
||||
buffer.writeShortArray(packet.bbb)
|
||||
buffer.writeShortArray(packet.bbbb)
|
||||
buffer.writeInt(packet.c)
|
||||
buffer.writeInt(packet.cc)
|
||||
buffer.writeIntArray(packet.ccc)
|
||||
buffer.writeIntArray(packet.cccc)
|
||||
buffer.writeLong(packet.d)
|
||||
buffer.writeLong(packet.dd)
|
||||
buffer.writeLongArray(packet.ddd)
|
||||
buffer.writeLongArray(packet.dddd)
|
||||
buffer.writeFloat(packet.e)
|
||||
buffer.writeFloat(packet.ee)
|
||||
buffer.writeFloatArray(packet.eee)
|
||||
buffer.writeFloatArray(packet.eeee)
|
||||
buffer.writeDouble(packet.f)
|
||||
buffer.writeDouble(packet.ff)
|
||||
buffer.writeDoubleArray(packet.fff)
|
||||
buffer.writeDoubleArray(packet.ffff)
|
||||
buffer.writeBool(packet.g)
|
||||
buffer.writeBool(packet.gg)
|
||||
buffer.writeBooleanArray(packet.ggg)
|
||||
buffer.writeBooleanArray(packet.gggg)
|
||||
buffer.writeString(packet.jj)
|
||||
buffer.writeStringArray(packet.jjj)
|
||||
buffer.writePacket(packet.kk, 102)
|
||||
buffer.writePacketArray(packet.kkk, 102)
|
||||
buffer.writeIntArray(packet.l)
|
||||
if (packet.ll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.ll.size())
|
||||
for element0 in packet.ll:
|
||||
if (element0 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element0.size())
|
||||
for element1 in element0:
|
||||
buffer.writeIntArray(element1)
|
||||
if (packet.lll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.lll.size())
|
||||
for element2 in packet.lll:
|
||||
buffer.writePacketArray(element2, 102)
|
||||
buffer.writeStringArray(packet.llll)
|
||||
if (packet.lllll == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.lllll.size())
|
||||
for element3 in packet.lllll:
|
||||
buffer.writeIntStringMap(element3)
|
||||
buffer.writeIntStringMap(packet.m)
|
||||
buffer.writeIntPacketMap(packet.mm, 102)
|
||||
if (packet.mmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmm.size())
|
||||
for key4 in packet.mmm:
|
||||
var value5 = packet.mmm[key4]
|
||||
buffer.writePacket(key4, 102)
|
||||
buffer.writeIntArray(value5)
|
||||
if (packet.mmmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmmm.size())
|
||||
for key6 in packet.mmmm:
|
||||
var value7 = packet.mmmm[key6]
|
||||
if (key6 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(key6.size())
|
||||
for element8 in key6:
|
||||
buffer.writePacketArray(element8, 102)
|
||||
if (value7 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(value7.size())
|
||||
for element9 in value7:
|
||||
if (element9 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element9.size())
|
||||
for element10 in element9:
|
||||
buffer.writeIntArray(element10)
|
||||
if (packet.mmmmm == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.mmmmm.size())
|
||||
for key11 in packet.mmmmm:
|
||||
var value12 = packet.mmmmm[key11]
|
||||
if (key11 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(key11.size())
|
||||
for element13 in key11:
|
||||
buffer.writeIntStringMap(element13)
|
||||
if (value12 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(value12.size())
|
||||
for element14 in value12:
|
||||
buffer.writeIntStringMap(element14)
|
||||
buffer.writeIntArray(packet.s)
|
||||
if (packet.ss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.ss.size())
|
||||
for element15 in packet.ss:
|
||||
if (element15 == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(element15.size())
|
||||
for element16 in element15:
|
||||
buffer.writeIntArray(element16)
|
||||
if (packet.sss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.sss.size())
|
||||
for element17 in packet.sss:
|
||||
buffer.writePacketArray(element17, 102)
|
||||
buffer.writeStringArray(packet.ssss)
|
||||
if (packet.sssss == null):
|
||||
buffer.writeInt(0)
|
||||
else:
|
||||
buffer.writeInt(packet.sssss.size())
|
||||
for element18 in packet.sssss:
|
||||
buffer.writeIntStringMap(element18)
|
||||
buffer.writeInt(packet.myCompatible)
|
||||
buffer.writePacket(packet.myObject, 102)
|
||||
buffer.adjustPadding(36962, beforeWriteIndex)
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result19 = buffer.readByte()
|
||||
packet.a = result19
|
||||
var result20 = buffer.readByte()
|
||||
packet.aa = result20
|
||||
var array21 = buffer.readByteArray()
|
||||
packet.aaa = array21
|
||||
var array22 = buffer.readByteArray()
|
||||
packet.aaaa = array22
|
||||
var result23 = buffer.readShort()
|
||||
packet.b = result23
|
||||
var result24 = buffer.readShort()
|
||||
packet.bb = result24
|
||||
var array25 = buffer.readShortArray()
|
||||
packet.bbb = array25
|
||||
var array26 = buffer.readShortArray()
|
||||
packet.bbbb = array26
|
||||
var result27 = buffer.readInt()
|
||||
packet.c = result27
|
||||
var result28 = buffer.readInt()
|
||||
packet.cc = result28
|
||||
var array29 = buffer.readIntArray()
|
||||
packet.ccc = array29
|
||||
var array30 = buffer.readIntArray()
|
||||
packet.cccc = array30
|
||||
var result31 = buffer.readLong()
|
||||
packet.d = result31
|
||||
var result32 = buffer.readLong()
|
||||
packet.dd = result32
|
||||
var array33 = buffer.readLongArray()
|
||||
packet.ddd = array33
|
||||
var array34 = buffer.readLongArray()
|
||||
packet.dddd = array34
|
||||
var result35 = buffer.readFloat()
|
||||
packet.e = result35
|
||||
var result36 = buffer.readFloat()
|
||||
packet.ee = result36
|
||||
var array37 = buffer.readFloatArray()
|
||||
packet.eee = array37
|
||||
var array38 = buffer.readFloatArray()
|
||||
packet.eeee = array38
|
||||
var result39 = buffer.readDouble()
|
||||
packet.f = result39
|
||||
var result40 = buffer.readDouble()
|
||||
packet.ff = result40
|
||||
var array41 = buffer.readDoubleArray()
|
||||
packet.fff = array41
|
||||
var array42 = buffer.readDoubleArray()
|
||||
packet.ffff = array42
|
||||
var result43 = buffer.readBool()
|
||||
packet.g = result43
|
||||
var result44 = buffer.readBool()
|
||||
packet.gg = result44
|
||||
var array45 = buffer.readBooleanArray()
|
||||
packet.ggg = array45
|
||||
var array46 = buffer.readBooleanArray()
|
||||
packet.gggg = array46
|
||||
var result47 = buffer.readString()
|
||||
packet.jj = result47
|
||||
var array48 = buffer.readStringArray()
|
||||
packet.jjj = array48
|
||||
var result49 = buffer.readPacket(102)
|
||||
packet.kk = result49
|
||||
var array50 = buffer.readPacketArray(102)
|
||||
packet.kkk = array50
|
||||
var list51 = buffer.readIntArray()
|
||||
packet.l = list51
|
||||
var result52 = []
|
||||
var size54 = buffer.readInt()
|
||||
if (size54 > 0):
|
||||
for index53 in range(size54):
|
||||
var result55 = []
|
||||
var size57 = buffer.readInt()
|
||||
if (size57 > 0):
|
||||
for index56 in range(size57):
|
||||
var list58 = buffer.readIntArray()
|
||||
result55.append(list58)
|
||||
result52.append(result55)
|
||||
packet.ll = result52
|
||||
var result59 = []
|
||||
var size61 = buffer.readInt()
|
||||
if (size61 > 0):
|
||||
for index60 in range(size61):
|
||||
var list62 = buffer.readPacketArray(102)
|
||||
result59.append(list62)
|
||||
packet.lll = result59
|
||||
var list63 = buffer.readStringArray()
|
||||
packet.llll = list63
|
||||
var result64 = []
|
||||
var size66 = buffer.readInt()
|
||||
if (size66 > 0):
|
||||
for index65 in range(size66):
|
||||
var map67 = buffer.readIntStringMap()
|
||||
result64.append(map67)
|
||||
packet.lllll = result64
|
||||
var map68 = buffer.readIntStringMap()
|
||||
packet.m = map68
|
||||
var map69 = buffer.readIntPacketMap(102)
|
||||
packet.mm = map69
|
||||
var result70 = {}
|
||||
var size71 = buffer.readInt()
|
||||
if (size71 > 0):
|
||||
for index72 in range(size71):
|
||||
var result73 = buffer.readPacket(102)
|
||||
var list74 = buffer.readIntArray()
|
||||
result70[result73] = list74
|
||||
packet.mmm = result70
|
||||
var result75 = {}
|
||||
var size76 = buffer.readInt()
|
||||
if (size76 > 0):
|
||||
for index77 in range(size76):
|
||||
var result78 = []
|
||||
var size80 = buffer.readInt()
|
||||
if (size80 > 0):
|
||||
for index79 in range(size80):
|
||||
var list81 = buffer.readPacketArray(102)
|
||||
result78.append(list81)
|
||||
var result82 = []
|
||||
var size84 = buffer.readInt()
|
||||
if (size84 > 0):
|
||||
for index83 in range(size84):
|
||||
var result85 = []
|
||||
var size87 = buffer.readInt()
|
||||
if (size87 > 0):
|
||||
for index86 in range(size87):
|
||||
var list88 = buffer.readIntArray()
|
||||
result85.append(list88)
|
||||
result82.append(result85)
|
||||
result75[result78] = result82
|
||||
packet.mmmm = result75
|
||||
var result89 = {}
|
||||
var size90 = buffer.readInt()
|
||||
if (size90 > 0):
|
||||
for index91 in range(size90):
|
||||
var result92 = []
|
||||
var size94 = buffer.readInt()
|
||||
if (size94 > 0):
|
||||
for index93 in range(size94):
|
||||
var map95 = buffer.readIntStringMap()
|
||||
result92.append(map95)
|
||||
var result96 = []
|
||||
var size98 = buffer.readInt()
|
||||
if (size98 > 0):
|
||||
for index97 in range(size98):
|
||||
var map99 = buffer.readIntStringMap()
|
||||
result96.append(map99)
|
||||
result89[result92] = result96
|
||||
packet.mmmmm = result89
|
||||
var set100 = buffer.readIntArray()
|
||||
packet.s = set100
|
||||
var result101 = []
|
||||
var size103 = buffer.readInt()
|
||||
if (size103 > 0):
|
||||
for index102 in range(size103):
|
||||
var result104 = []
|
||||
var size106 = buffer.readInt()
|
||||
if (size106 > 0):
|
||||
for index105 in range(size106):
|
||||
var list107 = buffer.readIntArray()
|
||||
result104.append(list107)
|
||||
result101.append(result104)
|
||||
packet.ss = result101
|
||||
var result108 = []
|
||||
var size110 = buffer.readInt()
|
||||
if (size110 > 0):
|
||||
for index109 in range(size110):
|
||||
var set111 = buffer.readPacketArray(102)
|
||||
result108.append(set111)
|
||||
packet.sss = result108
|
||||
var set112 = buffer.readStringArray()
|
||||
packet.ssss = set112
|
||||
var result113 = []
|
||||
var size115 = buffer.readInt()
|
||||
if (size115 > 0):
|
||||
for index114 in range(size115):
|
||||
var map116 = buffer.readIntStringMap()
|
||||
result113.append(map116)
|
||||
packet.sssss = result113
|
||||
if buffer.compatibleRead(beforeReadIndex, length):
|
||||
var result117 = buffer.readInt()
|
||||
packet.myCompatible = result117;
|
||||
if buffer.compatibleRead(beforeReadIndex, length):
|
||||
var result118 = buffer.readPacket(102)
|
||||
packet.myObject = result118;
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
@@ -0,0 +1,28 @@
|
||||
const PROTOCOL_ID = 0
|
||||
const PROTOCOL_CLASS_NAME = "EmptyObject"
|
||||
|
||||
|
||||
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{}"
|
||||
var params = []
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
buffer.writeInt(-1)
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
+37
-24
@@ -1,29 +1,38 @@
|
||||
# @author godotg
|
||||
|
||||
var a # byte
|
||||
var aaa # byte[]
|
||||
var b # short
|
||||
var c # int
|
||||
var d # long
|
||||
var e # float
|
||||
var f # double
|
||||
var g # boolean
|
||||
var jj # java.lang.String
|
||||
var kk # com.zfoo.protocol.packet.ObjectA
|
||||
var l # java.util.List<java.lang.Integer>
|
||||
var ll # java.util.List<java.lang.Long>
|
||||
var lll # java.util.List<com.zfoo.protocol.packet.ObjectA>
|
||||
var llll # java.util.List<java.lang.String>
|
||||
var m # java.util.Map<java.lang.Integer, java.lang.String>
|
||||
var mm # java.util.Map<java.lang.Integer, com.zfoo.protocol.packet.ObjectA>
|
||||
var s # java.util.Set<java.lang.Integer>
|
||||
var ssss # java.util.Set<java.lang.String>
|
||||
|
||||
const PROTOCOL_ID = 101
|
||||
const PROTOCOL_CLASS_NAME = "NormalObject"
|
||||
const ObjectA = preload("res://zfoogd/packet/ObjectA.gd")
|
||||
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
|
||||
|
||||
|
||||
var a: int
|
||||
var aaa: Array[int]
|
||||
var b: int
|
||||
var c: int
|
||||
var d: int
|
||||
var e: float
|
||||
var f: float
|
||||
var g: bool
|
||||
var jj: String
|
||||
var kk: ObjectA
|
||||
var l: Array[int]
|
||||
var ll: Array[int]
|
||||
var lll: Array[ObjectA]
|
||||
var llll: Array[String]
|
||||
var m: Dictionary # Map<number, string>
|
||||
var mm: Dictionary # Map<number, ObjectA>
|
||||
var s: Array[int]
|
||||
var ssss: Array[String]
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{a:{}, aaa:{}, b:{}, c:{}, d:{}, e:{}, f:{}, g:{}, jj:'{}', kk:{}, l:{}, ll:{}, lll:{}, llll:{}, m:{}, mm:{}, s:{}, ssss:{}}"
|
||||
var params = [self.a, JSON.stringify(self.aaa), self.b, self.c, self.d, self.e, self.f, self.g, self.jj, self.kk, JSON.stringify(self.l), JSON.stringify(self.ll), JSON.stringify(self.lll), JSON.stringify(self.llll), JSON.stringify(self.m), JSON.stringify(self.mm), JSON.stringify(self.s), JSON.stringify(self.ssss)]
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (buffer.writePacketFlag(packet)):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
buffer.writeInt(-1)
|
||||
buffer.writeByte(packet.a)
|
||||
buffer.writeByteArray(packet.aaa)
|
||||
buffer.writeShort(packet.b)
|
||||
@@ -42,11 +51,13 @@ static func write(buffer, packet):
|
||||
buffer.writeIntPacketMap(packet.mm, 102)
|
||||
buffer.writeIntArray(packet.s)
|
||||
buffer.writeStringArray(packet.ssss)
|
||||
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
if (!buffer.readBool()):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readByte()
|
||||
packet.a = result0
|
||||
@@ -84,4 +95,6 @@ static func read(buffer):
|
||||
packet.s = set16
|
||||
var set17 = buffer.readStringArray()
|
||||
packet.ssss = set17
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
@@ -0,0 +1,39 @@
|
||||
const PROTOCOL_ID = 102
|
||||
const PROTOCOL_CLASS_NAME = "ObjectA"
|
||||
const ObjectB = preload("res://zfoogd/packet/ObjectB.gd")
|
||||
|
||||
|
||||
var a: int
|
||||
var m: Dictionary # Map<number, string>
|
||||
var objectB: ObjectB
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{a:{}, m:{}, objectB:{}}"
|
||||
var params = [self.a, JSON.stringify(self.m), self.objectB]
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
buffer.writeInt(-1)
|
||||
buffer.writeInt(packet.a)
|
||||
buffer.writeIntStringMap(packet.m)
|
||||
buffer.writePacket(packet.objectB, 103)
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readInt()
|
||||
packet.a = result0
|
||||
var map1 = buffer.readIntStringMap()
|
||||
packet.m = map1
|
||||
var result2 = buffer.readPacket(103)
|
||||
packet.objectB = result2
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
@@ -0,0 +1,30 @@
|
||||
const PROTOCOL_ID = 103
|
||||
const PROTOCOL_CLASS_NAME = "ObjectB"
|
||||
|
||||
|
||||
var flag: bool
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{flag:{}}"
|
||||
var params = [self.flag]
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
buffer.writeInt(-1)
|
||||
buffer.writeBool(packet.flag)
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readBool()
|
||||
packet.flag = result0
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
@@ -0,0 +1,34 @@
|
||||
const PROTOCOL_ID = 104
|
||||
const PROTOCOL_CLASS_NAME = "SimpleObject"
|
||||
|
||||
|
||||
var c: int
|
||||
var g: bool
|
||||
|
||||
func _to_string() -> String:
|
||||
const jsonTemplate = "{c:{}, g:{}}"
|
||||
var params = [self.c, self.g]
|
||||
return jsonTemplate.format(params, "{}")
|
||||
|
||||
static func write(buffer, packet):
|
||||
if (packet == null):
|
||||
buffer.writeInt(0)
|
||||
return
|
||||
buffer.writeInt(-1)
|
||||
buffer.writeInt(packet.c)
|
||||
buffer.writeBool(packet.g)
|
||||
pass
|
||||
|
||||
static func read(buffer):
|
||||
var length = buffer.readInt()
|
||||
if (length == 0):
|
||||
return null
|
||||
var beforeReadIndex = buffer.getReadOffset()
|
||||
var packet = buffer.newInstance(PROTOCOL_ID)
|
||||
var result0 = buffer.readInt()
|
||||
packet.c = result0
|
||||
var result1 = buffer.readBool()
|
||||
packet.g = result1
|
||||
if (length > 0):
|
||||
buffer.setReadOffset(beforeReadIndex + length)
|
||||
return packet
|
||||
File diff suppressed because it is too large.
Load diff
Reference in new issue
Block a user