From 2f8c92f261586f68a976efce0cfcdd0401f402e0 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Mon, 6 Nov 2023 18:37:11 +0300 Subject: dont try to understand it, feel it --- pkg/messages/messages.go | 83 ------------------------------ pkg/messages/types/netDisconnect.go | 17 ------ pkg/messages/types/netFile.go | 44 ---------------- pkg/messages/types/netNop.go | 12 ----- pkg/messages/types/netSetConVar.go | 33 ------------ pkg/messages/types/netSignOnState.go | 73 -------------------------- pkg/messages/types/netSplitScreenUser.go | 17 ------ pkg/messages/types/netStringCmd.go | 17 ------ pkg/messages/types/netTick.go | 21 -------- pkg/messages/types/svcBspDecal.go | 62 ---------------------- pkg/messages/types/svcClassInfo.go | 41 --------------- pkg/messages/types/svcCmdKeyValues.go | 19 ------- pkg/messages/types/svcCreateStringTable.go | 37 ------------- pkg/messages/types/svcCrosshairAngle.go | 27 ---------- pkg/messages/types/svcEntityMessage.go | 23 --------- pkg/messages/types/svcFixAngle.go | 29 ----------- pkg/messages/types/svcGameEvent.go | 19 ------- pkg/messages/types/svcGameEventList.go | 24 --------- pkg/messages/types/svcGetCvarValue.go | 19 ------- pkg/messages/types/svcMenu.go | 21 -------- pkg/messages/types/svcPacketEntities.go | 35 ------------- pkg/messages/types/svcPaintmapData.go | 19 ------- pkg/messages/types/svcPrefetch.go | 17 ------ pkg/messages/types/svcPrint.go | 18 ------- pkg/messages/types/svcSendTable.go | 21 -------- pkg/messages/types/svcServerInfo.go | 47 ----------------- pkg/messages/types/svcSetPause.go | 17 ------ pkg/messages/types/svcSetView.go | 17 ------ pkg/messages/types/svcSounds.go | 28 ---------- pkg/messages/types/svcSplitScreen.go | 21 -------- pkg/messages/types/svcTempEntities.go | 21 -------- pkg/messages/types/svcUpdateStringTable.go | 25 --------- pkg/messages/types/svcUserMessage.go | 41 --------------- pkg/messages/types/svcVoiceData.go | 25 --------- pkg/messages/types/svcVoiceInit.go | 29 ----------- 35 files changed, 1019 deletions(-) delete mode 100644 pkg/messages/messages.go delete mode 100644 pkg/messages/types/netDisconnect.go delete mode 100644 pkg/messages/types/netFile.go delete mode 100644 pkg/messages/types/netNop.go delete mode 100644 pkg/messages/types/netSetConVar.go delete mode 100644 pkg/messages/types/netSignOnState.go delete mode 100644 pkg/messages/types/netSplitScreenUser.go delete mode 100644 pkg/messages/types/netStringCmd.go delete mode 100644 pkg/messages/types/netTick.go delete mode 100644 pkg/messages/types/svcBspDecal.go delete mode 100644 pkg/messages/types/svcClassInfo.go delete mode 100644 pkg/messages/types/svcCmdKeyValues.go delete mode 100644 pkg/messages/types/svcCreateStringTable.go delete mode 100644 pkg/messages/types/svcCrosshairAngle.go delete mode 100644 pkg/messages/types/svcEntityMessage.go delete mode 100644 pkg/messages/types/svcFixAngle.go delete mode 100644 pkg/messages/types/svcGameEvent.go delete mode 100644 pkg/messages/types/svcGameEventList.go delete mode 100644 pkg/messages/types/svcGetCvarValue.go delete mode 100644 pkg/messages/types/svcMenu.go delete mode 100644 pkg/messages/types/svcPacketEntities.go delete mode 100644 pkg/messages/types/svcPaintmapData.go delete mode 100644 pkg/messages/types/svcPrefetch.go delete mode 100644 pkg/messages/types/svcPrint.go delete mode 100644 pkg/messages/types/svcSendTable.go delete mode 100644 pkg/messages/types/svcServerInfo.go delete mode 100644 pkg/messages/types/svcSetPause.go delete mode 100644 pkg/messages/types/svcSetView.go delete mode 100644 pkg/messages/types/svcSounds.go delete mode 100644 pkg/messages/types/svcSplitScreen.go delete mode 100644 pkg/messages/types/svcTempEntities.go delete mode 100644 pkg/messages/types/svcUpdateStringTable.go delete mode 100644 pkg/messages/types/svcUserMessage.go delete mode 100644 pkg/messages/types/svcVoiceData.go delete mode 100644 pkg/messages/types/svcVoiceInit.go (limited to 'pkg/messages') diff --git a/pkg/messages/messages.go b/pkg/messages/messages.go deleted file mode 100644 index 9b2422f..0000000 --- a/pkg/messages/messages.go +++ /dev/null @@ -1,83 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" - messages "github.com/pektezol/demoparser/pkg/messages/types" -) - -func ParseMessages(messageType uint64, reader *bitreader.Reader) any { - var messageData any - switch messageType { - case 0: - messageData = messages.ParseNetNop(reader) - case 1: - messageData = messages.ParseNetDisconnect(reader) - case 2: - messageData = messages.ParseNetFile(reader) - case 3: - messageData = messages.ParseNetSplitScreenUser(reader) - case 4: - messageData = messages.ParseNetTick(reader) - case 5: - messageData = messages.ParseNetStringCmd(reader) - case 6: - messageData = messages.ParseNetSetConVar(reader) - case 7: - messageData = messages.ParseNetSignOnState(reader) - case 8: - messageData = messages.ParseSvcServerInfo(reader) - case 9: - messageData = messages.ParseSvcSendTable(reader) - case 10: - messageData = messages.ParseSvcClassInfo(reader) - case 11: - messageData = messages.ParseSvcSetPause(reader) - case 12: - messageData = messages.ParseSvcCreateStringTable(reader) // TODO: - case 13: - messageData = messages.ParseSvcUpdateStringTable(reader) // TODO: - case 14: - messageData = messages.ParseSvcVoiceInit(reader) - case 15: - messageData = messages.ParseSvcVoiceData(reader) - case 16: - messageData = messages.ParseSvcPrint(reader) - case 17: - messageData = messages.ParseSvcSounds(reader) // TODO: - case 18: - messageData = messages.ParseSvcSetView(reader) - case 19: - messageData = messages.ParseSvcFixAngle(reader) - case 20: - messageData = messages.ParseSvcCrosshairAngle(reader) - case 21: - messageData = messages.ParseSvcBspDecal(reader) // untested - case 22: - messageData = messages.ParseSvcSplitScreen(reader) // skipped - case 23: - messageData = messages.ParseSvcUserMessage(reader) // TODO: - case 24: - messageData = messages.ParseSvcEntityMessage(reader) // skipped - case 25: - messageData = messages.ParseSvcGameEvent(reader) // TODO: - case 26: - messageData = messages.ParseSvcPacketEntities(reader) // TODO: - case 27: - messageData = messages.ParseSvcTempEntities(reader) // skipped - case 28: - messageData = messages.ParseSvcPrefetch(reader) - case 29: - messageData = messages.ParseSvcMenu(reader) // skipped - case 30: - messageData = messages.ParseSvcGameEventList(reader) // TODO: - case 31: - messageData = messages.ParseSvcGetCvarValue(reader) - case 32: - messageData = messages.ParseSvcCmdKeyValues(reader) - case 33: - messageData = messages.ParseSvcPaintmapData(reader) - default: - return nil - } - return messageData -} diff --git a/pkg/messages/types/netDisconnect.go b/pkg/messages/types/netDisconnect.go deleted file mode 100644 index 10a8b05..0000000 --- a/pkg/messages/types/netDisconnect.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetDisconnect struct { - Text string -} - -func ParseNetDisconnect(reader *bitreader.Reader) NetDisconnect { - netDisconnect := NetDisconnect{ - Text: reader.TryReadString(), - } - - return netDisconnect -} diff --git a/pkg/messages/types/netFile.go b/pkg/messages/types/netFile.go deleted file mode 100644 index fc65229..0000000 --- a/pkg/messages/types/netFile.go +++ /dev/null @@ -1,44 +0,0 @@ -package messages - -import ( - "fmt" - - "github.com/pektezol/bitreader" -) - -type NetFile struct { - TransferId uint32 - FileName string - FileFlags string -} - -type NetFileFlags int - -const ( - ENetFileFlagsNone NetFileFlags = 0 - ENetFileFlagsFileRequested NetFileFlags = 1 - ENetFileFlagsUnknown NetFileFlags = 1 << 1 -) - -func (netFileFlags NetFileFlags) String() string { - switch netFileFlags { - case ENetFileFlagsNone: - return "None" - case ENetFileFlagsFileRequested: - return "FileRequested" - case ENetFileFlagsUnknown: - return "Unknown" - default: - return fmt.Sprintf("%d", int(netFileFlags)) - } -} - -func ParseNetFile(reader *bitreader.Reader) NetFile { - netFile := NetFile{ - TransferId: reader.TryReadUInt32(), - FileName: reader.TryReadString(), - FileFlags: NetFileFlags(reader.TryReadBits(2)).String(), - } - - return netFile -} diff --git a/pkg/messages/types/netNop.go b/pkg/messages/types/netNop.go deleted file mode 100644 index 826da6b..0000000 --- a/pkg/messages/types/netNop.go +++ /dev/null @@ -1,12 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetNop struct{} - -func ParseNetNop(reader *bitreader.Reader) NetNop { - - return NetNop{} -} diff --git a/pkg/messages/types/netSetConVar.go b/pkg/messages/types/netSetConVar.go deleted file mode 100644 index 03e9e0d..0000000 --- a/pkg/messages/types/netSetConVar.go +++ /dev/null @@ -1,33 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetSetConVar struct { - Length uint8 - ConVars []conVar -} - -type conVar struct { - Name string - Value string -} - -func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { - length := reader.TryReadUInt8() - convars := []conVar{} - - for count := 0; count < int(length); count++ { - convar := conVar{ - Name: reader.TryReadString(), - Value: reader.TryReadString(), - } - - convars = append(convars, convar) - } - return NetSetConVar{ - Length: length, - ConVars: convars, - } -} diff --git a/pkg/messages/types/netSignOnState.go b/pkg/messages/types/netSignOnState.go deleted file mode 100644 index 65e17a4..0000000 --- a/pkg/messages/types/netSignOnState.go +++ /dev/null @@ -1,73 +0,0 @@ -package messages - -import ( - "fmt" - - "github.com/pektezol/bitreader" -) - -type NetSignOnState struct { - SignOnState string - SpawnCount int32 - NumServerPlayers uint32 - IdsLength uint32 - PlayersNetworksIds []byte - MapNameLength uint32 - MapName string -} - -type SignOnState int - -const ( - ESignOnStateNone SignOnState = iota // no state yet, about to connect - ESignOnStateChallenge // client challenging server, all OOB packets - ESignOnStateConnected // client is connected to server, netchans ready - ESignOnStateNew // just got server info and string tables - ESignOnStatePreSpawn // received signon buggers - ESignOnStateSpawn // ready to receive entity packets - ESignOnStateFull // we are fully connected, first non-delta packet received - ESignOnStateChangeLevel // server is changing level, please wait -) - -func (signOnState SignOnState) String() string { - switch signOnState { - case ESignOnStateNone: - return "None" - case ESignOnStateChallenge: - return "Challenge" - case ESignOnStateConnected: - return "Connected" - case ESignOnStateNew: - return "New" - case ESignOnStatePreSpawn: - return "PreSpawn" - case ESignOnStateSpawn: - return "Spawn" - case ESignOnStateFull: - return "Full" - case ESignOnStateChangeLevel: - return "ChangeLevel" - default: - return fmt.Sprintf("%d", int(signOnState)) - } -} - -func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { - netSignOnState := NetSignOnState{ - SignOnState: SignOnState(reader.TryReadUInt8()).String(), - SpawnCount: reader.TryReadSInt32(), - NumServerPlayers: reader.TryReadUInt32(), - IdsLength: reader.TryReadUInt32(), - } - - if netSignOnState.IdsLength > 0 { - netSignOnState.PlayersNetworksIds = reader.TryReadBytesToSlice(uint64(netSignOnState.IdsLength)) - - } - netSignOnState.MapNameLength = reader.TryReadUInt32() - if netSignOnState.MapNameLength > 0 { - netSignOnState.MapName = reader.TryReadStringLength(uint64(netSignOnState.MapNameLength)) - - } - return netSignOnState -} diff --git a/pkg/messages/types/netSplitScreenUser.go b/pkg/messages/types/netSplitScreenUser.go deleted file mode 100644 index 8b14f63..0000000 --- a/pkg/messages/types/netSplitScreenUser.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetSplitScreenUser struct { - Slot bool -} - -func ParseNetSplitScreenUser(reader *bitreader.Reader) NetSplitScreenUser { - netSplitScreenUser := NetSplitScreenUser{ - Slot: reader.TryReadBool(), - } - - return netSplitScreenUser -} diff --git a/pkg/messages/types/netStringCmd.go b/pkg/messages/types/netStringCmd.go deleted file mode 100644 index 2f7e830..0000000 --- a/pkg/messages/types/netStringCmd.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetStringCmd struct { - Command string -} - -func ParseNetStringCmd(reader *bitreader.Reader) NetStringCmd { - netStringCmd := NetStringCmd{ - Command: reader.TryReadString(), - } - - return netStringCmd -} diff --git a/pkg/messages/types/netTick.go b/pkg/messages/types/netTick.go deleted file mode 100644 index 49e997e..0000000 --- a/pkg/messages/types/netTick.go +++ /dev/null @@ -1,21 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type NetTick struct { - Tick uint32 - HostFrameTime float32 - HostFrameTimeStdDeviation float32 -} - -func ParseNetTick(reader *bitreader.Reader) NetTick { - netTick := NetTick{ - Tick: reader.TryReadUInt32(), - HostFrameTime: float32(reader.TryReadUInt16()) / 1e5, - HostFrameTimeStdDeviation: float32(reader.TryReadUInt16()) / 1e5, - } - - return netTick -} diff --git a/pkg/messages/types/svcBspDecal.go b/pkg/messages/types/svcBspDecal.go deleted file mode 100644 index 6bf96a3..0000000 --- a/pkg/messages/types/svcBspDecal.go +++ /dev/null @@ -1,62 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcBspDecal struct { - Pos []vectorCoord - DecalTextureIndex int16 - EntityIndex uint16 - ModelIndex uint16 - LowPriority bool -} - -type vectorCoord struct { - Value float32 - Valid bool -} - -func ParseSvcBspDecal(reader *bitreader.Reader) SvcBspDecal { - svcBspDecal := SvcBspDecal{ - Pos: readVectorCoords(reader), - DecalTextureIndex: int16(reader.TryReadBits(9)), - } - if reader.TryReadBool() { - svcBspDecal.EntityIndex = uint16(reader.TryReadBits(11)) - svcBspDecal.ModelIndex = uint16(reader.TryReadBits(11)) - } - svcBspDecal.LowPriority = reader.TryReadBool() - - return svcBspDecal -} - -func readVectorCoords(reader *bitreader.Reader) []vectorCoord { - const COORD_INTEGER_BITS uint8 = 14 - const COORD_FRACTIONAL_BITS uint8 = 5 - const COORD_DENOMINATOR uint8 = 1 << COORD_FRACTIONAL_BITS - const COORD_RESOLUTION float32 = 1.0 / float32(COORD_DENOMINATOR) - readVectorCoord := func() float32 { - value := float32(0) - integer := reader.TryReadBits(1) - fraction := reader.TryReadBits(1) - if integer != 0 || fraction != 0 { - sign := reader.TryReadBits(1) - if integer != 0 { - integer = reader.TryReadBits(uint64(COORD_INTEGER_BITS)) + 1 - } - if fraction != 0 { - fraction = reader.TryReadBits(uint64(COORD_FRACTIONAL_BITS)) - } - value = float32(integer) + float32(fraction)*COORD_RESOLUTION - if sign != 0 { - value = -value - } - } - return value - } - x := reader.TryReadBits(1) - y := reader.TryReadBits(1) - z := reader.TryReadBits(1) - return []vectorCoord{{Value: readVectorCoord(), Valid: x != 0}, {Value: readVectorCoord(), Valid: y != 0}, {Value: readVectorCoord(), Valid: z != 0}} -} diff --git a/pkg/messages/types/svcClassInfo.go b/pkg/messages/types/svcClassInfo.go deleted file mode 100644 index a20bfa3..0000000 --- a/pkg/messages/types/svcClassInfo.go +++ /dev/null @@ -1,41 +0,0 @@ -package messages - -import ( - "math" - - "github.com/pektezol/bitreader" -) - -type SvcClassInfo struct { - ClassCount uint16 - CreateOnClient bool - ServerClasses []serverClass -} - -type serverClass struct { - ClassId int16 - ClassName string - DataTableName string -} - -func ParseSvcClassInfo(reader *bitreader.Reader) SvcClassInfo { - svcClassInfo := SvcClassInfo{ - ClassCount: reader.TryReadUInt16(), - CreateOnClient: reader.TryReadBool(), - } - classes := []serverClass{} - - if !svcClassInfo.CreateOnClient { - - for count := 0; count < int(svcClassInfo.ClassCount); count++ { - classes = append(classes, serverClass{ - ClassId: int16(reader.TryReadBits(uint64(math.Log2(float64(svcClassInfo.ClassCount)) + 1))), - ClassName: reader.TryReadString(), - DataTableName: reader.TryReadString(), - }) - - } - } - svcClassInfo.ServerClasses = classes - return svcClassInfo -} diff --git a/pkg/messages/types/svcCmdKeyValues.go b/pkg/messages/types/svcCmdKeyValues.go deleted file mode 100644 index 61d6290..0000000 --- a/pkg/messages/types/svcCmdKeyValues.go +++ /dev/null @@ -1,19 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcCmdKeyValues struct { - Length uint32 - Data []byte -} - -func ParseSvcCmdKeyValues(reader *bitreader.Reader) SvcCmdKeyValues { - svcCmdKeyValues := SvcCmdKeyValues{ - Length: reader.TryReadUInt32(), - } - svcCmdKeyValues.Data = reader.TryReadBytesToSlice(uint64(svcCmdKeyValues.Length)) - - return svcCmdKeyValues -} diff --git a/pkg/messages/types/svcCreateStringTable.go b/pkg/messages/types/svcCreateStringTable.go deleted file mode 100644 index 8d36fcf..0000000 --- a/pkg/messages/types/svcCreateStringTable.go +++ /dev/null @@ -1,37 +0,0 @@ -package messages - -import ( - "math" - - "github.com/pektezol/bitreader" -) - -type SvcCreateStringTable struct { - Name string - MaxEntries int16 - NumEntries int8 - Length int32 - UserDataFixedSize bool - UserDataSize int16 - UserDataSizeBits int8 - Flags int8 - StringData int -} - -func ParseSvcCreateStringTable(reader *bitreader.Reader) SvcCreateStringTable { - svcCreateStringTable := SvcCreateStringTable{ - Name: reader.TryReadString(), - MaxEntries: reader.TryReadSInt16(), - } - svcCreateStringTable.NumEntries = int8(reader.TryReadBits(uint64(math.Log2(float64(svcCreateStringTable.MaxEntries))) + 1)) - svcCreateStringTable.Length = int32(reader.TryReadBits(20)) - svcCreateStringTable.UserDataFixedSize = reader.TryReadBool() - if svcCreateStringTable.UserDataFixedSize { - svcCreateStringTable.UserDataSize = int16(reader.TryReadBits(12)) - svcCreateStringTable.UserDataSizeBits = int8(reader.TryReadBits(4)) - } - svcCreateStringTable.Flags = int8(reader.TryReadBits(2)) - - reader.SkipBits(uint64(svcCreateStringTable.Length)) // TODO: StringTable parsing - return svcCreateStringTable -} diff --git a/pkg/messages/types/svcCrosshairAngle.go b/pkg/messages/types/svcCrosshairAngle.go deleted file mode 100644 index f689876..0000000 --- a/pkg/messages/types/svcCrosshairAngle.go +++ /dev/null @@ -1,27 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcCrosshairAngle struct { - Angle crosshairAngles -} - -type crosshairAngles struct { - X float32 - Y float32 - Z float32 -} - -func ParseSvcCrosshairAngle(reader *bitreader.Reader) SvcCrosshairAngle { - svcCrosshairAngle := SvcCrosshairAngle{ - Angle: crosshairAngles{ - X: float32(reader.TryReadBits(16)), - Y: float32(reader.TryReadBits(16)), - Z: float32(reader.TryReadBits(16)), - }, - } - - return svcCrosshairAngle -} diff --git a/pkg/messages/types/svcEntityMessage.go b/pkg/messages/types/svcEntityMessage.go deleted file mode 100644 index c4676ec..0000000 --- a/pkg/messages/types/svcEntityMessage.go +++ /dev/null @@ -1,23 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcEntityMessage struct { - EntityIndex uint16 - ClassId uint16 - Length uint16 - Data []byte -} - -func ParseSvcEntityMessage(reader *bitreader.Reader) SvcEntityMessage { - svcEntityMessage := SvcEntityMessage{ - EntityIndex: uint16(reader.TryReadBits(11)), - ClassId: uint16(reader.TryReadBits(9)), - Length: uint16(reader.TryReadBits(11)), - } - svcEntityMessage.Data = reader.TryReadBitsToSlice(uint64(svcEntityMessage.Length)) - - return svcEntityMessage -} diff --git a/pkg/messages/types/svcFixAngle.go b/pkg/messages/types/svcFixAngle.go deleted file mode 100644 index f00c239..0000000 --- a/pkg/messages/types/svcFixAngle.go +++ /dev/null @@ -1,29 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcFixAngle struct { - Relative bool - Angle fixAngles -} - -type fixAngles struct { - X float32 - Y float32 - Z float32 -} - -func ParseSvcFixAngle(reader *bitreader.Reader) SvcFixAngle { - svcFixAngle := SvcFixAngle{ - Relative: reader.TryReadBool(), - Angle: fixAngles{ - X: float32(reader.TryReadBits(16)), - Y: float32(reader.TryReadBits(16)), - Z: float32(reader.TryReadBits(16)), - }, - } - - return svcFixAngle -} diff --git a/pkg/messages/types/svcGameEvent.go b/pkg/messages/types/svcGameEvent.go deleted file mode 100644 index ec96653..0000000 --- a/pkg/messages/types/svcGameEvent.go +++ /dev/null @@ -1,19 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcGameEvent struct { - Length uint16 - Data []byte // TODO: GameEvent[] -} - -func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { - svcGameEvent := SvcGameEvent{ - Length: uint16(reader.TryReadBits(11)), - } - svcGameEvent.Data = reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)) - - return svcGameEvent -} diff --git a/pkg/messages/types/svcGameEventList.go b/pkg/messages/types/svcGameEventList.go deleted file mode 100644 index ca2cf76..0000000 --- a/pkg/messages/types/svcGameEventList.go +++ /dev/null @@ -1,24 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcGameEventList struct { - Events int16 - Length int32 - GameEventDescriptor []gameEventDescriptor -} - -type gameEventDescriptor struct { -} - -func ParseSvcGameEventList(reader *bitreader.Reader) SvcGameEventList { - svcGameEventList := SvcGameEventList{ - Events: int16(reader.TryReadBits(9)), - Length: int32(reader.TryReadBits(20)), - } - reader.TryReadBitsToSlice(uint64(svcGameEventList.Length)) - - return svcGameEventList -} diff --git a/pkg/messages/types/svcGetCvarValue.go b/pkg/messages/types/svcGetCvarValue.go deleted file mode 100644 index b0513d0..0000000 --- a/pkg/messages/types/svcGetCvarValue.go +++ /dev/null @@ -1,19 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcGetCvarValue struct { - Cookie int32 - CvarName string -} - -func ParseSvcGetCvarValue(reader *bitreader.Reader) SvcGetCvarValue { - svcGetCvarValue := SvcGetCvarValue{ - Cookie: reader.TryReadSInt32(), - CvarName: reader.TryReadString(), - } - - return svcGetCvarValue -} diff --git a/pkg/messages/types/svcMenu.go b/pkg/messages/types/svcMenu.go deleted file mode 100644 index df14048..0000000 --- a/pkg/messages/types/svcMenu.go +++ /dev/null @@ -1,21 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcMenu struct { - Type uint16 - Length uint32 - Data []byte -} - -func ParseSvcMenu(reader *bitreader.Reader) SvcMenu { - svcMenu := SvcMenu{ - Type: reader.TryReadUInt16(), - Length: reader.TryReadUInt32(), - } - svcMenu.Data = reader.TryReadBitsToSlice(uint64(svcMenu.Length)) - - return svcMenu -} diff --git a/pkg/messages/types/svcPacketEntities.go b/pkg/messages/types/svcPacketEntities.go deleted file mode 100644 index 8000a55..0000000 --- a/pkg/messages/types/svcPacketEntities.go +++ /dev/null @@ -1,35 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcPacketEntities struct { - MaxEntries uint16 - IsDelta bool - DeltaFrom int32 - BaseLine bool - UpdatedEntries uint16 - Length uint32 - UpdatedBaseline bool - Data []byte -} - -func ParseSvcPacketEntities(reader *bitreader.Reader) SvcPacketEntities { - svcPacketEntities := SvcPacketEntities{ - MaxEntries: uint16(reader.TryReadBits(11)), - IsDelta: reader.TryReadBool(), - } - if svcPacketEntities.IsDelta { - svcPacketEntities.DeltaFrom = reader.TryReadSInt32() - } else { - svcPacketEntities.DeltaFrom = -1 - } - svcPacketEntities.BaseLine = reader.TryReadBool() - svcPacketEntities.UpdatedEntries = uint16(reader.TryReadBits(11)) - svcPacketEntities.Length = uint32(reader.TryReadBits(20)) - svcPacketEntities.UpdatedBaseline = reader.TryReadBool() - svcPacketEntities.Data = reader.TryReadBitsToSlice(uint64(svcPacketEntities.Length)) - - return svcPacketEntities -} diff --git a/pkg/messages/types/svcPaintmapData.go b/pkg/messages/types/svcPaintmapData.go deleted file mode 100644 index 49aa433..0000000 --- a/pkg/messages/types/svcPaintmapData.go +++ /dev/null @@ -1,19 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcPaintmapData struct { - Length uint32 - Data []byte -} - -func ParseSvcPaintmapData(reader *bitreader.Reader) SvcPaintmapData { - svcPaintmapData := SvcPaintmapData{ - Length: reader.TryReadUInt32(), - } - svcPaintmapData.Data = reader.TryReadBitsToSlice(uint64(svcPaintmapData.Length)) - - return svcPaintmapData -} diff --git a/pkg/messages/types/svcPrefetch.go b/pkg/messages/types/svcPrefetch.go deleted file mode 100644 index a9a88fe..0000000 --- a/pkg/messages/types/svcPrefetch.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcPrefetch struct { - SoundIndex int16 -} - -func ParseSvcPrefetch(reader *bitreader.Reader) SvcPrefetch { - svcPrefetch := SvcPrefetch{ - SoundIndex: int16(reader.TryReadBits(13)), - } - - return svcPrefetch -} diff --git a/pkg/messages/types/svcPrint.go b/pkg/messages/types/svcPrint.go deleted file mode 100644 index 5868ab2..0000000 --- a/pkg/messages/types/svcPrint.go +++ /dev/null @@ -1,18 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcPrint struct { - Message string -} - -func ParseSvcPrint(reader *bitreader.Reader) SvcPrint { - svcPrint := SvcPrint{ - Message: reader.TryReadString(), - } - // common psycopath behaviour - - return svcPrint -} diff --git a/pkg/messages/types/svcSendTable.go b/pkg/messages/types/svcSendTable.go deleted file mode 100644 index 4397db0..0000000 --- a/pkg/messages/types/svcSendTable.go +++ /dev/null @@ -1,21 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcSendTable struct { - NeedsDecoder bool - Length uint8 - Props uint32 -} - -func ParseSvcSendTable(reader *bitreader.Reader) SvcSendTable { - svcSendTable := SvcSendTable{ - NeedsDecoder: reader.TryReadBool(), - Length: reader.TryReadUInt8(), - } - svcSendTable.Props = uint32(reader.TryReadBits(uint64(svcSendTable.Length))) - - return svcSendTable -} diff --git a/pkg/messages/types/svcServerInfo.go b/pkg/messages/types/svcServerInfo.go deleted file mode 100644 index 507b7ca..0000000 --- a/pkg/messages/types/svcServerInfo.go +++ /dev/null @@ -1,47 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcServerInfo struct { - Protocol uint16 - ServerCount uint32 - IsHltv bool - IsDedicated bool - ClientCrc int32 - StringTableCrc uint32 - MaxServerClasses uint16 - MapCrc uint32 - PlayerCount uint8 - MaxClients uint8 - TickInterval float32 - Platform string - GameDir string - MapName string - SkyName string - HostName string -} - -func ParseSvcServerInfo(reader *bitreader.Reader) SvcServerInfo { - svcServerInfo := SvcServerInfo{ - Protocol: reader.TryReadUInt16(), - ServerCount: reader.TryReadUInt32(), - IsHltv: reader.TryReadBool(), - IsDedicated: reader.TryReadBool(), - ClientCrc: reader.TryReadSInt32(), - StringTableCrc: reader.TryReadUInt32(), - MaxServerClasses: reader.TryReadUInt16(), - MapCrc: reader.TryReadUInt32(), - PlayerCount: reader.TryReadUInt8(), - MaxClients: reader.TryReadUInt8(), - TickInterval: reader.TryReadFloat32(), - Platform: reader.TryReadStringLength(1), - GameDir: reader.TryReadString(), - MapName: reader.TryReadString(), - SkyName: reader.TryReadString(), - HostName: reader.TryReadString(), - } - - return svcServerInfo -} diff --git a/pkg/messages/types/svcSetPause.go b/pkg/messages/types/svcSetPause.go deleted file mode 100644 index 1f6f25f..0000000 --- a/pkg/messages/types/svcSetPause.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcSetPause struct { - Paused bool -} - -func ParseSvcSetPause(reader *bitreader.Reader) SvcSetPause { - svcSetPause := SvcSetPause{ - Paused: reader.TryReadBool(), - } - - return svcSetPause -} diff --git a/pkg/messages/types/svcSetView.go b/pkg/messages/types/svcSetView.go deleted file mode 100644 index a60d547..0000000 --- a/pkg/messages/types/svcSetView.go +++ /dev/null @@ -1,17 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcSetView struct { - EntityIndex uint16 -} - -func ParseSvcSetView(reader *bitreader.Reader) SvcSetView { - svcSetView := SvcSetView{ - EntityIndex: uint16(reader.TryReadBits(11)), - } - - return svcSetView -} diff --git a/pkg/messages/types/svcSounds.go b/pkg/messages/types/svcSounds.go deleted file mode 100644 index 34d99f6..0000000 --- a/pkg/messages/types/svcSounds.go +++ /dev/null @@ -1,28 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcSounds struct { - ReliableSound bool - SoundCount uint8 - Length uint16 - Data []byte -} - -func ParseSvcSounds(reader *bitreader.Reader) SvcSounds { - svcSounds := SvcSounds{ - ReliableSound: reader.TryReadBool(), - } - if svcSounds.ReliableSound { - svcSounds.SoundCount = 1 - svcSounds.Length = uint16(reader.TryReadUInt8()) - } else { - svcSounds.SoundCount = reader.TryReadUInt8() - svcSounds.Length = reader.TryReadUInt16() - } - svcSounds.Data = reader.TryReadBitsToSlice(uint64(svcSounds.Length)) - - return svcSounds -} diff --git a/pkg/messages/types/svcSplitScreen.go b/pkg/messages/types/svcSplitScreen.go deleted file mode 100644 index fc6acb4..0000000 --- a/pkg/messages/types/svcSplitScreen.go +++ /dev/null @@ -1,21 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcSplitScreen struct { - RemoveUser bool - Length uint16 - Data []byte -} - -func ParseSvcSplitScreen(reader *bitreader.Reader) SvcSplitScreen { - svcSplitScreen := SvcSplitScreen{ - RemoveUser: reader.TryReadBool(), - Length: uint16(reader.TryReadBits(11)), - } - svcSplitScreen.Data = reader.TryReadBitsToSlice(uint64(svcSplitScreen.Length)) - - return svcSplitScreen -} diff --git a/pkg/messages/types/svcTempEntities.go b/pkg/messages/types/svcTempEntities.go deleted file mode 100644 index 41b1afb..0000000 --- a/pkg/messages/types/svcTempEntities.go +++ /dev/null @@ -1,21 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcTempEntities struct { - NumEntries uint8 - Length uint32 - Data []byte -} - -func ParseSvcTempEntities(reader *bitreader.Reader) SvcTempEntities { - svcTempEntities := SvcTempEntities{ - NumEntries: reader.TryReadUInt8(), - Length: uint32(reader.TryReadBits(17)), - } - svcTempEntities.Data = reader.TryReadBitsToSlice(uint64(svcTempEntities.Length)) - - return svcTempEntities -} diff --git a/pkg/messages/types/svcUpdateStringTable.go b/pkg/messages/types/svcUpdateStringTable.go deleted file mode 100644 index ca716eb..0000000 --- a/pkg/messages/types/svcUpdateStringTable.go +++ /dev/null @@ -1,25 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcUpdateStringTable struct { - TableId uint8 - NumChangedEntries uint16 - Length int32 - Data []byte -} - -func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { - svcUpdateStringTable := SvcUpdateStringTable{ - TableId: uint8(reader.TryReadBits(5)), - } - if reader.TryReadBool() { - svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16() - } - svcUpdateStringTable.Length = int32(reader.TryReadBits(20)) - svcUpdateStringTable.Data = reader.TryReadBitsToSlice(uint64(svcUpdateStringTable.Length)) - - return svcUpdateStringTable -} diff --git a/pkg/messages/types/svcUserMessage.go b/pkg/messages/types/svcUserMessage.go deleted file mode 100644 index a39e64b..0000000 --- a/pkg/messages/types/svcUserMessage.go +++ /dev/null @@ -1,41 +0,0 @@ -package messages - -import ( - "fmt" - "math" - - "github.com/pektezol/bitreader" -) - -type SvcUserMessage struct { - Type int8 - Length int16 - Data any -} - -func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { - svcUserMessage := SvcUserMessage{ - Type: int8(reader.TryReadBits(8)), - Length: int16(reader.TryReadBits(12)), - } - svcUserMessage.Data = reader.TryReadBitsToSlice(uint64(svcUserMessage.Length)) - userMessageReader := bitreader.NewReaderFromBytes(svcUserMessage.Data.([]byte), true) - switch svcUserMessage.Type { - case 60: - svcUserMessage.parseScoreboardTempUpdate(userMessageReader) - } - return svcUserMessage -} - -func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreader.Reader) { - scoreboardTempUpdate := struct { - NumPortals int32 - TimeTaken int32 - }{ - NumPortals: reader.TryReadSInt32(), - TimeTaken: reader.TryReadSInt32(), - } - svcUserMessage.Data = scoreboardTempUpdate - fmt.Printf("Portal Count: %d\n", scoreboardTempUpdate.NumPortals) - fmt.Printf("CM Ticks: %d\n", int(math.Round(float64((float32(scoreboardTempUpdate.TimeTaken)/100.0)/float32(1.0/60.0))))) -} diff --git a/pkg/messages/types/svcVoiceData.go b/pkg/messages/types/svcVoiceData.go deleted file mode 100644 index 6ac8050..0000000 --- a/pkg/messages/types/svcVoiceData.go +++ /dev/null @@ -1,25 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcVoiceData struct { - FromClient uint8 - Proximity bool - Length int16 - Data []byte -} - -func ParseSvcVoiceData(reader *bitreader.Reader) SvcVoiceData { - svcVoiceData := SvcVoiceData{ - FromClient: reader.TryReadUInt8(), - } - proximity := reader.TryReadUInt8() - if proximity != 0 { - svcVoiceData.Proximity = true - } - svcVoiceData.Data = reader.TryReadBitsToSlice(uint64(svcVoiceData.Length)) - - return svcVoiceData -} diff --git a/pkg/messages/types/svcVoiceInit.go b/pkg/messages/types/svcVoiceInit.go deleted file mode 100644 index eb6093f..0000000 --- a/pkg/messages/types/svcVoiceInit.go +++ /dev/null @@ -1,29 +0,0 @@ -package messages - -import ( - "github.com/pektezol/bitreader" -) - -type SvcVoiceInit struct { - Codec string - Quality uint8 - SampleRate int32 -} - -func ParseSvcVoiceInit(reader *bitreader.Reader) SvcVoiceInit { - svcVoiceInit := SvcVoiceInit{ - Codec: reader.TryReadString(), - Quality: reader.TryReadUInt8(), - } - if svcVoiceInit.Quality == 0b11111111 { - svcVoiceInit.SampleRate = reader.TryReadSInt32() - } else { - if svcVoiceInit.Codec == "vaudio_celt" { - svcVoiceInit.SampleRate = 22050 - } else { - svcVoiceInit.SampleRate = 11025 - } - } - - return svcVoiceInit -} -- cgit v1.2.3