diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-23 10:06:39 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-23 10:06:39 +0300 |
| commit | 9991801e4037d8dc530876584f21c1674c9e3bba (patch) | |
| tree | efa20cd6aa6556cfdea81f4c99251e0688847ca6 /pkg/packets | |
| parent | organize packets and classes (#9) (diff) | |
| download | sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.gz sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.tar.bz2 sdp.go-9991801e4037d8dc530876584f21c1674c9e3bba.zip | |
init: will look at this laterverification
Diffstat (limited to '')
| -rw-r--r-- | pkg/packets/headers.go | 3 | ||||
| -rw-r--r-- | pkg/packets/packets.go | 48 |
2 files changed, 27 insertions, 24 deletions
diff --git a/pkg/packets/headers.go b/pkg/packets/headers.go index d92b22d..124eb95 100644 --- a/pkg/packets/headers.go +++ b/pkg/packets/headers.go | |||
| @@ -2,7 +2,6 @@ package packets | |||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "github.com/pektezol/bitreader" | 4 | "github.com/pektezol/bitreader" |
| 5 | "github.com/pektezol/demoparser/pkg/writer" | ||
| 6 | ) | 5 | ) |
| 7 | 6 | ||
| 8 | type Headers struct { | 7 | type Headers struct { |
| @@ -42,6 +41,6 @@ func ParseHeaders(reader *bitreader.Reader) Headers { | |||
| 42 | if headers.NetworkProtocol != 2001 { | 41 | if headers.NetworkProtocol != 2001 { |
| 43 | panic("this parser only supports demos from portal 2") | 42 | panic("this parser only supports demos from portal 2") |
| 44 | } | 43 | } |
| 45 | writer.AppendLine("Headers: %+v", headers) | 44 | |
| 46 | return headers | 45 | return headers |
| 47 | } | 46 | } |
diff --git a/pkg/packets/packets.go b/pkg/packets/packets.go index b1d6a40..06eb48d 100644 --- a/pkg/packets/packets.go +++ b/pkg/packets/packets.go | |||
| @@ -3,7 +3,7 @@ package packets | |||
| 3 | import ( | 3 | 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/writer" | 6 | "github.com/pektezol/demoparser/pkg/messages" |
| 7 | ) | 7 | ) |
| 8 | 8 | ||
| 9 | type PacketMessageInfo struct { | 9 | type PacketMessageInfo struct { |
| @@ -18,42 +18,46 @@ func ParsePackets(reader *bitreader.Reader) PacketMessageInfo { | |||
| 18 | slotNumber := reader.TryReadUInt8() | 18 | slotNumber := reader.TryReadUInt8() |
| 19 | switch packetType { | 19 | switch packetType { |
| 20 | case 1: // SignOn | 20 | case 1: // SignOn |
| 21 | writer.AppendLine("[%d] %s (%d):", tickNumber, "SIGNON", packetType) | 21 | for count := 0; count < 2; count++ { |
| 22 | signOn := classes.SignOn{} | 22 | reader.SkipBytes(76) |
| 23 | signOn.ParseSignOn(reader) | 23 | } |
| 24 | reader.SkipBytes(8) | ||
| 25 | packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(reader.TryReadUInt32())), true) | ||
| 26 | for { | ||
| 27 | messageType, err := packetReader.ReadBits(6) | ||
| 28 | if err != nil { | ||
| 29 | break | ||
| 30 | } | ||
| 31 | messages.ParseMessages(messageType, packetReader) | ||
| 32 | } | ||
| 24 | case 2: // Packet | 33 | case 2: // Packet |
| 25 | writer.AppendLine("[%d] %s (%d):", tickNumber, "PACKET", packetType) | 34 | for count := 0; count < 2; count++ { |
| 26 | packet := classes.Packet{} | 35 | reader.SkipBytes(76) |
| 27 | packet.ParsePacket(reader) | 36 | } |
| 37 | reader.SkipBytes(8) | ||
| 38 | reader.TryReadBytesToSlice(uint64(reader.TryReadUInt32())) | ||
| 28 | case 3: // SyncTick | 39 | case 3: // SyncTick |
| 29 | writer.AppendLine("[%d] %s (%d):", tickNumber, "SYNCTICK", packetType) | ||
| 30 | syncTick := classes.SyncTick{} | ||
| 31 | syncTick.ParseSyncTick() | ||
| 32 | case 4: // ConsoleCmd | 40 | case 4: // ConsoleCmd |
| 33 | writer.AppendLine("[%d] %s (%d):", tickNumber, "CONSOLECMD", packetType) | 41 | |
| 34 | consoleCmd := classes.ConsoleCmd{} | 42 | consoleCmd := classes.ConsoleCmd{} |
| 35 | consoleCmd.ParseConsoleCmd(reader) | 43 | consoleCmd.ParseConsoleCmd(reader) |
| 36 | case 5: // UserCmd | 44 | case 5: // UserCmd |
| 37 | writer.AppendLine("[%d] %s (%d):", tickNumber, "USERCMD", packetType) | 45 | |
| 38 | userCmd := classes.UserCmd{} | 46 | userCmd := classes.UserCmd{} |
| 39 | userCmd.ParseUserCmd(reader) | 47 | userCmd.ParseUserCmd(reader) |
| 40 | case 6: // DataTables | 48 | case 6: // DataTables |
| 41 | writer.AppendLine("[%d] %s (%d):", tickNumber, "DATATABLES", packetType) | 49 | reader.SkipBytes(uint64(reader.TryReadUInt32())) |
| 42 | dataTables := classes.DataTables{} | ||
| 43 | dataTables.ParseDataTables(reader) | ||
| 44 | case 7: // Stop | 50 | case 7: // Stop |
| 45 | writer.AppendLine("[%d] %s (%d):", tickNumber, "STOP", packetType) | 51 | if reader.TryReadBool() { |
| 46 | stop := classes.Stop{} | 52 | reader.TryReadBitsToSlice(uint64(reader.TryReadRemainingBits())) |
| 47 | stop.ParseStop(reader) | 53 | } |
| 48 | case 8: // CustomData TODO: not sar data | 54 | case 8: // CustomData TODO: not sar data |
| 49 | customData := classes.CustomData{} | 55 | customData := classes.CustomData{} |
| 50 | customData.ParseCustomData(reader, tickNumber, packetType) | 56 | customData.ParseCustomData(reader, tickNumber, packetType) |
| 51 | case 9: // StringTables TODO: parsing string table data | 57 | case 9: // StringTables TODO: parsing string table data |
| 52 | writer.AppendLine("[%d] %s (%d):", tickNumber, "STRINGTABLES", packetType) | 58 | reader.SkipBytes(uint64(reader.TryReadUInt32())) |
| 53 | stringTables := classes.StringTables{} | ||
| 54 | stringTables.ParseStringTables(reader) | ||
| 55 | default: // Invalid | 59 | default: // Invalid |
| 56 | writer.AppendLine("[%d] %s (%d):", tickNumber, "INVALID", packetType) | 60 | |
| 57 | panic("invalid packet type") | 61 | panic("invalid packet type") |
| 58 | } | 62 | } |
| 59 | return PacketMessageInfo{ | 63 | return PacketMessageInfo{ |