aboutsummaryrefslogtreecommitdiff
path: root/pkg/classes/packet.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-21 19:26:40 +0300
committerGitHub <noreply@github.com>2023-09-21 19:26:40 +0300
commit44eefefe67a4a5f514faa4594370346fd1b54996 (patch)
treea8853a8ecd49ddbb87c6cc19904ec6bb5419ee83 /pkg/classes/packet.go
parentadd strings builder, customize ALL outputs (#6) (diff)
downloadsdp.go-44eefefe67a4a5f514faa4594370346fd1b54996.tar.gz
sdp.go-44eefefe67a4a5f514faa4594370346fd1b54996.tar.bz2
sdp.go-44eefefe67a4a5f514faa4594370346fd1b54996.zip
organize packets and classes (#9)v1.1.1
Diffstat (limited to 'pkg/classes/packet.go')
-rw-r--r--pkg/classes/packet.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/pkg/classes/packet.go b/pkg/classes/packet.go
new file mode 100644
index 0000000..0bba102
--- /dev/null
+++ b/pkg/classes/packet.go
@@ -0,0 +1,90 @@
1package classes
2
3import (
4 "fmt"
5
6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/pkg/messages"
8 "github.com/pektezol/demoparser/pkg/writer"
9)
10
11const MSSC int = 2
12
13type Packet struct {
14 PacketInfo []CmdInfo
15 InSequence uint32
16 OutSequence uint32
17 Size uint32
18 Data []any
19}
20
21type CmdInfo struct {
22 Flags uint32
23 ViewOrigin []float32
24 ViewAngles []float32
25 LocalViewAngles []float32
26 ViewOrigin2 []float32
27 ViewAngles2 []float32
28 LocalViewAngles2 []float32
29}
30
31func (packet *Packet) ParsePacket(reader *bitreader.Reader) {
32 for count := 0; count < MSSC; count++ {
33 packet.ParseCmdInfo(reader)
34 }
35 packet.InSequence = reader.TryReadUInt32()
36 packet.OutSequence = reader.TryReadUInt32()
37 packet.Size = reader.TryReadUInt32()
38 packetReader := bitreader.NewReaderFromBytes(reader.TryReadBytesToSlice(uint64(packet.Size)), true)
39 for {
40 messageType, err := packetReader.ReadBits(6)
41 if err != nil {
42 break
43 }
44 packet.Data = append(packet.Data, messages.ParseMessages(messageType, packetReader))
45 }
46}
47
48func (packet *Packet) ParseCmdInfo(reader *bitreader.Reader) {
49 packet.PacketInfo = append(packet.PacketInfo, CmdInfo{
50 Flags: reader.TryReadUInt32(),
51 ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
52 ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
53 LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
54 ViewOrigin2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
55 ViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
56 LocalViewAngles2: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
57 })
58 writer.AppendLine("\tFlags: %s", CmdInfoFlags(packet.PacketInfo[len(packet.PacketInfo)-1].Flags).String())
59 writer.AppendLine("\tView Origin: %v", packet.PacketInfo[len(packet.PacketInfo)-1].ViewOrigin)
60 writer.AppendLine("\tView Angles: %v", packet.PacketInfo[len(packet.PacketInfo)-1].ViewAngles)
61 writer.AppendLine("\tLocal View Angles: %v", packet.PacketInfo[len(packet.PacketInfo)-1].LocalViewAngles)
62 writer.AppendLine("\tView Origin 2: %v", packet.PacketInfo[len(packet.PacketInfo)-1].ViewOrigin2)
63 writer.AppendLine("\tView Angles 2: %v", packet.PacketInfo[len(packet.PacketInfo)-1].ViewAngles2)
64 writer.AppendLine("\tLocal View Angles 2: %v", packet.PacketInfo[len(packet.PacketInfo)-1].LocalViewAngles2)
65 writer.AppendLine("")
66}
67
68type CmdInfoFlags int
69
70const (
71 ECmdInfoFlagsNone = 0
72 ECmdInfoFlagsUseOrigin2 = 1
73 ECmdInfoFlagsUserAngles2 = 1 << 1
74 ECmdInfoFlagsNoInterp = 1 << 2
75)
76
77func (cmdInfoFlags CmdInfoFlags) String() string {
78 switch cmdInfoFlags {
79 case ECmdInfoFlagsNone:
80 return "None"
81 case ECmdInfoFlagsUseOrigin2:
82 return "UseOrigin2"
83 case ECmdInfoFlagsUserAngles2:
84 return "UserAngles2"
85 case ECmdInfoFlagsNoInterp:
86 return "NoInterp"
87 default:
88 return fmt.Sprintf("%d", int(cmdInfoFlags))
89 }
90}