aboutsummaryrefslogtreecommitdiff
path: root/packets/messages/message.go
diff options
context:
space:
mode:
Diffstat (limited to 'packets/messages/message.go')
-rw-r--r--packets/messages/message.go50
1 files changed, 50 insertions, 0 deletions
diff --git a/packets/messages/message.go b/packets/messages/message.go
new file mode 100644
index 0000000..c508bfa
--- /dev/null
+++ b/packets/messages/message.go
@@ -0,0 +1,50 @@
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 0x00:
20 messages = append(messages, Message{Data: types.NetNop{}})
21 case 0x01:
22 messages = append(messages, Message{Data: types.ParseNetDisconnect(reader)})
23 case 0x02:
24 messages = append(messages, Message{Data: types.ParseNetFile(reader)})
25 case 0x03:
26 messages = append(messages, Message{Data: types.ParseNetSplitScreenUser(reader)})
27 case 0x04:
28 messages = append(messages, Message{Data: types.ParseNetTick(reader)})
29 case 0x05:
30 messages = append(messages, Message{Data: types.ParseNetStringCmd(reader)})
31 case 0x06:
32 messages = append(messages, Message{Data: types.ParseNetSetConVar(reader)})
33 case 0x07:
34 messages = append(messages, Message{Data: types.ParseNetSignOnState(reader)})
35 case 0x08:
36 messages = append(messages, Message{Data: types.ParseSvcServerInfo(reader)})
37 case 0x09:
38 messages = append(messages, Message{Data: types.ParseSvcSendTable(reader)})
39 case 0x10:
40 messages = append(messages, Message{Data: types.ParseSvcClassInfo(reader)})
41 case 0x11:
42 messages = append(messages, Message{Data: types.ParseSvcSetPause(reader)})
43 }
44 }
45 return messages
46}
47
48type Message struct {
49 Data any
50}