aboutsummaryrefslogtreecommitdiff
path: root/packets
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2022-11-07 17:55:50 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-16 21:39:37 +0300
commit39ecba8a16a1ef734edb216f1fafb094c5c38745 (patch)
treea5ff60e92660d93469f00c5367cc74c2628ab620 /packets
parentdone until the hard part (diff)
downloadsdp.go-39ecba8a16a1ef734edb216f1fafb094c5c38745.tar.gz
sdp.go-39ecba8a16a1ef734edb216f1fafb094c5c38745.tar.bz2
sdp.go-39ecba8a16a1ef734edb216f1fafb094c5c38745.zip
done until the hard part
Diffstat (limited to 'packets')
-rw-r--r--packets/classes/cmdinfo.go51
-rw-r--r--packets/classes/stringtable.go0
-rw-r--r--packets/classes/types.go28
-rw-r--r--packets/classes/usercmd.go94
4 files changed, 173 insertions, 0 deletions
diff --git a/packets/classes/cmdinfo.go b/packets/classes/cmdinfo.go
new file mode 100644
index 0000000..bfe732d
--- /dev/null
+++ b/packets/classes/cmdinfo.go
@@ -0,0 +1,51 @@
1package classes
2
3import "github.com/pektezol/bitreader"
4
5func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo {
6 var out []CmdInfo
7 for i := 0; i < MSSC; i++ {
8 flags := reader.TryReadInt32()
9 viewOrigin := []float32{
10 reader.TryReadFloat32(),
11 reader.TryReadFloat32(),
12 reader.TryReadFloat32(),
13 }
14 viewAngles := []float32{
15 reader.TryReadFloat32(),
16 reader.TryReadFloat32(),
17 reader.TryReadFloat32(),
18 }
19 localViewAngles := []float32{
20 reader.TryReadFloat32(),
21 reader.TryReadFloat32(),
22 reader.TryReadFloat32(),
23 }
24 viewOrigin2 := []float32{
25 reader.TryReadFloat32(),
26 reader.TryReadFloat32(),
27 reader.TryReadFloat32(),
28 }
29 viewAngles2 := []float32{
30 reader.TryReadFloat32(),
31 reader.TryReadFloat32(),
32 reader.TryReadFloat32(),
33 }
34 localViewAngles2 := []float32{
35 reader.TryReadFloat32(),
36 reader.TryReadFloat32(),
37 reader.TryReadFloat32(),
38 }
39 cmdInfo := CmdInfo{
40 Flags: int32(flags),
41 ViewOrigin: viewOrigin,
42 ViewAngles: viewAngles,
43 LocalViewAngles: localViewAngles,
44 ViewOrigin2: viewOrigin2,
45 ViewAngles2: viewAngles2,
46 LocalViewAngles2: localViewAngles2,
47 }
48 out = append(out, cmdInfo)
49 }
50 return out
51}
diff --git a/packets/classes/stringtable.go b/packets/classes/stringtable.go
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/packets/classes/stringtable.go
diff --git a/packets/classes/types.go b/packets/classes/types.go
new file mode 100644
index 0000000..8e630b6
--- /dev/null
+++ b/packets/classes/types.go
@@ -0,0 +1,28 @@
1package classes
2
3type CmdInfo struct {
4 Flags int32
5 ViewOrigin []float32
6 ViewAngles []float32
7 LocalViewAngles []float32
8 ViewOrigin2 []float32
9 ViewAngles2 []float32
10 LocalViewAngles2 []float32
11}
12
13type UserCmdInfo struct {
14 CommandNumber int
15 TickCount int
16 ViewAnglesX float32
17 ViewAnglesY float32
18 ViewAnglesZ float32
19 ForwardMove float32
20 SideMove float32
21 UpMove float32
22 Buttons int
23 Impulse byte
24 WeaponSelect int
25 WeaponSubtype int
26 MouseDx int16
27 MouseDy int16
28}
diff --git a/packets/classes/usercmd.go b/packets/classes/usercmd.go
new file mode 100644
index 0000000..a3183b6
--- /dev/null
+++ b/packets/classes/usercmd.go
@@ -0,0 +1,94 @@
1package classes
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7func ParseUserCmdInfo(reader *bitreader.ReaderType, size int) UserCmdInfo {
8 var bitCount int
9 var userCmdInfo UserCmdInfo
10 if reader.TryReadBool() {
11 userCmdInfo.CommandNumber = int(reader.TryReadInt32())
12 bitCount += 32
13 }
14 bitCount++
15 if reader.TryReadBool() {
16 userCmdInfo.TickCount = int(reader.TryReadInt32())
17 bitCount += 32
18 }
19 bitCount++
20 if reader.TryReadBool() {
21 userCmdInfo.ViewAnglesX = reader.TryReadFloat32()
22 bitCount += 32
23 }
24 bitCount++
25 if reader.TryReadBool() {
26 userCmdInfo.ViewAnglesY = reader.TryReadFloat32()
27 bitCount += 32
28 }
29 bitCount++
30 if reader.TryReadBool() {
31 userCmdInfo.ViewAnglesZ = reader.TryReadFloat32()
32 bitCount += 32
33 }
34 bitCount++
35 if reader.TryReadBool() {
36 userCmdInfo.ForwardMove = reader.TryReadFloat32()
37 bitCount += 32
38 }
39 bitCount++
40 if reader.TryReadBool() {
41 userCmdInfo.SideMove = reader.TryReadFloat32()
42 bitCount += 32
43 }
44 bitCount++
45 if reader.TryReadBool() {
46 userCmdInfo.UpMove = reader.TryReadFloat32()
47 bitCount += 32
48 }
49 bitCount++
50 if reader.TryReadBool() {
51 userCmdInfo.Buttons = int(reader.TryReadInt32())
52 bitCount += 32
53 }
54 bitCount++
55 if reader.TryReadBool() {
56 userCmdInfo.Impulse = reader.TryReadInt8()
57 bitCount += 8
58 }
59 bitCount++
60 if reader.TryReadBool() {
61 value, err := reader.ReadBits(11)
62 if err != nil {
63 panic(err)
64 }
65 userCmdInfo.WeaponSelect = int(value)
66 bitCount += 11
67 if reader.TryReadBool() {
68 value, err := reader.ReadBits(6)
69 if err != nil {
70 panic(err)
71 }
72 userCmdInfo.WeaponSubtype = int(value)
73 bitCount += 6
74 }
75 bitCount++
76 }
77 bitCount++
78 if reader.TryReadBool() {
79 userCmdInfo.MouseDx = int16(reader.TryReadInt16())
80 bitCount += 16
81 }
82 bitCount++
83 if reader.TryReadBool() {
84 userCmdInfo.MouseDy = int16(reader.TryReadInt16())
85 bitCount += 16
86 }
87 bitCount++
88 /*if bitCount > size*8 {
89 //reader.SkipBits(size * 8)
90 return userCmdInfo
91 }*/
92 reader.SkipBits(size*8 - bitCount)
93 return userCmdInfo
94}