aboutsummaryrefslogtreecommitdiff
path: root/pkg/classes/packet.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-23 10:06:39 +0300
commit9991801e4037d8dc530876584f21c1674c9e3bba (patch)
treeefa20cd6aa6556cfdea81f4c99251e0688847ca6 /pkg/classes/packet.go
parentorganize packets and classes (#9) (diff)
downloadsdp.go-verification.tar.gz
sdp.go-verification.tar.bz2
sdp.go-verification.zip
init: will look at this laterverification
Diffstat (limited to 'pkg/classes/packet.go')
-rw-r--r--pkg/classes/packet.go63
1 files changed, 3 insertions, 60 deletions
diff --git a/pkg/classes/packet.go b/pkg/classes/packet.go
index 0bba102..a81cd87 100644
--- a/pkg/classes/packet.go
+++ b/pkg/classes/packet.go
@@ -1,11 +1,7 @@
1package classes 1package classes
2 2
3import ( 3import (
4 "fmt"
5
6 "github.com/pektezol/bitreader" 4 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/pkg/messages"
8 "github.com/pektezol/demoparser/pkg/writer"
9) 5)
10 6
11const MSSC int = 2 7const MSSC int = 2
@@ -30,61 +26,8 @@ type CmdInfo struct {
30 26
31func (packet *Packet) ParsePacket(reader *bitreader.Reader) { 27func (packet *Packet) ParsePacket(reader *bitreader.Reader) {
32 for count := 0; count < MSSC; count++ { 28 for count := 0; count < MSSC; count++ {
33 packet.ParseCmdInfo(reader) 29 reader.SkipBytes(76)
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 } 30 }
31 reader.SkipBytes(8)
32 reader.TryReadBytesToSlice(uint64(reader.TryReadUInt32()))
90} 33}