From 833a46544df2ed2a7afdba08ebfe02ed7741d86a Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 8 Nov 2022 22:48:20 +0300 Subject: net/svc messages --- packets/messages/message.go | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packets/messages/message.go (limited to 'packets/messages/message.go') 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 @@ +package messages + +import ( + "bytes" + + "github.com/pektezol/bitreader" + "github.com/pektezol/demoparser/packets/messages/types" +) + +func ParseMessage(data []byte) []Message { + reader := bitreader.Reader(bytes.NewReader(data), true) + var messages []Message + for { + messageType, err := reader.ReadBits(6) + if err != nil { + break + } + switch messageType { + case 0x00: + messages = append(messages, Message{Data: types.NetNop{}}) + case 0x01: + messages = append(messages, Message{Data: types.ParseNetDisconnect(reader)}) + case 0x02: + messages = append(messages, Message{Data: types.ParseNetFile(reader)}) + case 0x03: + messages = append(messages, Message{Data: types.ParseNetSplitScreenUser(reader)}) + case 0x04: + messages = append(messages, Message{Data: types.ParseNetTick(reader)}) + case 0x05: + messages = append(messages, Message{Data: types.ParseNetStringCmd(reader)}) + case 0x06: + messages = append(messages, Message{Data: types.ParseNetSetConVar(reader)}) + case 0x07: + messages = append(messages, Message{Data: types.ParseNetSignOnState(reader)}) + case 0x08: + messages = append(messages, Message{Data: types.ParseSvcServerInfo(reader)}) + case 0x09: + messages = append(messages, Message{Data: types.ParseSvcSendTable(reader)}) + case 0x10: + messages = append(messages, Message{Data: types.ParseSvcClassInfo(reader)}) + case 0x11: + messages = append(messages, Message{Data: types.ParseSvcSetPause(reader)}) + } + } + return messages +} + +type Message struct { + Data any +} -- cgit v1.2.3