From 82871ba1bac1d62f69e1933b66659e62d2e5e063 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Tue, 12 Sep 2023 20:53:09 +0300 Subject: another rewrite, v1.0.0 --- packets/messages/message.go | 94 -------------------------- packets/messages/types/NetDisconnect.go | 11 --- packets/messages/types/NetFile.go | 17 ----- packets/messages/types/NetNop.go | 3 - packets/messages/types/NetSetConVar.go | 26 ------- packets/messages/types/NetSignOnState.go | 27 -------- packets/messages/types/NetSplitScreenUser.go | 13 ---- packets/messages/types/NetStringCmd.go | 13 ---- packets/messages/types/NetTick.go | 17 ----- packets/messages/types/SvcClassInfo.go | 47 ------------- packets/messages/types/SvcCmdKeyValues.go | 14 ---- packets/messages/types/SvcCreateStringTable.go | 34 ---------- packets/messages/types/SvcCrosshairAngle.go | 17 ----- packets/messages/types/SvcEntityMessage.go | 20 ------ packets/messages/types/SvcFixAngle.go | 21 ------ packets/messages/types/SvcGameEvent.go | 15 ---- packets/messages/types/SvcGameEventList.go | 17 ----- packets/messages/types/SvcGetCvarValue.go | 15 ---- packets/messages/types/SvcMenu.go | 17 ----- packets/messages/types/SvcPacketEntities.go | 39 ----------- packets/messages/types/SvcPaintmapData.go | 14 ---- packets/messages/types/SvcPrefetch.go | 13 ---- packets/messages/types/SvcPrint.go | 13 ---- packets/messages/types/SvcSendTable.go | 17 ----- packets/messages/types/SvcServerInfo.go | 43 ------------ packets/messages/types/SvcSetPause.go | 13 ---- packets/messages/types/SvcSetView.go | 13 ---- packets/messages/types/SvcSounds.go | 30 -------- packets/messages/types/SvcSplitScreen.go | 17 ----- packets/messages/types/SvcTempEntities.go | 20 ------ packets/messages/types/SvcUpdateStringTable.go | 21 ------ packets/messages/types/SvcUserMessage.go | 19 ------ packets/messages/types/SvcVoiceData.go | 19 ------ packets/messages/types/SvcVoiceInit.go | 20 ------ 34 files changed, 749 deletions(-) delete mode 100644 packets/messages/message.go delete mode 100644 packets/messages/types/NetDisconnect.go delete mode 100644 packets/messages/types/NetFile.go delete mode 100644 packets/messages/types/NetNop.go delete mode 100644 packets/messages/types/NetSetConVar.go delete mode 100644 packets/messages/types/NetSignOnState.go delete mode 100644 packets/messages/types/NetSplitScreenUser.go delete mode 100644 packets/messages/types/NetStringCmd.go delete mode 100644 packets/messages/types/NetTick.go delete mode 100644 packets/messages/types/SvcClassInfo.go delete mode 100644 packets/messages/types/SvcCmdKeyValues.go delete mode 100644 packets/messages/types/SvcCreateStringTable.go delete mode 100644 packets/messages/types/SvcCrosshairAngle.go delete mode 100644 packets/messages/types/SvcEntityMessage.go delete mode 100644 packets/messages/types/SvcFixAngle.go delete mode 100644 packets/messages/types/SvcGameEvent.go delete mode 100644 packets/messages/types/SvcGameEventList.go delete mode 100644 packets/messages/types/SvcGetCvarValue.go delete mode 100644 packets/messages/types/SvcMenu.go delete mode 100644 packets/messages/types/SvcPacketEntities.go delete mode 100644 packets/messages/types/SvcPaintmapData.go delete mode 100644 packets/messages/types/SvcPrefetch.go delete mode 100644 packets/messages/types/SvcPrint.go delete mode 100644 packets/messages/types/SvcSendTable.go delete mode 100644 packets/messages/types/SvcServerInfo.go delete mode 100644 packets/messages/types/SvcSetPause.go delete mode 100644 packets/messages/types/SvcSetView.go delete mode 100644 packets/messages/types/SvcSounds.go delete mode 100644 packets/messages/types/SvcSplitScreen.go delete mode 100644 packets/messages/types/SvcTempEntities.go delete mode 100644 packets/messages/types/SvcUpdateStringTable.go delete mode 100644 packets/messages/types/SvcUserMessage.go delete mode 100644 packets/messages/types/SvcVoiceData.go delete mode 100644 packets/messages/types/SvcVoiceInit.go (limited to 'packets/messages') 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 @@ -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 0: - messages = append(messages, Message{Data: types.NetNop{}}) - case 1: - messages = append(messages, Message{Data: types.ParseNetDisconnect(reader)}) - case 2: - messages = append(messages, Message{Data: types.ParseNetFile(reader)}) - case 3: - messages = append(messages, Message{Data: types.ParseNetSplitScreenUser(reader)}) - case 4: - messages = append(messages, Message{Data: types.ParseNetTick(reader)}) - case 5: - messages = append(messages, Message{Data: types.ParseNetStringCmd(reader)}) - case 6: - messages = append(messages, Message{Data: types.ParseNetSetConVar(reader)}) - case 7: - messages = append(messages, Message{Data: types.ParseNetSignOnState(reader)}) - case 8: - messages = append(messages, Message{Data: types.ParseSvcServerInfo(reader)}) - case 9: - messages = append(messages, Message{Data: types.ParseSvcSendTable(reader)}) - case 10: - messages = append(messages, Message{Data: types.ParseSvcClassInfo(reader)}) - case 11: - messages = append(messages, Message{Data: types.ParseSvcSetPause(reader)}) - case 12: - messages = append(messages, Message{Data: types.ParseSvcCreateStringTable(reader)}) - case 13: - messages = append(messages, Message{Data: types.ParseSvcUpdateStringTable(reader)}) - case 14: - messages = append(messages, Message{Data: types.ParseSvcVoiceInit(reader)}) - case 15: - messages = append(messages, Message{Data: types.ParseSvcVoiceData(reader)}) - case 16: - messages = append(messages, Message{Data: types.ParseSvcPrint(reader)}) - case 17: - messages = append(messages, Message{Data: types.ParseSvcSounds(reader)}) - case 18: - messages = append(messages, Message{Data: types.ParseSvcSetView(reader)}) - case 19: - messages = append(messages, Message{Data: types.ParseSvcFixAngle(reader)}) - case 20: - messages = append(messages, Message{Data: types.ParseSvcCrosshairAngle(reader)}) - case 21: - // TODO: SvcBspDecal - case 22: - messages = append(messages, Message{Data: types.ParseSvcSplitScreen(reader)}) - case 23: - messages = append(messages, Message{Data: types.ParseSvcUserMessage(reader)}) - case 24: - messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)}) - case 25: - messages = append(messages, Message{Data: types.ParseSvcGameEvent(reader)}) - case 26: - messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)}) - case 27: - messages = append(messages, Message{Data: types.ParseSvcTempEntities(reader)}) - case 28: - messages = append(messages, Message{Data: types.ParseSvcPrefetch(reader)}) - case 29: - messages = append(messages, Message{Data: types.ParseSvcMenu(reader)}) - case 30: - messages = append(messages, Message{Data: types.ParseSvcGameEventList(reader)}) - case 31: - messages = append(messages, Message{Data: types.ParseSvcGetCvarValue(reader)}) - case 32: - messages = append(messages, Message{Data: types.ParseSvcCmdKeyValues(reader)}) - case 33: - messages = append(messages, Message{Data: types.ParseSvcPaintmapData(reader)}) - } - } - return messages -} - -type Message struct { - Data any -} 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetDisconnect struct { - Text string -} - -func ParseNetDisconnect(reader *bitreader.ReaderType) NetDisconnect { - return NetDisconnect{Text: reader.TryReadString()} -} 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetFile struct { - TransferId uint32 - FileName string - FileRequested bool -} - -func ParseNetFile(reader *bitreader.ReaderType) NetFile { - return NetFile{ - TransferId: reader.TryReadInt32(), - FileName: reader.TryReadString(), - FileRequested: reader.TryReadBool(), - } -} 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 @@ -package types - -type 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetSetConVar struct { - ConVars []ConVar -} - -type ConVar struct { - Name string - Value string -} - -func ParseNetSetConVar(reader *bitreader.ReaderType) NetSetConVar { - length := reader.TryReadInt8() - convars := make([]ConVar, length) - for i := 0; i < int(length); i++ { - convars[i] = ConVar{ - Name: reader.TryReadString(), - Value: reader.TryReadString(), - } - } - return NetSetConVar{ - ConVars: convars, - } -} 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 @@ -package types - -import ( - "github.com/pektezol/bitreader" -) - -type NetSignOnState struct { - SignonState int8 - SpawnCount uint32 - NumServerPlayers uint32 - PlayersNetworkIds []byte - MapNameLength uint32 - MapName string -} - -func ParseNetSignOnState(reader *bitreader.ReaderType) NetSignOnState { - netsignonstate := NetSignOnState{ - SignonState: int8(reader.TryReadInt8()), - SpawnCount: reader.TryReadInt32(), - NumServerPlayers: reader.TryReadInt32(), - } - length := reader.TryReadInt32() - netsignonstate.PlayersNetworkIds = reader.TryReadBytesToSlice(int(length)) - netsignonstate.MapNameLength = reader.TryReadInt32() - netsignonstate.MapName = reader.TryReadStringLen(int(netsignonstate.MapNameLength)) - return netsignonstate -} 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetSplitScreenUser struct { - PlayerSlot bool -} - -func ParseNetSplitScreenUser(reader *bitreader.ReaderType) NetSplitScreenUser { - return NetSplitScreenUser{ - PlayerSlot: reader.TryReadBool(), - } -} 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetStringCmd struct { - Command string -} - -func ParseNetStringCmd(reader *bitreader.ReaderType) NetStringCmd { - return NetStringCmd{ - Command: reader.TryReadString(), - } -} 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 @@ -package types - -import "github.com/pektezol/bitreader" - -type NetTick struct { - Tick uint32 - HostFrameTime float32 - HostFrameTimeStdDeviation float32 -} - -func ParseNetTick(reader *bitreader.ReaderType) NetTick { - return NetTick{ - Tick: reader.TryReadInt32(), - HostFrameTime: float32(reader.TryReadInt16()) / 1e5, - HostFrameTimeStdDeviation: float32(reader.TryReadInt16()) / 1e5, - } -} 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 @@ -package types - -import ( - "github.com/pektezol/bitreader" -) - -type SvcClassInfo struct { - CreateOnClient bool - ServerClasses []ServerClass -} - -type ServerClass struct { - ClassId int32 - ClassName string - DataTableName string -} - -func ParseSvcClassInfo(reader *bitreader.ReaderType) SvcClassInfo { - length := reader.TryReadInt16() - createonclient := reader.TryReadBool() - var serverclasses []ServerClass - if !createonclient { - serverclasses := make([]ServerClass, length) - for i := 0; i < int(length); i++ { - id, err := reader.ReadBits(HighestBitIndex(uint(length)) + 1) - if err != nil { - panic(err) - } - serverclasses[i] = ServerClass{ - ClassId: int32(id), - ClassName: reader.TryReadString(), - DataTableName: reader.TryReadString(), - } - } - } - return SvcClassInfo{ - CreateOnClient: createonclient, - ServerClasses: serverclasses, - } -} - -func HighestBitIndex(i uint) int { - var j int - for j = 31; j >= 0 && (i&(1<