aboutsummaryrefslogtreecommitdiff
path: root/packets
diff options
context:
space:
mode:
Diffstat (limited to 'packets')
-rw-r--r--packets/classes/cmdinfo.go61
-rw-r--r--packets/classes/datatable.go66
-rw-r--r--packets/classes/stringtable.go51
-rw-r--r--packets/classes/usercmd.go80
-rw-r--r--packets/header.go33
-rw-r--r--packets/messages/message.go94
-rw-r--r--packets/messages/types/NetDisconnect.go11
-rw-r--r--packets/messages/types/NetFile.go17
-rw-r--r--packets/messages/types/NetNop.go3
-rw-r--r--packets/messages/types/NetSetConVar.go26
-rw-r--r--packets/messages/types/NetSignOnState.go27
-rw-r--r--packets/messages/types/NetSplitScreenUser.go13
-rw-r--r--packets/messages/types/NetStringCmd.go13
-rw-r--r--packets/messages/types/NetTick.go17
-rw-r--r--packets/messages/types/SvcClassInfo.go47
-rw-r--r--packets/messages/types/SvcCmdKeyValues.go14
-rw-r--r--packets/messages/types/SvcCreateStringTable.go34
-rw-r--r--packets/messages/types/SvcCrosshairAngle.go17
-rw-r--r--packets/messages/types/SvcEntityMessage.go20
-rw-r--r--packets/messages/types/SvcFixAngle.go21
-rw-r--r--packets/messages/types/SvcGameEvent.go15
-rw-r--r--packets/messages/types/SvcGameEventList.go17
-rw-r--r--packets/messages/types/SvcGetCvarValue.go15
-rw-r--r--packets/messages/types/SvcMenu.go17
-rw-r--r--packets/messages/types/SvcPacketEntities.go39
-rw-r--r--packets/messages/types/SvcPaintmapData.go14
-rw-r--r--packets/messages/types/SvcPrefetch.go13
-rw-r--r--packets/messages/types/SvcPrint.go13
-rw-r--r--packets/messages/types/SvcSendTable.go17
-rw-r--r--packets/messages/types/SvcServerInfo.go43
-rw-r--r--packets/messages/types/SvcSetPause.go13
-rw-r--r--packets/messages/types/SvcSetView.go13
-rw-r--r--packets/messages/types/SvcSounds.go30
-rw-r--r--packets/messages/types/SvcSplitScreen.go17
-rw-r--r--packets/messages/types/SvcTempEntities.go20
-rw-r--r--packets/messages/types/SvcUpdateStringTable.go21
-rw-r--r--packets/messages/types/SvcUserMessage.go19
-rw-r--r--packets/messages/types/SvcVoiceData.go19
-rw-r--r--packets/messages/types/SvcVoiceInit.go20
-rw-r--r--packets/packet.go87
-rw-r--r--packets/types.go62
41 files changed, 0 insertions, 1189 deletions
diff --git a/packets/classes/cmdinfo.go b/packets/classes/cmdinfo.go
deleted file mode 100644
index d11bebc..0000000
--- a/packets/classes/cmdinfo.go
+++ /dev/null
@@ -1,61 +0,0 @@
1package classes
2
3import "github.com/pektezol/bitreader"
4
5type CmdInfo struct {
6 Flags int32
7 ViewOrigin []float32
8 ViewAngles []float32
9 LocalViewAngles []float32
10 ViewOrigin2 []float32
11 ViewAngles2 []float32
12 LocalViewAngles2 []float32
13}
14
15func ParseCmdInfo(reader *bitreader.ReaderType, MSSC int) []CmdInfo {
16 var out []CmdInfo
17 for i := 0; i < MSSC; i++ {
18 flags := int32(reader.TryReadInt32())
19 viewOrigin := []float32{
20 reader.TryReadFloat32(),
21 reader.TryReadFloat32(),
22 reader.TryReadFloat32(),
23 }
24 viewAngles := []float32{
25 reader.TryReadFloat32(),
26 reader.TryReadFloat32(),
27 reader.TryReadFloat32(),
28 }
29 localViewAngles := []float32{
30 reader.TryReadFloat32(),
31 reader.TryReadFloat32(),
32 reader.TryReadFloat32(),
33 }
34 viewOrigin2 := []float32{
35 reader.TryReadFloat32(),
36 reader.TryReadFloat32(),
37 reader.TryReadFloat32(),
38 }
39 viewAngles2 := []float32{
40 reader.TryReadFloat32(),
41 reader.TryReadFloat32(),
42 reader.TryReadFloat32(),
43 }
44 localViewAngles2 := []float32{
45 reader.TryReadFloat32(),
46 reader.TryReadFloat32(),
47 reader.TryReadFloat32(),
48 }
49 cmdInfo := CmdInfo{
50 Flags: flags,
51 ViewOrigin: viewOrigin,
52 ViewAngles: viewAngles,
53 LocalViewAngles: localViewAngles,
54 ViewOrigin2: viewOrigin2,
55 ViewAngles2: viewAngles2,
56 LocalViewAngles2: localViewAngles2,
57 }
58 out = append(out, cmdInfo)
59 }
60 return out
61}
diff --git a/packets/classes/datatable.go b/packets/classes/datatable.go
deleted file mode 100644
index 405dae6..0000000
--- a/packets/classes/datatable.go
+++ /dev/null
@@ -1,66 +0,0 @@
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 serverclassinfo := parseServerClassInfo(reader)
34 return DataTable{
35 SendTable: sendtable,
36 ServerClassInfo: serverclassinfo,
37 }
38}
39
40func parseSendTable(reader *bitreader.ReaderType) []SendTable {
41 var sendtables []SendTable
42 for reader.TryReadBool() {
43 sendtables = append(sendtables, SendTable{
44 NeedsDecoder: reader.TryReadBool(),
45 NetTableName: reader.TryReadString(),
46 NumOfProps: uint16(reader.TryReadBits(10)),
47 SendPropType: int8(reader.TryReadBits(5)),
48 SendPropName: reader.TryReadString(),
49 SendPropFlags: int16(reader.TryReadInt16()),
50 })
51 }
52 return sendtables
53}
54func parseServerClassInfo(reader *bitreader.ReaderType) []ServerClassInfo {
55 var serverclassinfo []ServerClassInfo
56 numofclasses := reader.TryReadInt16()
57 fmt.Println(numofclasses)
58 for i := 0; i < int(numofclasses); i++ {
59 serverclassinfo = append(serverclassinfo, ServerClassInfo{
60 ClassId: int16(reader.TryReadInt16()),
61 ClassName: reader.TryReadString(),
62 DataTableName: reader.TryReadString(),
63 })
64 }
65 return serverclassinfo
66}
diff --git a/packets/classes/stringtable.go b/packets/classes/stringtable.go
deleted file mode 100644
index a1432f9..0000000
--- a/packets/classes/stringtable.go
+++ /dev/null
@@ -1,51 +0,0 @@
1package classes
2
3import (
4 "bytes"
5
6 "github.com/pektezol/bitreader"
7)
8
9type StringTable struct {
10 TableName string
11 NumOfEntries int16
12 EntryName string
13 EntrySize int16
14 EntryData []byte
15 NumOfClientEntries int16
16 ClientEntryName string
17 ClientEntrySize int16
18 ClientEntryData []byte
19}
20
21func ParseStringTable(data []byte) []StringTable {
22 reader := bitreader.Reader(bytes.NewReader(data), true)
23 var stringTables []StringTable
24 numOfTables := reader.TryReadInt8()
25 for i := 0; i < int(numOfTables); i++ {
26 var stringTable StringTable
27 stringTable.TableName = reader.TryReadString()
28 stringTable.NumOfEntries = int16(reader.TryReadInt16())
29 stringTable.EntryName = reader.TryReadString()
30 if reader.TryReadBool() {
31 stringTable.EntrySize = int16(reader.TryReadInt16())
32 }
33 if reader.TryReadBool() {
34 stringTable.EntryData = reader.TryReadBytesToSlice(int(stringTable.EntrySize))
35 }
36 if reader.TryReadBool() {
37 stringTable.NumOfClientEntries = int16(reader.TryReadInt16())
38 }
39 if reader.TryReadBool() {
40 stringTable.ClientEntryName = reader.TryReadString()
41 }
42 if reader.TryReadBool() {
43 stringTable.ClientEntrySize = int16(reader.TryReadInt16())
44 }
45 if reader.TryReadBool() {
46 stringTable.ClientEntryData = reader.TryReadBytesToSlice(int(stringTable.ClientEntrySize))
47 }
48 stringTables = append(stringTables, stringTable)
49 }
50 return stringTables
51}
diff --git a/packets/classes/usercmd.go b/packets/classes/usercmd.go
deleted file mode 100644
index d3328fd..0000000
--- a/packets/classes/usercmd.go
+++ /dev/null
@@ -1,80 +0,0 @@
1package classes
2
3import (
4 "bytes"
5
6 "github.com/pektezol/bitreader"
7)
8
9type UserCmdInfo struct {
10 CommandNumber int32
11 TickCount int32
12 ViewAnglesX float32
13 ViewAnglesY float32
14 ViewAnglesZ float32
15 ForwardMove float32
16 SideMove float32
17 UpMove float32
18 Buttons int32
19 Impulse byte
20 WeaponSelect int
21 WeaponSubtype int
22 MouseDx int16
23 MouseDy int16
24}
25
26func ParseUserCmdInfo(data []byte) UserCmdInfo {
27 reader := bitreader.Reader(bytes.NewReader(data), true)
28 var userCmdInfo UserCmdInfo
29 if reader.TryReadBool() {
30 userCmdInfo.CommandNumber = int32(reader.TryReadInt32())
31 }
32 if reader.TryReadBool() {
33 userCmdInfo.TickCount = int32(reader.TryReadInt32())
34 }
35 if reader.TryReadBool() {
36 userCmdInfo.ViewAnglesX = reader.TryReadFloat32()
37 }
38 if reader.TryReadBool() {
39 userCmdInfo.ViewAnglesY = reader.TryReadFloat32()
40 }
41 if reader.TryReadBool() {
42 userCmdInfo.ViewAnglesZ = reader.TryReadFloat32()
43 }
44 if reader.TryReadBool() {
45 userCmdInfo.ForwardMove = reader.TryReadFloat32()
46 }
47 if reader.TryReadBool() {
48 userCmdInfo.SideMove = reader.TryReadFloat32()
49 }
50 if reader.TryReadBool() {
51 userCmdInfo.UpMove = reader.TryReadFloat32()
52 }
53 if reader.TryReadBool() {
54 userCmdInfo.Buttons = int32(reader.TryReadInt32())
55 }
56 if reader.TryReadBool() {
57 userCmdInfo.Impulse = reader.TryReadInt8()
58 }
59 if reader.TryReadBool() {
60 value, err := reader.ReadBits(11)
61 if err != nil {
62 panic(err)
63 }
64 userCmdInfo.WeaponSelect = int(value)
65 if reader.TryReadBool() {
66 value, err := reader.ReadBits(6)
67 if err != nil {
68 panic(err)
69 }
70 userCmdInfo.WeaponSubtype = int(value)
71 }
72 }
73 if reader.TryReadBool() {
74 userCmdInfo.MouseDx = int16(reader.TryReadInt16())
75 }
76 if reader.TryReadBool() {
77 userCmdInfo.MouseDy = int16(reader.TryReadInt16())
78 }
79 return userCmdInfo
80}
diff --git a/packets/header.go b/packets/header.go
deleted file mode 100644
index c4172d9..0000000
--- a/packets/header.go
+++ /dev/null
@@ -1,33 +0,0 @@
1package packets
2
3import (
4 "fmt"
5
6 "github.com/pektezol/bitreader"
7)
8
9func ParseHeader(reader *bitreader.ReaderType) {
10 header := Header{
11 DemoFileStamp: reader.TryReadStringLen(8),
12 DemoProtocol: uint32(reader.TryReadInt32()),
13 NetworkProtocol: uint32(reader.TryReadInt32()),
14 ServerName: reader.TryReadStringLen(260),
15 ClientName: reader.TryReadStringLen(260),
16 MapName: reader.TryReadStringLen(260),
17 GameDirectory: reader.TryReadStringLen(260),
18 PlaybackTime: reader.TryReadFloat32(),
19 PlaybackTicks: int32(reader.TryReadInt32()),
20 PlaybackFrames: int32(reader.TryReadInt32()),
21 SignOnLength: uint32(reader.TryReadInt32()),
22 }
23 if header.DemoFileStamp != "HL2DEMO" {
24 panic("Invalid demo file stamp. Make sure a valid demo file is given.")
25 }
26 if header.DemoProtocol != 4 {
27 panic("Given demo is from old engine. This parser is only supported for new engine.")
28 }
29 if header.NetworkProtocol != 2001 {
30 panic("Given demo is not from Portal2. This parser currently only supports Portal 2.")
31 }
32 fmt.Println(header)
33}
diff --git a/packets/messages/message.go b/packets/messages/message.go
deleted file mode 100644
index 4a00212..0000000
--- a/packets/messages/message.go
+++ /dev/null
@@ -1,94 +0,0 @@
1package messages
2
3import (
4 "bytes"
5
6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/packets/messages/types"
8)
9
10func ParseMessage(data []byte) []Message {
11 reader := bitreader.Reader(bytes.NewReader(data), true)
12 var messages []Message
13 for {
14 messageType, err := reader.ReadBits(6)
15 if err != nil {
16 break
17 }
18 switch messageType {
19 case 0:
20 messages = append(messages, Message{Data: types.NetNop{}})
21 case 1:
22 messages = append(messages, Message{Data: types.ParseNetDisconnect(reader)})
23 case 2:
24 messages = append(messages, Message{Data: types.ParseNetFile(reader)})
25 case 3:
26 messages = append(messages, Message{Data: types.ParseNetSplitScreenUser(reader)})
27 case 4:
28 messages = append(messages, Message{Data: types.ParseNetTick(reader)})
29 case 5:
30 messages = append(messages, Message{Data: types.ParseNetStringCmd(reader)})
31 case 6:
32 messages = append(messages, Message{Data: types.ParseNetSetConVar(reader)})
33 case 7:
34 messages = append(messages, Message{Data: types.ParseNetSignOnState(reader)})
35 case 8:
36 messages = append(messages, Message{Data: types.ParseSvcServerInfo(reader)})
37 case 9:
38 messages = append(messages, Message{Data: types.ParseSvcSendTable(reader)})
39 case 10:
40 messages = append(messages, Message{Data: types.ParseSvcClassInfo(reader)})
41 case 11:
42 messages = append(messages, Message{Data: types.ParseSvcSetPause(reader)})
43 case 12:
44 messages = append(messages, Message{Data: types.ParseSvcCreateStringTable(reader)})
45 case 13:
46 messages = append(messages, Message{Data: types.ParseSvcUpdateStringTable(reader)})
47 case 14:
48 messages = append(messages, Message{Data: types.ParseSvcVoiceInit(reader)})
49 case 15:
50 messages = append(messages, Message{Data: types.ParseSvcVoiceData(reader)})
51 case 16:
52 messages = append(messages, Message{Data: types.ParseSvcPrint(reader)})
53 case 17:
54 messages = append(messages, Message{Data: types.ParseSvcSounds(reader)})
55 case 18:
56 messages = append(messages, Message{Data: types.ParseSvcSetView(reader)})
57 case 19:
58 messages = append(messages, Message{Data: types.ParseSvcFixAngle(reader)})
59 case 20:
60 messages = append(messages, Message{Data: types.ParseSvcCrosshairAngle(reader)})
61 case 21:
62 // TODO: SvcBspDecal
63 case 22:
64 messages = append(messages, Message{Data: types.ParseSvcSplitScreen(reader)})
65 case 23:
66 messages = append(messages, Message{Data: types.ParseSvcUserMessage(reader)})
67 case 24:
68 messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)})
69 case 25:
70 messages = append(messages, Message{Data: types.ParseSvcGameEvent(reader)})
71 case 26:
72 messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)})
73 case 27:
74 messages = append(messages, Message{Data: types.ParseSvcTempEntities(reader)})
75 case 28:
76 messages = append(messages, Message{Data: types.ParseSvcPrefetch(reader)})
77 case 29:
78 messages = append(messages, Message{Data: types.ParseSvcMenu(reader)})
79 case 30:
80 messages = append(messages, Message{Data: types.ParseSvcGameEventList(reader)})
81 case 31:
82 messages = append(messages, Message{Data: types.ParseSvcGetCvarValue(reader)})
83 case 32:
84 messages = append(messages, Message{Data: types.ParseSvcCmdKeyValues(reader)})
85 case 33:
86 messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)})
87 }
88 }
89 return messages
90}
91
92type Message struct {
93 Data any
94}
diff --git a/packets/messages/types/NetDisconnect.go b/packets/messages/types/NetDisconnect.go
deleted file mode 100644
index 8b65568..0000000
--- a/packets/messages/types/NetDisconnect.go
+++ /dev/null
@@ -1,11 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetDisconnect struct {
6 Text string
7}
8
9func ParseNetDisconnect(reader *bitreader.ReaderType) NetDisconnect {
10 return NetDisconnect{Text: reader.TryReadString()}
11}
diff --git a/packets/messages/types/NetFile.go b/packets/messages/types/NetFile.go
deleted file mode 100644
index c65873d..0000000
--- a/packets/messages/types/NetFile.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetFile struct {
6 TransferId uint32
7 FileName string
8 FileRequested bool
9}
10
11func ParseNetFile(reader *bitreader.ReaderType) NetFile {
12 return NetFile{
13 TransferId: reader.TryReadInt32(),
14 FileName: reader.TryReadString(),
15 FileRequested: reader.TryReadBool(),
16 }
17}
diff --git a/packets/messages/types/NetNop.go b/packets/messages/types/NetNop.go
deleted file mode 100644
index d0a1f7a..0000000
--- a/packets/messages/types/NetNop.go
+++ /dev/null
@@ -1,3 +0,0 @@
1package types
2
3type NetNop struct{}
diff --git a/packets/messages/types/NetSetConVar.go b/packets/messages/types/NetSetConVar.go
deleted file mode 100644
index eca05e0..0000000
--- a/packets/messages/types/NetSetConVar.go
+++ /dev/null
@@ -1,26 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetSetConVar struct {
6 ConVars []ConVar
7}
8
9type ConVar struct {
10 Name string
11 Value string
12}
13
14func ParseNetSetConVar(reader *bitreader.ReaderType) NetSetConVar {
15 length := reader.TryReadInt8()
16 convars := make([]ConVar, length)
17 for i := 0; i < int(length); i++ {
18 convars[i] = ConVar{
19 Name: reader.TryReadString(),
20 Value: reader.TryReadString(),
21 }
22 }
23 return NetSetConVar{
24 ConVars: convars,
25 }
26}
diff --git a/packets/messages/types/NetSignOnState.go b/packets/messages/types/NetSignOnState.go
deleted file mode 100644
index a8f3add..0000000
--- a/packets/messages/types/NetSignOnState.go
+++ /dev/null
@@ -1,27 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type NetSignOnState struct {
8 SignonState int8
9 SpawnCount uint32
10 NumServerPlayers uint32
11 PlayersNetworkIds []byte
12 MapNameLength uint32
13 MapName string
14}
15
16func ParseNetSignOnState(reader *bitreader.ReaderType) NetSignOnState {
17 netsignonstate := NetSignOnState{
18 SignonState: int8(reader.TryReadInt8()),
19 SpawnCount: reader.TryReadInt32(),
20 NumServerPlayers: reader.TryReadInt32(),
21 }
22 length := reader.TryReadInt32()
23 netsignonstate.PlayersNetworkIds = reader.TryReadBytesToSlice(int(length))
24 netsignonstate.MapNameLength = reader.TryReadInt32()
25 netsignonstate.MapName = reader.TryReadStringLen(int(netsignonstate.MapNameLength))
26 return netsignonstate
27}
diff --git a/packets/messages/types/NetSplitScreenUser.go b/packets/messages/types/NetSplitScreenUser.go
deleted file mode 100644
index d4d04b5..0000000
--- a/packets/messages/types/NetSplitScreenUser.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetSplitScreenUser struct {
6 PlayerSlot bool
7}
8
9func ParseNetSplitScreenUser(reader *bitreader.ReaderType) NetSplitScreenUser {
10 return NetSplitScreenUser{
11 PlayerSlot: reader.TryReadBool(),
12 }
13}
diff --git a/packets/messages/types/NetStringCmd.go b/packets/messages/types/NetStringCmd.go
deleted file mode 100644
index 1ee9f67..0000000
--- a/packets/messages/types/NetStringCmd.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetStringCmd struct {
6 Command string
7}
8
9func ParseNetStringCmd(reader *bitreader.ReaderType) NetStringCmd {
10 return NetStringCmd{
11 Command: reader.TryReadString(),
12 }
13}
diff --git a/packets/messages/types/NetTick.go b/packets/messages/types/NetTick.go
deleted file mode 100644
index 9dae14b..0000000
--- a/packets/messages/types/NetTick.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type NetTick struct {
6 Tick uint32
7 HostFrameTime float32
8 HostFrameTimeStdDeviation float32
9}
10
11func ParseNetTick(reader *bitreader.ReaderType) NetTick {
12 return NetTick{
13 Tick: reader.TryReadInt32(),
14 HostFrameTime: float32(reader.TryReadInt16()) / 1e5,
15 HostFrameTimeStdDeviation: float32(reader.TryReadInt16()) / 1e5,
16 }
17}
diff --git a/packets/messages/types/SvcClassInfo.go b/packets/messages/types/SvcClassInfo.go
deleted file mode 100644
index df17bfc..0000000
--- a/packets/messages/types/SvcClassInfo.go
+++ /dev/null
@@ -1,47 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcClassInfo struct {
8 CreateOnClient bool
9 ServerClasses []ServerClass
10}
11
12type ServerClass struct {
13 ClassId int32
14 ClassName string
15 DataTableName string
16}
17
18func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo {
19 length := reader.TryReadInt16()
20 createonclient := reader.TryReadBool()
21 var serverclasses []ServerClass
22 if !createonclient {
23 serverclasses := make([]ServerClass, length)
24 for i := 0; i < int(length); i++ {
25 id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1)
26 if err != nil {
27 panic(err)
28 }
29 serverclasses[i] = ServerClass{
30 ClassId: int32(id),
31 ClassName: reader.TryReadString(),
32 DataTableName: reader.TryReadString(),
33 }
34 }
35 }
36 return SvcClassInfo{
37 CreateOnClient: createonclient,
38 ServerClasses: serverclasses,
39 }
40}
41
42func HighestBitIndex(i uint) int {
43 var j int
44 for j = 31; j >= 0 && (i&(1<<j)) == 0; j-- {
45 }
46 return j
47}
diff --git a/packets/messages/types/SvcCmdKeyValues.go b/packets/messages/types/SvcCmdKeyValues.go
deleted file mode 100644
index 06504a2..0000000
--- a/packets/messages/types/SvcCmdKeyValues.go
+++ /dev/null
@@ -1,14 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcCmdKeyValues struct {
6 Data []byte
7}
8
9func ParseSvcCmdKeyValues(reader *bitreader.ReaderType) SvcCmdKeyValues {
10 length := reader.TryReadInt32()
11 return SvcCmdKeyValues{
12 Data: reader.TryReadBytesToSlice(int(length)),
13 }
14}
diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go
deleted file mode 100644
index 72ab1a7..0000000
--- a/packets/messages/types/SvcCreateStringTable.go
+++ /dev/null
@@ -1,34 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcCreateStringTable struct {
8 Name string
9 MaxEntries uint16
10 NumEntries uint8
11 UserDataFixedSize bool
12 UserDataSize uint16
13 UserDataSizeBits uint8
14 Flags uint8
15 StringData []byte
16}
17
18func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable {
19 svccreatestringtable := SvcCreateStringTable{
20 Name: reader.TryReadString(),
21 MaxEntries: reader.TryReadInt16(),
22 }
23 svccreatestringtable.NumEntries = uint8(reader.TryReadBits(HighestBitIndex(uint(svccreatestringtable.MaxEntries)) + 1))
24 length := reader.TryReadBits(20)
25 svccreatestringtable.UserDataFixedSize = reader.TryReadBool()
26 if svccreatestringtable.UserDataFixedSize {
27 svccreatestringtable.UserDataSize = uint16(reader.TryReadBits(12))
28 svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4))
29 }
30 svccreatestringtable.Flags = uint8(reader.TryReadBits(2))
31 svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length))
32 return svccreatestringtable
33
34}
diff --git a/packets/messages/types/SvcCrosshairAngle.go b/packets/messages/types/SvcCrosshairAngle.go
deleted file mode 100644
index 6584426..0000000
--- a/packets/messages/types/SvcCrosshairAngle.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcCrosshairAngle struct {
6 Angle []int16
7}
8
9func ParseSvcCrosshairAngle(reader *bitreader.ReaderType) SvcCrosshairAngle {
10 return SvcCrosshairAngle{
11 Angle: []int16{
12 int16(reader.TryReadInt16()),
13 int16(reader.TryReadInt16()),
14 int16(reader.TryReadInt16()),
15 },
16 }
17}
diff --git a/packets/messages/types/SvcEntityMessage.go b/packets/messages/types/SvcEntityMessage.go
deleted file mode 100644
index f4fb518..0000000
--- a/packets/messages/types/SvcEntityMessage.go
+++ /dev/null
@@ -1,20 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcEntityMessage struct {
6 EntityIndex int16
7 ClassId int16
8 Data []byte
9}
10
11func ParseSvcEntityMessage(reader *bitreader.ReaderType) SvcEntityMessage {
12 entityindex := reader.TryReadBits(11)
13 classid := reader.TryReadBits(9)
14 length := reader.TryReadBits(11)
15 return SvcEntityMessage{
16 EntityIndex: int16(entityindex),
17 ClassId: int16(classid),
18 Data: reader.TryReadBytesToSlice(int(length / 8)),
19 }
20}
diff --git a/packets/messages/types/SvcFixAngle.go b/packets/messages/types/SvcFixAngle.go
deleted file mode 100644
index d98dedd..0000000
--- a/packets/messages/types/SvcFixAngle.go
+++ /dev/null
@@ -1,21 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcFixAngle struct {
6 Relative bool
7 Angle []int16
8}
9
10func ParseSvcFixAngle(reader *bitreader.ReaderType) SvcFixAngle {
11 relative := reader.TryReadBool()
12 angles := []int16{
13 int16(reader.TryReadInt16()),
14 int16(reader.TryReadInt16()),
15 int16(reader.TryReadInt16()),
16 }
17 return SvcFixAngle{
18 Relative: relative,
19 Angle: angles,
20 }
21}
diff --git a/packets/messages/types/SvcGameEvent.go b/packets/messages/types/SvcGameEvent.go
deleted file mode 100644
index 1d6b0ea..0000000
--- a/packets/messages/types/SvcGameEvent.go
+++ /dev/null
@@ -1,15 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcGameEvent struct {
8 Data []byte
9}
10
11func ParseSvcGameEvent(reader *bitreader.ReaderType) SvcGameEvent {
12 length := reader.TryReadBits(11)
13 reader.SkipBits(int(length))
14 return SvcGameEvent{} // TODO: Parse SvcGameEvent
15}
diff --git a/packets/messages/types/SvcGameEventList.go b/packets/messages/types/SvcGameEventList.go
deleted file mode 100644
index fea0be4..0000000
--- a/packets/messages/types/SvcGameEventList.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcGameEventList struct {
6 Events int16
7 Data []byte
8}
9
10func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList {
11 events := reader.TryReadBits(9)
12 length := reader.TryReadBits(20)
13 return SvcGameEventList{
14 Events: int16(events),
15 Data: reader.TryReadBitsToSlice(int(length)),
16 }
17}
diff --git a/packets/messages/types/SvcGetCvarValue.go b/packets/messages/types/SvcGetCvarValue.go
deleted file mode 100644
index 2925da5..0000000
--- a/packets/messages/types/SvcGetCvarValue.go
+++ /dev/null
@@ -1,15 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcGetCvarValue struct {
6 Cookie string
7 CvarName string
8}
9
10func ParseSvcGetCvarValue(reader *bitreader.ReaderType) SvcGetCvarValue {
11 return SvcGetCvarValue{
12 Cookie: reader.TryReadStringLen(32),
13 CvarName: reader.TryReadString(),
14 }
15}
diff --git a/packets/messages/types/SvcMenu.go b/packets/messages/types/SvcMenu.go
deleted file mode 100644
index 312115a..0000000
--- a/packets/messages/types/SvcMenu.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcMenu struct {
6 MenuType int16
7 Data []byte
8}
9
10func ParseSvcMenu(reader *bitreader.ReaderType) SvcMenu {
11 menutype := reader.TryReadInt16()
12 length := reader.TryReadInt32()
13 return SvcMenu{
14 MenuType: int16(menutype),
15 Data: reader.TryReadBytesToSlice(int(length / 8)),
16 }
17}
diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go
deleted file mode 100644
index 9d8a8b0..0000000
--- a/packets/messages/types/SvcPacketEntities.go
+++ /dev/null
@@ -1,39 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcPacketEntities struct {
8 MaxEntries uint16
9 IsDelta bool
10 DeltaFrom int32
11 BaseLine bool
12 UpdatedEntries uint16
13 UpdateBaseline bool
14 Data []byte
15}
16
17func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities {
18 maxentries := reader.TryReadBits(11)
19 isdelta := reader.TryReadBool()
20 var deltafrom int32
21 if isdelta {
22 deltafrom = int32(reader.TryReadInt32())
23 } else {
24 deltafrom = -1
25 }
26 baseline := reader.TryReadBool()
27 updatedentries := reader.TryReadBits(11)
28 length := reader.TryReadBits(20)
29 updatebaseline := reader.TryReadBool()
30 return SvcPacketEntities{
31 MaxEntries: uint16(maxentries),
32 IsDelta: isdelta,
33 DeltaFrom: deltafrom,
34 BaseLine: baseline,
35 UpdatedEntries: uint16(updatedentries),
36 UpdateBaseline: updatebaseline,
37 Data: reader.TryReadBitsToSlice(int(length)),
38 }
39}
diff --git a/packets/messages/types/SvcPaintmapData.go b/packets/messages/types/SvcPaintmapData.go
deleted file mode 100644
index f3bd1a3..0000000
--- a/packets/messages/types/SvcPaintmapData.go
+++ /dev/null
@@ -1,14 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcPaintmapData struct {
6 Data []byte
7}
8
9func ParseSvcPaintmapData(reader *bitreader.ReaderType) SvcPaintmapData {
10 length := reader.TryReadInt32()
11 return SvcPaintmapData{
12 Data: reader.TryReadBytesToSlice(int(length / 8)),
13 }
14}
diff --git a/packets/messages/types/SvcPrefetch.go b/packets/messages/types/SvcPrefetch.go
deleted file mode 100644
index b277252..0000000
--- a/packets/messages/types/SvcPrefetch.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcPrefetch struct {
6 SoundIndex int16
7}
8
9func ParseSvcPrefetch(reader *bitreader.ReaderType) SvcPrefetch {
10 return SvcPrefetch{
11 SoundIndex: int16(reader.TryReadBits(13)),
12 }
13}
diff --git a/packets/messages/types/SvcPrint.go b/packets/messages/types/SvcPrint.go
deleted file mode 100644
index c6d91ac..0000000
--- a/packets/messages/types/SvcPrint.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcPrint struct {
6 Message string
7}
8
9func ParseSvcPrint(reader *bitreader.ReaderType) SvcPrint {
10 return SvcPrint{
11 Message: reader.TryReadString(),
12 }
13}
diff --git a/packets/messages/types/SvcSendTable.go b/packets/messages/types/SvcSendTable.go
deleted file mode 100644
index f76aadb..0000000
--- a/packets/messages/types/SvcSendTable.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSendTable struct {
6 NeedsDecoder bool
7 Length uint8
8 Props int32
9}
10
11func ParseSvcSendTable(reader *bitreader.ReaderType) SvcSendTable {
12 return SvcSendTable{
13 NeedsDecoder: reader.TryReadBool(),
14 Length: reader.TryReadInt8(),
15 }
16 // No one cares about SvcSendTable
17}
diff --git a/packets/messages/types/SvcServerInfo.go b/packets/messages/types/SvcServerInfo.go
deleted file mode 100644
index 9d2648b..0000000
--- a/packets/messages/types/SvcServerInfo.go
+++ /dev/null
@@ -1,43 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcServerInfo struct {
6 Protocol uint16
7 ServerCount uint32
8 IsHltv bool
9 IsDedicated bool
10 ClientCrc int32
11 MaxClasses uint16
12 MapCrc uint32
13 PlayerSlot uint8
14 MaxClients uint8
15 Unk uint32
16 TickInterval float32
17 COs byte
18 GameDir string
19 MapName string
20 SkyName string
21 HostName string
22}
23
24func ParseSvcServerInfo(reader *bitreader.ReaderType) SvcServerInfo {
25 return SvcServerInfo{
26 Protocol: reader.TryReadInt16(),
27 ServerCount: reader.TryReadInt32(),
28 IsHltv: reader.TryReadBool(),
29 IsDedicated: reader.TryReadBool(),
30 ClientCrc: int32(reader.TryReadInt32()),
31 MaxClasses: reader.TryReadInt16(),
32 MapCrc: reader.TryReadInt32(),
33 PlayerSlot: reader.TryReadInt8(),
34 MaxClients: reader.TryReadInt8(),
35 Unk: reader.TryReadInt32(),
36 TickInterval: reader.TryReadFloat32(),
37 COs: reader.TryReadInt8(),
38 GameDir: reader.TryReadString(),
39 MapName: reader.TryReadString(),
40 SkyName: reader.TryReadString(),
41 HostName: reader.TryReadString(),
42 }
43}
diff --git a/packets/messages/types/SvcSetPause.go b/packets/messages/types/SvcSetPause.go
deleted file mode 100644
index c71485c..0000000
--- a/packets/messages/types/SvcSetPause.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcSetPause struct {
8 Paused bool
9}
10
11func ParseSvcSetPause(reader *bitreader.ReaderType) SvcSetPause {
12 return SvcSetPause{Paused: reader.TryReadBool()}
13}
diff --git a/packets/messages/types/SvcSetView.go b/packets/messages/types/SvcSetView.go
deleted file mode 100644
index 5507eae..0000000
--- a/packets/messages/types/SvcSetView.go
+++ /dev/null
@@ -1,13 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSetView struct {
6 EntityIndex int16
7}
8
9func ParseSvcSetView(reader *bitreader.ReaderType) SvcSetView {
10 return SvcSetView{
11 EntityIndex: int16(reader.TryReadBits(11)),
12 }
13}
diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go
deleted file mode 100644
index 2dc7974..0000000
--- a/packets/messages/types/SvcSounds.go
+++ /dev/null
@@ -1,30 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSounds struct {
6 ReliableSound bool
7 Size int8
8 Data []byte
9}
10
11func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds {
12 reliablesound := reader.TryReadBool()
13 var size int8
14 var length int16
15 if reliablesound {
16 size = 1
17 } else {
18 size = int8(reader.TryReadInt8())
19 }
20 if reliablesound {
21 length = int16(reader.TryReadInt8())
22 } else {
23 length = int16(reader.TryReadInt16())
24 }
25 return SvcSounds{
26 ReliableSound: reliablesound,
27 Size: size,
28 Data: reader.TryReadBitsToSlice(int(length)),
29 }
30}
diff --git a/packets/messages/types/SvcSplitScreen.go b/packets/messages/types/SvcSplitScreen.go
deleted file mode 100644
index 6727558..0000000
--- a/packets/messages/types/SvcSplitScreen.go
+++ /dev/null
@@ -1,17 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcSplitScreen struct {
6 Unk bool
7 Data []byte
8}
9
10func ParseSvcSplitScreen(reader *bitreader.ReaderType) SvcSplitScreen {
11 unk := reader.TryReadBool()
12 length := reader.TryReadBits(11)
13 return SvcSplitScreen{
14 Unk: unk,
15 Data: reader.TryReadBytesToSlice(int(length / 8)),
16 }
17}
diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go
deleted file mode 100644
index 3bfae0c..0000000
--- a/packets/messages/types/SvcTempEntities.go
+++ /dev/null
@@ -1,20 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcTempEntities struct {
8 NumEntries uint8
9 Data []byte
10}
11
12func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities {
13 numentries := reader.TryReadInt8()
14 length := reader.TryReadBits(17)
15 //reader.SkipBits(int(length)) // TODO: Read data properly
16 return SvcTempEntities{
17 NumEntries: numentries,
18 Data: reader.TryReadBitsToSlice(int(length)),
19 }
20}
diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go
deleted file mode 100644
index 9f178a5..0000000
--- a/packets/messages/types/SvcUpdateStringTable.go
+++ /dev/null
@@ -1,21 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcUpdateStringTable struct {
6 TableId int8
7 NumChangedEntries int16
8 Data []byte
9}
10
11func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTable {
12 svcupdatestringtable := SvcUpdateStringTable{
13 TableId: int8(reader.TryReadBits(5)),
14 }
15 if reader.TryReadBool() {
16 svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16())
17 }
18 length := reader.TryReadBits(20)
19 svcupdatestringtable.Data = reader.TryReadBitsToSlice(int(length))
20 return svcupdatestringtable
21}
diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go
deleted file mode 100644
index c7b0566..0000000
--- a/packets/messages/types/SvcUserMessage.go
+++ /dev/null
@@ -1,19 +0,0 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcUserMessage struct {
8 MsgType uint8
9 Data []byte
10}
11
12func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage {
13 msgtype := reader.TryReadInt8()
14 length := reader.TryReadBits(12)
15 return SvcUserMessage{
16 MsgType: msgtype,
17 Data: reader.TryReadBitsToSlice(int(length)),
18 }
19}
diff --git a/packets/messages/types/SvcVoiceData.go b/packets/messages/types/SvcVoiceData.go
deleted file mode 100644
index f99db38..0000000
--- a/packets/messages/types/SvcVoiceData.go
+++ /dev/null
@@ -1,19 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcVoiceData struct {
6 Client int8
7 Proximity int8
8 Data []byte
9}
10
11func ParseSvcVoiceData(reader *bitreader.ReaderType) SvcVoiceData {
12 svcvoicedata := SvcVoiceData{
13 Client: int8(reader.TryReadInt8()),
14 Proximity: int8(reader.TryReadInt8()),
15 }
16 length := reader.TryReadInt16()
17 svcvoicedata.Data = reader.TryReadBytesToSlice(int(length / 8))
18 return svcvoicedata
19}
diff --git a/packets/messages/types/SvcVoiceInit.go b/packets/messages/types/SvcVoiceInit.go
deleted file mode 100644
index 3e18a7b..0000000
--- a/packets/messages/types/SvcVoiceInit.go
+++ /dev/null
@@ -1,20 +0,0 @@
1package types
2
3import "github.com/pektezol/bitreader"
4
5type SvcVoiceInit struct {
6 Codec string
7 Quality uint8
8 Unk float32
9}
10
11func ParseSvcVoiceInit(reader *bitreader.ReaderType) SvcVoiceInit {
12 svcvoiceinit := SvcVoiceInit{
13 Codec: reader.TryReadString(),
14 Quality: reader.TryReadInt8(),
15 }
16 if svcvoiceinit.Quality == 255 {
17 svcvoiceinit.Unk = reader.TryReadFloat32()
18 }
19 return svcvoiceinit
20}
diff --git a/packets/packet.go b/packets/packet.go
deleted file mode 100644
index 8f4a262..0000000
--- a/packets/packet.go
+++ /dev/null
@@ -1,87 +0,0 @@
1package packets
2
3import (
4 "fmt"
5
6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/packets/classes"
8 "github.com/pektezol/demoparser/packets/messages"
9)
10
11const MSSC = 2
12
13func ParsePacket(reader *bitreader.ReaderType) (status int) {
14 messageType := reader.TryReadInt8()
15 messageTick := reader.TryReadInt32()
16 messageSlot := reader.TryReadInt8()
17 _ = messageSlot
18 switch messageType {
19 case 1:
20 signOn := SignOn{
21 PacketInfo: classes.ParseCmdInfo(reader, MSSC),
22 InSequence: int32(reader.TryReadInt32()),
23 OutSequence: int32(reader.TryReadInt32()),
24 }
25 size := int(reader.TryReadInt32())
26 signOn.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size))
27 // fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn)
28 return 1
29 case 2:
30 packet := Packet{
31 PacketInfo: classes.ParseCmdInfo(reader, MSSC),
32 InSequence: int32(reader.TryReadInt32()),
33 OutSequence: int32(reader.TryReadInt32()),
34 }
35 size := int(reader.TryReadInt32())
36 packet.Data = messages.ParseMessage(reader.TryReadBytesToSlice(size))
37 // fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet)
38 return 2
39 case 3:
40 syncTick := SyncTick{}
41 fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick)
42 return 3
43 case 4:
44 size := int(reader.TryReadInt32())
45 var consoleCmd ConsoleCmd
46 consoleCmd.Data = reader.TryReadStringLen(size)
47 // fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data)
48 return 4
49 case 5: // TODO: UserCmd - Buttons
50 userCmd := UserCmd{
51 Cmd: int32(reader.TryReadInt32()),
52 }
53 size := int(reader.TryReadInt32())
54 userCmd.Data = classes.ParseUserCmdInfo(reader.TryReadBytesToSlice(size))
55 // fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd)
56 return 5
57 case 6: // TODO: DataTables
58 // datatables := DataTables{
59 // Size: int32(reader.TryReadInt32()),
60 // }
61 size := int(reader.TryReadInt32())
62 reader.SkipBytes(size)
63 // datatables.Data = classes.ParseDataTable(reader.TryReadBytesToSlice(int(datatables.Size)))
64 // fmt.Printf("[%d] (%d) DataTables: %v\n", messageTick, messageType, datatables)
65 return 6
66 case 7:
67 stop := Stop{
68 RemainingData: nil,
69 }
70 fmt.Printf("[%d] (%d) Stop: %v\n", messageTick, messageType, stop)
71 return 7
72 case 8: // TODO: CustomData
73 reader.SkipBytes(4)
74 size := int(reader.TryReadInt32())
75 reader.SkipBytes(size)
76 // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType)
77 return 8
78 case 9: // TODO: StringTables - Data
79 var stringTables StringTables
80 size := int(reader.TryReadInt32())
81 stringTables.Data = classes.ParseStringTable(reader.TryReadBytesToSlice(size))
82 // fmt.Printf("[%d] (%d) StringTables: %v\n", messageTick, messageType, stringTables)
83 return 9
84 default:
85 return 0
86 }
87}
diff --git a/packets/types.go b/packets/types.go
deleted file mode 100644
index 41d633a..0000000
--- a/packets/types.go
+++ /dev/null
@@ -1,62 +0,0 @@
1package packets
2
3import (
4 "github.com/pektezol/demoparser/packets/classes"
5 "github.com/pektezol/demoparser/packets/messages"
6)
7
8type Header struct {
9 DemoFileStamp string
10 DemoProtocol uint32
11 NetworkProtocol uint32
12 ServerName string
13 ClientName string
14 MapName string
15 GameDirectory string
16 PlaybackTime float32
17 PlaybackTicks int32
18 PlaybackFrames int32
19 SignOnLength uint32
20}
21
22type SignOn struct {
23 PacketInfo []classes.CmdInfo
24 InSequence int32
25 OutSequence int32
26 Data []messages.Message
27}
28
29type Packet struct {
30 PacketInfo []classes.CmdInfo
31 InSequence int32
32 OutSequence int32
33 Data []messages.Message
34}
35
36type SyncTick struct{}
37
38type ConsoleCmd struct {
39 Data string
40}
41
42type UserCmd struct {
43 Cmd int32
44 Data classes.UserCmdInfo
45}
46
47type DataTables struct {
48 Data classes.DataTable
49}
50
51type Stop struct {
52 RemainingData []byte
53}
54
55type CustomData struct {
56 Unknown int32
57 Data []byte
58}
59
60type StringTables struct {
61 Data []classes.StringTable
62}