diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2022-11-11 23:19:01 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-16 21:39:42 +0300 |
| commit | 892fb8f547ce4a31901fb029a762331b1188efb7 (patch) | |
| tree | 51d38af2364d7139fc93f8637e40c77930407532 /packets/packet.go | |
| parent | upgrade bitreader to v1.2.5 (diff) | |
| download | sdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.tar.gz sdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.tar.bz2 sdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.zip | |
net/svc messages finally getting parsed correctly
Diffstat (limited to 'packets/packet.go')
| -rw-r--r-- | packets/packet.go | 43 |
1 files changed, 21 insertions, 22 deletions
diff --git a/packets/packet.go b/packets/packet.go index cc94e62..8f4a262 100644 --- a/packets/packet.go +++ b/packets/packet.go | |||
| @@ -14,25 +14,26 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 14 | messageType := reader.TryReadInt8() | 14 | messageType := reader.TryReadInt8() |
| 15 | messageTick := reader.TryReadInt32() | 15 | messageTick := reader.TryReadInt32() |
| 16 | messageSlot := reader.TryReadInt8() | 16 | messageSlot := reader.TryReadInt8() |
| 17 | _ = messageSlot | ||
| 17 | switch messageType { | 18 | switch messageType { |
| 18 | case 1: // TODO: SignOn - Data | 19 | case 1: |
| 19 | signOn := SignOn{ | 20 | signOn := SignOn{ |
| 20 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), | 21 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), |
| 21 | InSequence: int32(reader.TryReadInt32()), | 22 | InSequence: int32(reader.TryReadInt32()), |
| 22 | OutSequence: int32(reader.TryReadInt32()), | 23 | OutSequence: int32(reader.TryReadInt32()), |
| 23 | Size: int32(reader.TryReadInt32()), | ||
| 24 | } | 24 | } |
| 25 | signOn.Data = messages.ParseMessage(reader.TryReadBytesToSlice(int(signOn.Size))) | 25 | size := int(reader.TryReadInt32()) |
| 26 | fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn) | 26 | signOn.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size)) |
| 27 | // fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn) | ||
| 27 | return 1 | 28 | return 1 |
| 28 | case 2: // TODO: Packet - Data | 29 | case 2: |
| 29 | packet := Packet{ | 30 | packet := Packet{ |
| 30 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), | 31 | PacketInfo: classes.ParseCmdInfo(reader, MSSC), |
| 31 | InSequence: int32(reader.TryReadInt32()), | 32 | InSequence: int32(reader.TryReadInt32()), |
| 32 | OutSequence: int32(reader.TryReadInt32()), | 33 | OutSequence: int32(reader.TryReadInt32()), |
| 33 | Size: int32(reader.TryReadInt32()), | ||
| 34 | } | 34 | } |
| 35 | packet.Data = messages.ParseMessage(reader.TryReadBytesToSlice(int(packet.Size))) | 35 | size := int(reader.TryReadInt32()) |
| 36 | packet.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size)) | ||
| 36 | // fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet) | 37 | // fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet) |
| 37 | return 2 | 38 | return 2 |
| 38 | case 3: | 39 | case 3: |
| @@ -40,26 +41,25 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 40 | fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick) | 41 | fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick) |
| 41 | return 3 | 42 | return 3 |
| 42 | case 4: | 43 | case 4: |
| 43 | consoleCmd := ConsoleCmd{ | 44 | size := int(reader.TryReadInt32()) |
| 44 | Size: int32(reader.TryReadInt32()), | 45 | var consoleCmd ConsoleCmd |
| 45 | } | 46 | consoleCmd.Data = reader.TryReadStringLen(size) |
| 46 | consoleCmd.Data = reader.TryReadStringLen(int(consoleCmd.Size)) | ||
| 47 | // fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data) | 47 | // fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data) |
| 48 | return 4 | 48 | return 4 |
| 49 | case 5: // TODO: UserCmd - Buttons | 49 | case 5: // TODO: UserCmd - Buttons |
| 50 | userCmd := UserCmd{ | 50 | userCmd := UserCmd{ |
| 51 | Cmd: int32(reader.TryReadInt32()), | 51 | Cmd: int32(reader.TryReadInt32()), |
| 52 | Size: int32(reader.TryReadInt32()), | ||
| 53 | } | 52 | } |
| 54 | userCmd.Data = classes.ParseUserCmdInfo(reader.TryReadBytesToSlice(int(userCmd.Size))) | 53 | size := int(reader.TryReadInt32()) |
| 54 | userCmd.Data = classes.ParseUserCmdInfo(reader.TryReadBytesToSlice(size)) | ||
| 55 | // fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd) | 55 | // fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd) |
| 56 | return 5 | 56 | return 5 |
| 57 | case 6: // TODO: DataTables | 57 | case 6: // TODO: DataTables |
| 58 | // datatables := DataTables{ | 58 | // datatables := DataTables{ |
| 59 | // Size: int32(reader.TryReadInt32()), | 59 | // Size: int32(reader.TryReadInt32()), |
| 60 | // } | 60 | // } |
| 61 | val := reader.TryReadInt32() | 61 | size := int(reader.TryReadInt32()) |
| 62 | reader.SkipBytes(int(val)) | 62 | reader.SkipBytes(size) |
| 63 | // datatables.Data = classes.ParseDataTable(reader.TryReadBytesToSlice(int(datatables.Size))) | 63 | // datatables.Data = classes.ParseDataTable(reader.TryReadBytesToSlice(int(datatables.Size))) |
| 64 | // fmt.Printf("[%d] (%d) DataTables: %v\n", messageTick, messageType, datatables) | 64 | // fmt.Printf("[%d] (%d) DataTables: %v\n", messageTick, messageType, datatables) |
| 65 | return 6 | 65 | return 6 |
| @@ -71,15 +71,14 @@ func ParsePacket(reader *bitreader.ReaderType) (status int) { | |||
| 71 | return 7 | 71 | return 7 |
| 72 | case 8: // TODO: CustomData | 72 | case 8: // TODO: CustomData |
| 73 | reader.SkipBytes(4) | 73 | reader.SkipBytes(4) |
| 74 | val := reader.TryReadInt32() | 74 | size := int(reader.TryReadInt32()) |
| 75 | reader.SkipBytes(int(val)) | 75 | reader.SkipBytes(size) |
| 76 | // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType) | 76 | // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType) |
| 77 | return 8 | 77 | return 8 |
| 78 | case 9: // TODO: StringTables - Data | 78 | case 9: // TODO: StringTables - Data |
| 79 | stringTables := StringTables{ | 79 | var stringTables StringTables |
| 80 | Size: int32(reader.TryReadInt32()), | 80 | size := int(reader.TryReadInt32()) |
| 81 | } | 81 | stringTables.Data = classes.ParseStringTable(reader.TryReadBytesToSlice(size)) |
| 82 | stringTables.Data = classes.ParseStringTable(reader.TryReadBytesToSlice(int(stringTables.Size))) | ||
| 83 | // fmt.Printf("[%d] (%d) StringTables: %v\n", messageTick, messageType, stringTables) | 82 | // fmt.Printf("[%d] (%d) StringTables: %v\n", messageTick, messageType, stringTables) |
| 84 | return 9 | 83 | return 9 |
| 85 | default: | 84 | default: |