aboutsummaryrefslogtreecommitdiff
path: root/packets/classes
diff options
context:
space:
mode:
Diffstat (limited to 'packets/classes')
-rw-r--r--packets/classes/cmdinfo.go4
-rw-r--r--packets/classes/datatable.go68
2 files changed, 70 insertions, 2 deletions
diff --git a/packets/classes/cmdinfo.go b/packets/classes/cmdinfo.go
index 52df05c..d11bebc 100644
--- a/packets/classes/cmdinfo.go
+++ b/packets/classes/cmdinfo.go
@@ -15,7 +15,7 @@ type CmdInfo struct {
15func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo { 15func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo {
16 var out []CmdInfo 16 var out []CmdInfo
17 for i := 0; i < MSSC; i++ { 17 for i := 0; i < MSSC; i++ {
18 flags := reader.TryReadInt32() 18 flags := int32(reader.TryReadInt32())
19 viewOrigin := []float32{ 19 viewOrigin := []float32{
20 reader.TryReadFloat32(), 20 reader.TryReadFloat32(),
21 reader.TryReadFloat32(), 21 reader.TryReadFloat32(),
@@ -47,7 +47,7 @@ func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo {
47 reader.TryReadFloat32(), 47 reader.TryReadFloat32(),
48 } 48 }
49 cmdInfo := CmdInfo{ 49 cmdInfo := CmdInfo{
50 Flags: int32(flags), 50 Flags: flags,
51 ViewOrigin: viewOrigin, 51 ViewOrigin: viewOrigin,
52 ViewAngles: viewAngles, 52 ViewAngles: viewAngles,
53 LocalViewAngles: localViewAngles, 53 LocalViewAngles: localViewAngles,
diff --git a/packets/classes/datatable.go b/packets/classes/datatable.go
new file mode 100644
index 0000000..07cbd00
--- /dev/null
+++ b/packets/classes/datatable.go
@@ -0,0 +1,68 @@
1package classes
2
3import (
4 "bytes"
5 "fmt"
6
7 "github.com/pektezol/bitreader"
8)
9
10type DataTable struct {
11 SendTable []SendTable
12 ServerClassInfo []ServerClassInfo
13}
14
15type SendTable struct {
16 NeedsDecoder bool
17 NetTableName string
18 NumOfProps uint16
19 SendPropType int8
20 SendPropName string
21 SendPropFlags int16
22}
23
24type ServerClassInfo struct {
25 ClassId int16
26 ClassName string
27 DataTableName string
28}
29
30func ParseDataTable(data []byte) DataTable {
31 reader := bitreader.Reader(bytes.NewReader(data), true)
32 sendtable := parseSendTable(reader)
33 fmt.Println("AAA")
34 fmt.Println(reader.TryReadBits(8))
35 serverclassinfo := parseServerClassInfo(reader)
36 return DataTable{
37 SendTable: sendtable,
38 ServerClassInfo: serverclassinfo,
39 }
40}
41
42func parseSendTable(reader *bitreader.ReaderType) []SendTable {
43 var sendtables []SendTable
44 for reader.TryReadBool() {
45 sendtables = append(sendtables, SendTable{
46 NeedsDecoder: reader.TryReadBool(),
47 NetTableName: reader.TryReadString(),
48 NumOfProps: uint16(reader.TryReadBits(10)),
49 SendPropType: int8(reader.TryReadBits(5)),
50 SendPropName: reader.TryReadString(),
51 SendPropFlags: int16(reader.TryReadInt16()),
52 })
53 }
54 return sendtables
55}
56func parseServerClassInfo(reader *bitreader.ReaderType) []ServerClassInfo {
57 var serverclassinfo []ServerClassInfo
58 numofclasses := reader.TryReadInt16()
59 fmt.Println(numofclasses)
60 for i := 0; i < int(numofclasses); i++ {
61 serverclassinfo = append(serverclassinfo, ServerClassInfo{
62 ClassId: int16(reader.TryReadInt16()),
63 ClassName: reader.TryReadString(),
64 DataTableName: reader.TryReadString(),
65 })
66 }
67 return serverclassinfo
68}