diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-21 01:53:59 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-21 01:53:59 +0300 |
| commit | 171e350e348afadb55967b9c13d5eadc7f7d2cf4 (patch) | |
| tree | 14ec93df8ccc1aca0cf453f826d46a402b09dc8f /pkg/packets/packets.go | |
| parent | define todos on packets (diff) | |
| download | sdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.tar.gz sdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.tar.bz2 sdp.go-171e350e348afadb55967b9c13d5eadc7f7d2cf4.zip | |
add strings builder, customize ALL outputs (#6)
Diffstat (limited to 'pkg/packets/packets.go')
| -rw-r--r-- | pkg/packets/packets.go | 43 |
1 files changed, 29 insertions, 14 deletions
diff --git a/pkg/packets/packets.go b/pkg/packets/packets.go index 3a01370..33350d5 100644 --- a/pkg/packets/packets.go +++ b/pkg/packets/packets.go | |||
| @@ -4,6 +4,7 @@ import ( | |||
| 4 | "github.com/pektezol/bitreader" | 4 | "github.com/pektezol/bitreader" |
| 5 | "github.com/pektezol/demoparser/pkg/classes" | 5 | "github.com/pektezol/demoparser/pkg/classes" |
| 6 | "github.com/pektezol/demoparser/pkg/messages" | 6 | "github.com/pektezol/demoparser/pkg/messages" |
| 7 | "github.com/pektezol/demoparser/pkg/writer" | ||
| 7 | ) | 8 | ) |
| 8 | 9 | ||
| 9 | type PacketMessageInfo struct { | 10 | type PacketMessageInfo struct { |
| @@ -23,6 +24,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 23 | switch packetType { | 24 | switch packetType { |
| 24 | case 1: // SignOn | 25 | case 1: // SignOn |
| 25 | signOn := SignOn{} | 26 | signOn := SignOn{} |
| 27 | writer.AppendLine("[%d] %s (%d):", tickNumber, "SIGNON", packetType) | ||
| 26 | for count := 0; count < MSSC; count++ { | 28 | for count := 0; count < MSSC; count++ { |
| 27 | signOn.PacketInfo = append(signOn.PacketInfo, classes.ParseCmdInfo(reader)) | 29 | signOn.PacketInfo = append(signOn.PacketInfo, classes.ParseCmdInfo(reader)) |
| 28 | } | 30 | } |
| @@ -41,6 +43,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 41 | packetData = signOn | 43 | packetData = signOn |
| 42 | case 2: // Packet | 44 | case 2: // Packet |
| 43 | packet := Packet{} | 45 | packet := Packet{} |
| 46 | writer.AppendLine("[%d] %s (%d):", tickNumber, "PACKET", packetType) | ||
| 44 | for count := 0; count < MSSC; count++ { | 47 | for count := 0; count < MSSC; count++ { |
| 45 | packet.PacketInfo = append(packet.PacketInfo, classes.ParseCmdInfo(reader)) | 48 | packet.PacketInfo = append(packet.PacketInfo, classes.ParseCmdInfo(reader)) |
| 46 | } | 49 | } |
| @@ -59,16 +62,18 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 59 | packetData = packet | 62 | packetData = packet |
| 60 | case 3: // SyncTick | 63 | case 3: // SyncTick |
| 61 | syncTick := SyncTick{} | 64 | syncTick := SyncTick{} |
| 65 | writer.AppendLine("[%d] %s (%d):", tickNumber, "SYNCTICK", packetType) | ||
| 62 | packetData = syncTick | 66 | packetData = syncTick |
| 63 | case 4: // ConsoleCmd | 67 | case 4: // ConsoleCmd |
| 64 | size := reader.TryReadSInt32() | 68 | consoleCmd := ConsoleCmd{} |
| 65 | consoleCmd := ConsoleCmd{ | 69 | writer.AppendLine("[%d] %s (%d):", tickNumber, "CONSOLECMD", packetType) |
| 66 | Size: int32(size), | 70 | consoleCmd.Size = reader.TryReadSInt32() |
| 67 | Data: reader.TryReadStringLength(uint64(size)), | 71 | consoleCmd.Data = reader.TryReadStringLength(uint64(consoleCmd.Size)) |
| 68 | } | 72 | writer.AppendLine("\t%s", consoleCmd.Data) |
| 69 | packetData = consoleCmd | 73 | packetData = consoleCmd |
| 70 | case 5: // UserCmd TODO: usercmdinfo refactor | 74 | case 5: // UserCmd TODO: usercmdinfo refactor |
| 71 | userCmd := UserCmd{} | 75 | userCmd := UserCmd{} |
| 76 | writer.AppendLine("[%d] %s (%d):", tickNumber, "USERCMD", packetType) | ||
| 72 | userCmd.Cmd = int32(reader.TryReadSInt32()) | 77 | userCmd.Cmd = int32(reader.TryReadSInt32()) |
| 73 | userCmd.Size = int32(reader.TryReadSInt32()) | 78 | userCmd.Size = int32(reader.TryReadSInt32()) |
| 74 | data := reader.TryReadBytesToSlice(uint64(userCmd.Size)) | 79 | data := reader.TryReadBytesToSlice(uint64(userCmd.Size)) |
| @@ -76,6 +81,7 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 76 | packetData = userCmd | 81 | packetData = userCmd |
| 77 | case 6: // DataTables TODO: prop stuff | 82 | case 6: // DataTables TODO: prop stuff |
| 78 | dataTables := DataTables{} | 83 | dataTables := DataTables{} |
| 84 | writer.AppendLine("[%d] %s (%d):", tickNumber, "DATATABLES", packetType) | ||
| 79 | dataTables.Size = int32(reader.TryReadSInt32()) | 85 | dataTables.Size = int32(reader.TryReadSInt32()) |
| 80 | data := reader.TryReadBytesToSlice(uint64(dataTables.Size)) | 86 | data := reader.TryReadBytesToSlice(uint64(dataTables.Size)) |
| 81 | dataTableReader := bitreader.NewReaderFromBytes(data, true) | 87 | dataTableReader := bitreader.NewReaderFromBytes(data, true) |
| @@ -84,43 +90,52 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 84 | count++ | 90 | count++ |
| 85 | dataTables.SendTable = append(dataTables.SendTable, classes.ParseSendTable(dataTableReader)) | 91 | dataTables.SendTable = append(dataTables.SendTable, classes.ParseSendTable(dataTableReader)) |
| 86 | } | 92 | } |
| 93 | writer.AppendLine("\t%d Send Tables:", count) | ||
| 94 | writer.AppendOutputFromTemp() | ||
| 87 | numOfClasses := dataTableReader.TryReadBits(16) | 95 | numOfClasses := dataTableReader.TryReadBits(16) |
| 88 | for count = 0; count < int(numOfClasses); count++ { | 96 | for count = 0; count < int(numOfClasses); count++ { |
| 89 | dataTables.ServerClassInfo = append(dataTables.ServerClassInfo, classes.ParseServerClassInfo(dataTableReader, count, int(numOfClasses))) | 97 | dataTables.ServerClassInfo = append(dataTables.ServerClassInfo, classes.ParseServerClassInfo(dataTableReader, count, int(numOfClasses))) |
| 90 | } | 98 | } |
| 99 | writer.AppendLine("\t%d Classes:", count) | ||
| 100 | writer.AppendOutputFromTemp() | ||
| 91 | packetData = dataTables | 101 | packetData = dataTables |
| 92 | case 7: // Stop | 102 | case 7: // Stop |
| 93 | stop := Stop{} | 103 | stop := Stop{} |
| 104 | writer.AppendLine("[%d] %s (%d):", tickNumber, "STOP", packetType) | ||
| 94 | if reader.TryReadBool() { | 105 | if reader.TryReadBool() { |
| 95 | stop.RemainingData = reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits())) | 106 | stop.RemainingData = reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits())) |
| 107 | writer.AppendLine("\tRemaining Data: %v", stop.RemainingData) | ||
| 96 | } | 108 | } |
| 97 | packetData = stop | 109 | packetData = stop |
| 98 | case 8: // CustomData | 110 | case 8: // CustomData TODO: not sar data |
| 99 | customData := CustomData{ | 111 | customData := CustomData{} |
| 100 | Unknown: int32(reader.TryReadBits(32)), | 112 | customData.Type = reader.TryReadSInt32() |
| 101 | Size: int32(reader.TryReadBits(32)), | 113 | customData.Size = reader.TryReadSInt32() |
| 102 | } | 114 | if customData.Type != 0 || customData.Size == 8 { |
| 103 | if customData.Unknown != 0 || customData.Size == 8 { | ||
| 104 | // Not SAR data | 115 | // Not SAR data |
| 116 | writer.AppendLine("[%d] %s (%d):", tickNumber, "CUSTOMDATA", packetType) | ||
| 105 | customData.Data = string(reader.TryReadBytesToSlice(uint64(customData.Size))) | 117 | customData.Data = string(reader.TryReadBytesToSlice(uint64(customData.Size))) |
| 118 | writer.AppendLine("\t%s", customData.Data) | ||
| 106 | packetData = customData | 119 | packetData = customData |
| 107 | break | 120 | break |
| 108 | } | 121 | } |
| 109 | // SAR data | 122 | // SAR data |
| 110 | sarData := classes.SarData{} | 123 | sarData := classes.SarData{} |
| 124 | writer.AppendLine("[%d] %s (%d):", tickNumber, "SARDATA", packetType) | ||
| 111 | data := reader.TryReadBytesToSlice(uint64(customData.Size)) | 125 | data := reader.TryReadBytesToSlice(uint64(customData.Size)) |
| 112 | sarReader := bitreader.NewReaderFromBytes(data, true) | 126 | sarReader := bitreader.NewReaderFromBytes(data, true) |
| 113 | sarData.ParseSarData(sarReader) | 127 | sarData.ParseSarData(sarReader) |
| 114 | packetData = sarData | 128 | packetData = sarData |
| 115 | case 9: // StringTables TODO: parsing string table data | 129 | case 9: // StringTables TODO: parsing string table data |
| 116 | stringTables := StringTables{ | 130 | stringTables := StringTables{} |
| 117 | Size: int32(reader.TryReadSInt32()), | 131 | writer.AppendLine("[%d] %s (%d):", tickNumber, "STRINGTABLES", packetType) |
| 118 | } | 132 | stringTables.Size = reader.TryReadSInt32() |
| 119 | data := reader.TryReadBytesToSlice(uint64(stringTables.Size)) | 133 | data := reader.TryReadBytesToSlice(uint64(stringTables.Size)) |
| 120 | stringTableReader := bitreader.NewReaderFromBytes(data, true) | 134 | stringTableReader := bitreader.NewReaderFromBytes(data, true) |
| 121 | stringTables.Data = classes.ParseStringTables(stringTableReader) | 135 | stringTables.Data = classes.ParseStringTables(stringTableReader) |
| 122 | packetData = stringTables | 136 | packetData = stringTables |
| 123 | default: // invalid | 137 | default: // invalid |
| 138 | writer.AppendLine("[%d] %s (%d):", tickNumber, "INVALID", packetType) | ||
| 124 | panic("invalid packet type") | 139 | panic("invalid packet type") |
| 125 | } | 140 | } |
| 126 | return PacketMessageInfo{ | 141 | return PacketMessageInfo{ |