diff options
Diffstat (limited to 'pkg/classes/packet.go')
| -rw-r--r-- | pkg/classes/packet.go | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/pkg/classes/packet.go b/pkg/classes/packet.go deleted file mode 100644 index c608244..0000000 --- a/pkg/classes/packet.go +++ /dev/null | |||
| @@ -1,81 +0,0 @@ | |||
| 1 | package classes | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | "github.com/pektezol/demoparser/pkg/messages" | ||
| 8 | ) | ||
| 9 | |||
| 10 | const MSSC int = 2 | ||
| 11 | |||
| 12 | type Packet struct { | ||
| 13 | PacketInfo []CmdInfo | ||
| 14 | InSequence uint32 | ||
| 15 | OutSequence uint32 | ||
| 16 | Size uint32 | ||
| 17 | Data []any | ||
| 18 | } | ||
| 19 | |||
| 20 | type CmdInfo struct { | ||
| 21 | Flags uint32 | ||
| 22 | ViewOrigin []float32 | ||
| 23 | ViewAngles []float32 | ||
| 24 | LocalViewAngles []float32 | ||
| 25 | ViewOrigin2 []float32 | ||
| 26 | ViewAngles2 []float32 | ||
| 27 | LocalViewAngles2 []float32 | ||
| 28 | } | ||
| 29 | |||
| 30 | func (packet *Packet) ParsePacket(reader *bitreader.Reader) { | ||
| 31 | for count := 0; count < MSSC; count++ { | ||
| 32 | packet.ParseCmdInfo(reader) | ||
| 33 | } | ||
| 34 | packet.InSequence = reader.TryReadUInt32() | ||
| 35 | packet.OutSequence = reader.TryReadUInt32() | ||
| 36 | packet.Size = reader.TryReadUInt32() | ||
| 37 | packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(packet.Size)), true) | ||
| 38 | for { | ||
| 39 | messageType, err := packetReader.ReadBits(6) | ||
| 40 | if err != nil { | ||
| 41 | break | ||
| 42 | } | ||
| 43 | packet.Data = append(packet.Data, messages.ParseMessages(messageType, packetReader)) | ||
| 44 | } | ||
| 45 | } | ||
| 46 | |||
| 47 | func (packet *Packet) ParseCmdInfo(reader *bitreader.Reader) { | ||
| 48 | packet.PacketInfo = append(packet.PacketInfo, CmdInfo{ | ||
| 49 | Flags: reader.TryReadUInt32(), | ||
| 50 | ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 51 | ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 52 | LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 53 | ViewOrigin2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 54 | ViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 55 | LocalViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 56 | }) | ||
| 57 | } | ||
| 58 | |||
| 59 | type CmdInfoFlags int | ||
| 60 | |||
| 61 | const ( | ||
| 62 | ECmdInfoFlagsNone = 0 | ||
| 63 | ECmdInfoFlagsUseOrigin2 = 1 | ||
| 64 | ECmdInfoFlagsUserAngles2 = 1 << 1 | ||
| 65 | ECmdInfoFlagsNoInterp = 1 << 2 | ||
| 66 | ) | ||
| 67 | |||
| 68 | func (cmdInfoFlags CmdInfoFlags) String() string { | ||
| 69 | switch cmdInfoFlags { | ||
| 70 | case ECmdInfoFlagsNone: | ||
| 71 | return "None" | ||
| 72 | case ECmdInfoFlagsUseOrigin2: | ||
| 73 | return "UseOrigin2" | ||
| 74 | case ECmdInfoFlagsUserAngles2: | ||
| 75 | return "UserAngles2" | ||
| 76 | case ECmdInfoFlagsNoInterp: | ||
| 77 | return "NoInterp" | ||
| 78 | default: | ||
| 79 | return fmt.Sprintf("%d", int(cmdInfoFlags)) | ||
| 80 | } | ||
| 81 | } | ||