diff options
Diffstat (limited to 'pkg/messages')
35 files changed, 0 insertions, 1019 deletions
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | messages "github.com/pektezol/demoparser/pkg/messages/types" | ||
| 6 | ) | ||
| 7 | |||
| 8 | func ParseMessages(messageType uint64, reader *bitreader.Reader) any { | ||
| 9 | var messageData any | ||
| 10 | switch messageType { | ||
| 11 | case 0: | ||
| 12 | messageData = messages.ParseNetNop(reader) | ||
| 13 | case 1: | ||
| 14 | messageData = messages.ParseNetDisconnect(reader) | ||
| 15 | case 2: | ||
| 16 | messageData = messages.ParseNetFile(reader) | ||
| 17 | case 3: | ||
| 18 | messageData = messages.ParseNetSplitScreenUser(reader) | ||
| 19 | case 4: | ||
| 20 | messageData = messages.ParseNetTick(reader) | ||
| 21 | case 5: | ||
| 22 | messageData = messages.ParseNetStringCmd(reader) | ||
| 23 | case 6: | ||
| 24 | messageData = messages.ParseNetSetConVar(reader) | ||
| 25 | case 7: | ||
| 26 | messageData = messages.ParseNetSignOnState(reader) | ||
| 27 | case 8: | ||
| 28 | messageData = messages.ParseSvcServerInfo(reader) | ||
| 29 | case 9: | ||
| 30 | messageData = messages.ParseSvcSendTable(reader) | ||
| 31 | case 10: | ||
| 32 | messageData = messages.ParseSvcClassInfo(reader) | ||
| 33 | case 11: | ||
| 34 | messageData = messages.ParseSvcSetPause(reader) | ||
| 35 | case 12: | ||
| 36 | messageData = messages.ParseSvcCreateStringTable(reader) // TODO: | ||
| 37 | case 13: | ||
| 38 | messageData = messages.ParseSvcUpdateStringTable(reader) // TODO: | ||
| 39 | case 14: | ||
| 40 | messageData = messages.ParseSvcVoiceInit(reader) | ||
| 41 | case 15: | ||
| 42 | messageData = messages.ParseSvcVoiceData(reader) | ||
| 43 | case 16: | ||
| 44 | messageData = messages.ParseSvcPrint(reader) | ||
| 45 | case 17: | ||
| 46 | messageData = messages.ParseSvcSounds(reader) // TODO: | ||
| 47 | case 18: | ||
| 48 | messageData = messages.ParseSvcSetView(reader) | ||
| 49 | case 19: | ||
| 50 | messageData = messages.ParseSvcFixAngle(reader) | ||
| 51 | case 20: | ||
| 52 | messageData = messages.ParseSvcCrosshairAngle(reader) | ||
| 53 | case 21: | ||
| 54 | messageData = messages.ParseSvcBspDecal(reader) // untested | ||
| 55 | case 22: | ||
| 56 | messageData = messages.ParseSvcSplitScreen(reader) // skipped | ||
| 57 | case 23: | ||
| 58 | messageData = messages.ParseSvcUserMessage(reader) // TODO: | ||
| 59 | case 24: | ||
| 60 | messageData = messages.ParseSvcEntityMessage(reader) // skipped | ||
| 61 | case 25: | ||
| 62 | messageData = messages.ParseSvcGameEvent(reader) // TODO: | ||
| 63 | case 26: | ||
| 64 | messageData = messages.ParseSvcPacketEntities(reader) // TODO: | ||
| 65 | case 27: | ||
| 66 | messageData = messages.ParseSvcTempEntities(reader) // skipped | ||
| 67 | case 28: | ||
| 68 | messageData = messages.ParseSvcPrefetch(reader) | ||
| 69 | case 29: | ||
| 70 | messageData = messages.ParseSvcMenu(reader) // skipped | ||
| 71 | case 30: | ||
| 72 | messageData = messages.ParseSvcGameEventList(reader) // TODO: | ||
| 73 | case 31: | ||
| 74 | messageData = messages.ParseSvcGetCvarValue(reader) | ||
| 75 | case 32: | ||
| 76 | messageData = messages.ParseSvcCmdKeyValues(reader) | ||
| 77 | case 33: | ||
| 78 | messageData = messages.ParseSvcPaintmapData(reader) | ||
| 79 | default: | ||
| 80 | return nil | ||
| 81 | } | ||
| 82 | return messageData | ||
| 83 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetDisconnect struct { | ||
| 8 | Text string | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseNetDisconnect(reader *bitreader.Reader) NetDisconnect { | ||
| 12 | netDisconnect := NetDisconnect{ | ||
| 13 | Text: reader.TryReadString(), | ||
| 14 | } | ||
| 15 | |||
| 16 | return netDisconnect | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 8 | |||
| 9 | type NetFile struct { | ||
| 10 | TransferId uint32 | ||
| 11 | FileName string | ||
| 12 | FileFlags string | ||
| 13 | } | ||
| 14 | |||
| 15 | type NetFileFlags int | ||
| 16 | |||
| 17 | const ( | ||
| 18 | ENetFileFlagsNone NetFileFlags = 0 | ||
| 19 | ENetFileFlagsFileRequested NetFileFlags = 1 | ||
| 20 | ENetFileFlagsUnknown NetFileFlags = 1 << 1 | ||
| 21 | ) | ||
| 22 | |||
| 23 | func (netFileFlags NetFileFlags) String() string { | ||
| 24 | switch netFileFlags { | ||
| 25 | case ENetFileFlagsNone: | ||
| 26 | return "None" | ||
| 27 | case ENetFileFlagsFileRequested: | ||
| 28 | return "FileRequested" | ||
| 29 | case ENetFileFlagsUnknown: | ||
| 30 | return "Unknown" | ||
| 31 | default: | ||
| 32 | return fmt.Sprintf("%d", int(netFileFlags)) | ||
| 33 | } | ||
| 34 | } | ||
| 35 | |||
| 36 | func ParseNetFile(reader *bitreader.Reader) NetFile { | ||
| 37 | netFile := NetFile{ | ||
| 38 | TransferId: reader.TryReadUInt32(), | ||
| 39 | FileName: reader.TryReadString(), | ||
| 40 | FileFlags: NetFileFlags(reader.TryReadBits(2)).String(), | ||
| 41 | } | ||
| 42 | |||
| 43 | return netFile | ||
| 44 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetNop struct{} | ||
| 8 | |||
| 9 | func ParseNetNop(reader *bitreader.Reader) NetNop { | ||
| 10 | |||
| 11 | return NetNop{} | ||
| 12 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetSetConVar struct { | ||
| 8 | Length uint8 | ||
| 9 | ConVars []conVar | ||
| 10 | } | ||
| 11 | |||
| 12 | type conVar struct { | ||
| 13 | Name string | ||
| 14 | Value string | ||
| 15 | } | ||
| 16 | |||
| 17 | func ParseNetSetConVar(reader *bitreader.Reader) NetSetConVar { | ||
| 18 | length := reader.TryReadUInt8() | ||
| 19 | convars := []conVar{} | ||
| 20 | |||
| 21 | for count := 0; count < int(length); count++ { | ||
| 22 | convar := conVar{ | ||
| 23 | Name: reader.TryReadString(), | ||
| 24 | Value: reader.TryReadString(), | ||
| 25 | } | ||
| 26 | |||
| 27 | convars = append(convars, convar) | ||
| 28 | } | ||
| 29 | return NetSetConVar{ | ||
| 30 | Length: length, | ||
| 31 | ConVars: convars, | ||
| 32 | } | ||
| 33 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 8 | |||
| 9 | type NetSignOnState struct { | ||
| 10 | SignOnState string | ||
| 11 | SpawnCount int32 | ||
| 12 | NumServerPlayers uint32 | ||
| 13 | IdsLength uint32 | ||
| 14 | PlayersNetworksIds []byte | ||
| 15 | MapNameLength uint32 | ||
| 16 | MapName string | ||
| 17 | } | ||
| 18 | |||
| 19 | type SignOnState int | ||
| 20 | |||
| 21 | const ( | ||
| 22 | ESignOnStateNone SignOnState = iota // no state yet, about to connect | ||
| 23 | ESignOnStateChallenge // client challenging server, all OOB packets | ||
| 24 | ESignOnStateConnected // client is connected to server, netchans ready | ||
| 25 | ESignOnStateNew // just got server info and string tables | ||
| 26 | ESignOnStatePreSpawn // received signon buggers | ||
| 27 | ESignOnStateSpawn // ready to receive entity packets | ||
| 28 | ESignOnStateFull // we are fully connected, first non-delta packet received | ||
| 29 | ESignOnStateChangeLevel // server is changing level, please wait | ||
| 30 | ) | ||
| 31 | |||
| 32 | func (signOnState SignOnState) String() string { | ||
| 33 | switch signOnState { | ||
| 34 | case ESignOnStateNone: | ||
| 35 | return "None" | ||
| 36 | case ESignOnStateChallenge: | ||
| 37 | return "Challenge" | ||
| 38 | case ESignOnStateConnected: | ||
| 39 | return "Connected" | ||
| 40 | case ESignOnStateNew: | ||
| 41 | return "New" | ||
| 42 | case ESignOnStatePreSpawn: | ||
| 43 | return "PreSpawn" | ||
| 44 | case ESignOnStateSpawn: | ||
| 45 | return "Spawn" | ||
| 46 | case ESignOnStateFull: | ||
| 47 | return "Full" | ||
| 48 | case ESignOnStateChangeLevel: | ||
| 49 | return "ChangeLevel" | ||
| 50 | default: | ||
| 51 | return fmt.Sprintf("%d", int(signOnState)) | ||
| 52 | } | ||
| 53 | } | ||
| 54 | |||
| 55 | func ParseNetSignOnState(reader *bitreader.Reader) NetSignOnState { | ||
| 56 | netSignOnState := NetSignOnState{ | ||
| 57 | SignOnState: SignOnState(reader.TryReadUInt8()).String(), | ||
| 58 | SpawnCount: reader.TryReadSInt32(), | ||
| 59 | NumServerPlayers: reader.TryReadUInt32(), | ||
| 60 | IdsLength: reader.TryReadUInt32(), | ||
| 61 | } | ||
| 62 | |||
| 63 | if netSignOnState.IdsLength > 0 { | ||
| 64 | netSignOnState.PlayersNetworksIds = reader.TryReadBytesToSlice(uint64(netSignOnState.IdsLength)) | ||
| 65 | |||
| 66 | } | ||
| 67 | netSignOnState.MapNameLength = reader.TryReadUInt32() | ||
| 68 | if netSignOnState.MapNameLength > 0 { | ||
| 69 | netSignOnState.MapName = reader.TryReadStringLength(uint64(netSignOnState.MapNameLength)) | ||
| 70 | |||
| 71 | } | ||
| 72 | return netSignOnState | ||
| 73 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetSplitScreenUser struct { | ||
| 8 | Slot bool | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseNetSplitScreenUser(reader *bitreader.Reader) NetSplitScreenUser { | ||
| 12 | netSplitScreenUser := NetSplitScreenUser{ | ||
| 13 | Slot: reader.TryReadBool(), | ||
| 14 | } | ||
| 15 | |||
| 16 | return netSplitScreenUser | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetStringCmd struct { | ||
| 8 | Command string | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseNetStringCmd(reader *bitreader.Reader) NetStringCmd { | ||
| 12 | netStringCmd := NetStringCmd{ | ||
| 13 | Command: reader.TryReadString(), | ||
| 14 | } | ||
| 15 | |||
| 16 | return netStringCmd | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type NetTick struct { | ||
| 8 | Tick uint32 | ||
| 9 | HostFrameTime float32 | ||
| 10 | HostFrameTimeStdDeviation float32 | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseNetTick(reader *bitreader.Reader) NetTick { | ||
| 14 | netTick := NetTick{ | ||
| 15 | Tick: reader.TryReadUInt32(), | ||
| 16 | HostFrameTime: float32(reader.TryReadUInt16()) / 1e5, | ||
| 17 | HostFrameTimeStdDeviation: float32(reader.TryReadUInt16()) / 1e5, | ||
| 18 | } | ||
| 19 | |||
| 20 | return netTick | ||
| 21 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcBspDecal struct { | ||
| 8 | Pos []vectorCoord | ||
| 9 | DecalTextureIndex int16 | ||
| 10 | EntityIndex uint16 | ||
| 11 | ModelIndex uint16 | ||
| 12 | LowPriority bool | ||
| 13 | } | ||
| 14 | |||
| 15 | type vectorCoord struct { | ||
| 16 | Value float32 | ||
| 17 | Valid bool | ||
| 18 | } | ||
| 19 | |||
| 20 | func ParseSvcBspDecal(reader *bitreader.Reader) SvcBspDecal { | ||
| 21 | svcBspDecal := SvcBspDecal{ | ||
| 22 | Pos: readVectorCoords(reader), | ||
| 23 | DecalTextureIndex: int16(reader.TryReadBits(9)), | ||
| 24 | } | ||
| 25 | if reader.TryReadBool() { | ||
| 26 | svcBspDecal.EntityIndex = uint16(reader.TryReadBits(11)) | ||
| 27 | svcBspDecal.ModelIndex = uint16(reader.TryReadBits(11)) | ||
| 28 | } | ||
| 29 | svcBspDecal.LowPriority = reader.TryReadBool() | ||
| 30 | |||
| 31 | return svcBspDecal | ||
| 32 | } | ||
| 33 | |||
| 34 | func readVectorCoords(reader *bitreader.Reader) []vectorCoord { | ||
| 35 | const COORD_INTEGER_BITS uint8 = 14 | ||
| 36 | const COORD_FRACTIONAL_BITS uint8 = 5 | ||
| 37 | const COORD_DENOMINATOR uint8 = 1 << COORD_FRACTIONAL_BITS | ||
| 38 | const COORD_RESOLUTION float32 = 1.0 / float32(COORD_DENOMINATOR) | ||
| 39 | readVectorCoord := func() float32 { | ||
| 40 | value := float32(0) | ||
| 41 | integer := reader.TryReadBits(1) | ||
| 42 | fraction := reader.TryReadBits(1) | ||
| 43 | if integer != 0 || fraction != 0 { | ||
| 44 | sign := reader.TryReadBits(1) | ||
| 45 | if integer != 0 { | ||
| 46 | integer = reader.TryReadBits(uint64(COORD_INTEGER_BITS)) + 1 | ||
| 47 | } | ||
| 48 | if fraction != 0 { | ||
| 49 | fraction = reader.TryReadBits(uint64(COORD_FRACTIONAL_BITS)) | ||
| 50 | } | ||
| 51 | value = float32(integer) + float32(fraction)*COORD_RESOLUTION | ||
| 52 | if sign != 0 { | ||
| 53 | value = -value | ||
| 54 | } | ||
| 55 | } | ||
| 56 | return value | ||
| 57 | } | ||
| 58 | x := reader.TryReadBits(1) | ||
| 59 | y := reader.TryReadBits(1) | ||
| 60 | z := reader.TryReadBits(1) | ||
| 61 | return []vectorCoord{{Value: readVectorCoord(), Valid: x != 0}, {Value: readVectorCoord(), Valid: y != 0}, {Value: readVectorCoord(), Valid: z != 0}} | ||
| 62 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "math" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 8 | |||
| 9 | type SvcClassInfo struct { | ||
| 10 | ClassCount uint16 | ||
| 11 | CreateOnClient bool | ||
| 12 | ServerClasses []serverClass | ||
| 13 | } | ||
| 14 | |||
| 15 | type serverClass struct { | ||
| 16 | ClassId int16 | ||
| 17 | ClassName string | ||
| 18 | DataTableName string | ||
| 19 | } | ||
| 20 | |||
| 21 | func ParseSvcClassInfo(reader *bitreader.Reader) SvcClassInfo { | ||
| 22 | svcClassInfo := SvcClassInfo{ | ||
| 23 | ClassCount: reader.TryReadUInt16(), | ||
| 24 | CreateOnClient: reader.TryReadBool(), | ||
| 25 | } | ||
| 26 | classes := []serverClass{} | ||
| 27 | |||
| 28 | if !svcClassInfo.CreateOnClient { | ||
| 29 | |||
| 30 | for count := 0; count < int(svcClassInfo.ClassCount); count++ { | ||
| 31 | classes = append(classes, serverClass{ | ||
| 32 | ClassId: int16(reader.TryReadBits(uint64(math.Log2(float64(svcClassInfo.ClassCount)) + 1))), | ||
| 33 | ClassName: reader.TryReadString(), | ||
| 34 | DataTableName: reader.TryReadString(), | ||
| 35 | }) | ||
| 36 | |||
| 37 | } | ||
| 38 | } | ||
| 39 | svcClassInfo.ServerClasses = classes | ||
| 40 | return svcClassInfo | ||
| 41 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcCmdKeyValues struct { | ||
| 8 | Length uint32 | ||
| 9 | Data []byte | ||
| 10 | } | ||
| 11 | |||
| 12 | func ParseSvcCmdKeyValues(reader *bitreader.Reader) SvcCmdKeyValues { | ||
| 13 | svcCmdKeyValues := SvcCmdKeyValues{ | ||
| 14 | Length: reader.TryReadUInt32(), | ||
| 15 | } | ||
| 16 | svcCmdKeyValues.Data = reader.TryReadBytesToSlice(uint64(svcCmdKeyValues.Length)) | ||
| 17 | |||
| 18 | return svcCmdKeyValues | ||
| 19 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "math" | ||
| 5 | |||
| 6 | "github.com/pektezol/bitreader" | ||
| 7 | ) | ||
| 8 | |||
| 9 | type SvcCreateStringTable struct { | ||
| 10 | Name string | ||
| 11 | MaxEntries int16 | ||
| 12 | NumEntries int8 | ||
| 13 | Length int32 | ||
| 14 | UserDataFixedSize bool | ||
| 15 | UserDataSize int16 | ||
| 16 | UserDataSizeBits int8 | ||
| 17 | Flags int8 | ||
| 18 | StringData int | ||
| 19 | } | ||
| 20 | |||
| 21 | func ParseSvcCreateStringTable(reader *bitreader.Reader) SvcCreateStringTable { | ||
| 22 | svcCreateStringTable := SvcCreateStringTable{ | ||
| 23 | Name: reader.TryReadString(), | ||
| 24 | MaxEntries: reader.TryReadSInt16(), | ||
| 25 | } | ||
| 26 | svcCreateStringTable.NumEntries = int8(reader.TryReadBits(uint64(math.Log2(float64(svcCreateStringTable.MaxEntries))) + 1)) | ||
| 27 | svcCreateStringTable.Length = int32(reader.TryReadBits(20)) | ||
| 28 | svcCreateStringTable.UserDataFixedSize = reader.TryReadBool() | ||
| 29 | if svcCreateStringTable.UserDataFixedSize { | ||
| 30 | svcCreateStringTable.UserDataSize = int16(reader.TryReadBits(12)) | ||
| 31 | svcCreateStringTable.UserDataSizeBits = int8(reader.TryReadBits(4)) | ||
| 32 | } | ||
| 33 | svcCreateStringTable.Flags = int8(reader.TryReadBits(2)) | ||
| 34 | |||
| 35 | reader.SkipBits(uint64(svcCreateStringTable.Length)) // TODO: StringTable parsing | ||
| 36 | return svcCreateStringTable | ||
| 37 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcCrosshairAngle struct { | ||
| 8 | Angle crosshairAngles | ||
| 9 | } | ||
| 10 | |||
| 11 | type crosshairAngles struct { | ||
| 12 | X float32 | ||
| 13 | Y float32 | ||
| 14 | Z float32 | ||
| 15 | } | ||
| 16 | |||
| 17 | func ParseSvcCrosshairAngle(reader *bitreader.Reader) SvcCrosshairAngle { | ||
| 18 | svcCrosshairAngle := SvcCrosshairAngle{ | ||
| 19 | Angle: crosshairAngles{ | ||
| 20 | X: float32(reader.TryReadBits(16)), | ||
| 21 | Y: float32(reader.TryReadBits(16)), | ||
| 22 | Z: float32(reader.TryReadBits(16)), | ||
| 23 | }, | ||
| 24 | } | ||
| 25 | |||
| 26 | return svcCrosshairAngle | ||
| 27 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcEntityMessage struct { | ||
| 8 | EntityIndex uint16 | ||
| 9 | ClassId uint16 | ||
| 10 | Length uint16 | ||
| 11 | Data []byte | ||
| 12 | } | ||
| 13 | |||
| 14 | func ParseSvcEntityMessage(reader *bitreader.Reader) SvcEntityMessage { | ||
| 15 | svcEntityMessage := SvcEntityMessage{ | ||
| 16 | EntityIndex: uint16(reader.TryReadBits(11)), | ||
| 17 | ClassId: uint16(reader.TryReadBits(9)), | ||
| 18 | Length: uint16(reader.TryReadBits(11)), | ||
| 19 | } | ||
| 20 | svcEntityMessage.Data = reader.TryReadBitsToSlice(uint64(svcEntityMessage.Length)) | ||
| 21 | |||
| 22 | return svcEntityMessage | ||
| 23 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcFixAngle struct { | ||
| 8 | Relative bool | ||
| 9 | Angle fixAngles | ||
| 10 | } | ||
| 11 | |||
| 12 | type fixAngles struct { | ||
| 13 | X float32 | ||
| 14 | Y float32 | ||
| 15 | Z float32 | ||
| 16 | } | ||
| 17 | |||
| 18 | func ParseSvcFixAngle(reader *bitreader.Reader) SvcFixAngle { | ||
| 19 | svcFixAngle := SvcFixAngle{ | ||
| 20 | Relative: reader.TryReadBool(), | ||
| 21 | Angle: fixAngles{ | ||
| 22 | X: float32(reader.TryReadBits(16)), | ||
| 23 | Y: float32(reader.TryReadBits(16)), | ||
| 24 | Z: float32(reader.TryReadBits(16)), | ||
| 25 | }, | ||
| 26 | } | ||
| 27 | |||
| 28 | return svcFixAngle | ||
| 29 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcGameEvent struct { | ||
| 8 | Length uint16 | ||
| 9 | Data []byte // TODO: GameEvent[] | ||
| 10 | } | ||
| 11 | |||
| 12 | func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { | ||
| 13 | svcGameEvent := SvcGameEvent{ | ||
| 14 | Length: uint16(reader.TryReadBits(11)), | ||
| 15 | } | ||
| 16 | svcGameEvent.Data = reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)) | ||
| 17 | |||
| 18 | return svcGameEvent | ||
| 19 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcGameEventList struct { | ||
| 8 | Events int16 | ||
| 9 | Length int32 | ||
| 10 | GameEventDescriptor []gameEventDescriptor | ||
| 11 | } | ||
| 12 | |||
| 13 | type gameEventDescriptor struct { | ||
| 14 | } | ||
| 15 | |||
| 16 | func ParseSvcGameEventList(reader *bitreader.Reader) SvcGameEventList { | ||
| 17 | svcGameEventList := SvcGameEventList{ | ||
| 18 | Events: int16(reader.TryReadBits(9)), | ||
| 19 | Length: int32(reader.TryReadBits(20)), | ||
| 20 | } | ||
| 21 | reader.TryReadBitsToSlice(uint64(svcGameEventList.Length)) | ||
| 22 | |||
| 23 | return svcGameEventList | ||
| 24 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcGetCvarValue struct { | ||
| 8 | Cookie int32 | ||
| 9 | CvarName string | ||
| 10 | } | ||
| 11 | |||
| 12 | func ParseSvcGetCvarValue(reader *bitreader.Reader) SvcGetCvarValue { | ||
| 13 | svcGetCvarValue := SvcGetCvarValue{ | ||
| 14 | Cookie: reader.TryReadSInt32(), | ||
| 15 | CvarName: reader.TryReadString(), | ||
| 16 | } | ||
| 17 | |||
| 18 | return svcGetCvarValue | ||
| 19 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcMenu struct { | ||
| 8 | Type uint16 | ||
| 9 | Length uint32 | ||
| 10 | Data []byte | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseSvcMenu(reader *bitreader.Reader) SvcMenu { | ||
| 14 | svcMenu := SvcMenu{ | ||
| 15 | Type: reader.TryReadUInt16(), | ||
| 16 | Length: reader.TryReadUInt32(), | ||
| 17 | } | ||
| 18 | svcMenu.Data = reader.TryReadBitsToSlice(uint64(svcMenu.Length)) | ||
| 19 | |||
| 20 | return svcMenu | ||
| 21 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcPacketEntities struct { | ||
| 8 | MaxEntries uint16 | ||
| 9 | IsDelta bool | ||
| 10 | DeltaFrom int32 | ||
| 11 | BaseLine bool | ||
| 12 | UpdatedEntries uint16 | ||
| 13 | Length uint32 | ||
| 14 | UpdatedBaseline bool | ||
| 15 | Data []byte | ||
| 16 | } | ||
| 17 | |||
| 18 | func ParseSvcPacketEntities(reader *bitreader.Reader) SvcPacketEntities { | ||
| 19 | svcPacketEntities := SvcPacketEntities{ | ||
| 20 | MaxEntries: uint16(reader.TryReadBits(11)), | ||
| 21 | IsDelta: reader.TryReadBool(), | ||
| 22 | } | ||
| 23 | if svcPacketEntities.IsDelta { | ||
| 24 | svcPacketEntities.DeltaFrom = reader.TryReadSInt32() | ||
| 25 | } else { | ||
| 26 | svcPacketEntities.DeltaFrom = -1 | ||
| 27 | } | ||
| 28 | svcPacketEntities.BaseLine = reader.TryReadBool() | ||
| 29 | svcPacketEntities.UpdatedEntries = uint16(reader.TryReadBits(11)) | ||
| 30 | svcPacketEntities.Length = uint32(reader.TryReadBits(20)) | ||
| 31 | svcPacketEntities.UpdatedBaseline = reader.TryReadBool() | ||
| 32 | svcPacketEntities.Data = reader.TryReadBitsToSlice(uint64(svcPacketEntities.Length)) | ||
| 33 | |||
| 34 | return svcPacketEntities | ||
| 35 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcPaintmapData struct { | ||
| 8 | Length uint32 | ||
| 9 | Data []byte | ||
| 10 | } | ||
| 11 | |||
| 12 | func ParseSvcPaintmapData(reader *bitreader.Reader) SvcPaintmapData { | ||
| 13 | svcPaintmapData := SvcPaintmapData{ | ||
| 14 | Length: reader.TryReadUInt32(), | ||
| 15 | } | ||
| 16 | svcPaintmapData.Data = reader.TryReadBitsToSlice(uint64(svcPaintmapData.Length)) | ||
| 17 | |||
| 18 | return svcPaintmapData | ||
| 19 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcPrefetch struct { | ||
| 8 | SoundIndex int16 | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseSvcPrefetch(reader *bitreader.Reader) SvcPrefetch { | ||
| 12 | svcPrefetch := SvcPrefetch{ | ||
| 13 | SoundIndex: int16(reader.TryReadBits(13)), | ||
| 14 | } | ||
| 15 | |||
| 16 | return svcPrefetch | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcPrint struct { | ||
| 8 | Message string | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseSvcPrint(reader *bitreader.Reader) SvcPrint { | ||
| 12 | svcPrint := SvcPrint{ | ||
| 13 | Message: reader.TryReadString(), | ||
| 14 | } | ||
| 15 | // common psycopath behaviour | ||
| 16 | |||
| 17 | return svcPrint | ||
| 18 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcSendTable struct { | ||
| 8 | NeedsDecoder bool | ||
| 9 | Length uint8 | ||
| 10 | Props uint32 | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseSvcSendTable(reader *bitreader.Reader) SvcSendTable { | ||
| 14 | svcSendTable := SvcSendTable{ | ||
| 15 | NeedsDecoder: reader.TryReadBool(), | ||
| 16 | Length: reader.TryReadUInt8(), | ||
| 17 | } | ||
| 18 | svcSendTable.Props = uint32(reader.TryReadBits(uint64(svcSendTable.Length))) | ||
| 19 | |||
| 20 | return svcSendTable | ||
| 21 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcServerInfo struct { | ||
| 8 | Protocol uint16 | ||
| 9 | ServerCount uint32 | ||
| 10 | IsHltv bool | ||
| 11 | IsDedicated bool | ||
| 12 | ClientCrc int32 | ||
| 13 | StringTableCrc uint32 | ||
| 14 | MaxServerClasses uint16 | ||
| 15 | MapCrc uint32 | ||
| 16 | PlayerCount uint8 | ||
| 17 | MaxClients uint8 | ||
| 18 | TickInterval float32 | ||
| 19 | Platform string | ||
| 20 | GameDir string | ||
| 21 | MapName string | ||
| 22 | SkyName string | ||
| 23 | HostName string | ||
| 24 | } | ||
| 25 | |||
| 26 | func ParseSvcServerInfo(reader *bitreader.Reader) SvcServerInfo { | ||
| 27 | svcServerInfo := SvcServerInfo{ | ||
| 28 | Protocol: reader.TryReadUInt16(), | ||
| 29 | ServerCount: reader.TryReadUInt32(), | ||
| 30 | IsHltv: reader.TryReadBool(), | ||
| 31 | IsDedicated: reader.TryReadBool(), | ||
| 32 | ClientCrc: reader.TryReadSInt32(), | ||
| 33 | StringTableCrc: reader.TryReadUInt32(), | ||
| 34 | MaxServerClasses: reader.TryReadUInt16(), | ||
| 35 | MapCrc: reader.TryReadUInt32(), | ||
| 36 | PlayerCount: reader.TryReadUInt8(), | ||
| 37 | MaxClients: reader.TryReadUInt8(), | ||
| 38 | TickInterval: reader.TryReadFloat32(), | ||
| 39 | Platform: reader.TryReadStringLength(1), | ||
| 40 | GameDir: reader.TryReadString(), | ||
| 41 | MapName: reader.TryReadString(), | ||
| 42 | SkyName: reader.TryReadString(), | ||
| 43 | HostName: reader.TryReadString(), | ||
| 44 | } | ||
| 45 | |||
| 46 | return svcServerInfo | ||
| 47 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcSetPause struct { | ||
| 8 | Paused bool | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseSvcSetPause(reader *bitreader.Reader) SvcSetPause { | ||
| 12 | svcSetPause := SvcSetPause{ | ||
| 13 | Paused: reader.TryReadBool(), | ||
| 14 | } | ||
| 15 | |||
| 16 | return svcSetPause | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcSetView struct { | ||
| 8 | EntityIndex uint16 | ||
| 9 | } | ||
| 10 | |||
| 11 | func ParseSvcSetView(reader *bitreader.Reader) SvcSetView { | ||
| 12 | svcSetView := SvcSetView{ | ||
| 13 | EntityIndex: uint16(reader.TryReadBits(11)), | ||
| 14 | } | ||
| 15 | |||
| 16 | return svcSetView | ||
| 17 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcSounds struct { | ||
| 8 | ReliableSound bool | ||
| 9 | SoundCount uint8 | ||
| 10 | Length uint16 | ||
| 11 | Data []byte | ||
| 12 | } | ||
| 13 | |||
| 14 | func ParseSvcSounds(reader *bitreader.Reader) SvcSounds { | ||
| 15 | svcSounds := SvcSounds{ | ||
| 16 | ReliableSound: reader.TryReadBool(), | ||
| 17 | } | ||
| 18 | if svcSounds.ReliableSound { | ||
| 19 | svcSounds.SoundCount = 1 | ||
| 20 | svcSounds.Length = uint16(reader.TryReadUInt8()) | ||
| 21 | } else { | ||
| 22 | svcSounds.SoundCount = reader.TryReadUInt8() | ||
| 23 | svcSounds.Length = reader.TryReadUInt16() | ||
| 24 | } | ||
| 25 | svcSounds.Data = reader.TryReadBitsToSlice(uint64(svcSounds.Length)) | ||
| 26 | |||
| 27 | return svcSounds | ||
| 28 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcSplitScreen struct { | ||
| 8 | RemoveUser bool | ||
| 9 | Length uint16 | ||
| 10 | Data []byte | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseSvcSplitScreen(reader *bitreader.Reader) SvcSplitScreen { | ||
| 14 | svcSplitScreen := SvcSplitScreen{ | ||
| 15 | RemoveUser: reader.TryReadBool(), | ||
| 16 | Length: uint16(reader.TryReadBits(11)), | ||
| 17 | } | ||
| 18 | svcSplitScreen.Data = reader.TryReadBitsToSlice(uint64(svcSplitScreen.Length)) | ||
| 19 | |||
| 20 | return svcSplitScreen | ||
| 21 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcTempEntities struct { | ||
| 8 | NumEntries uint8 | ||
| 9 | Length uint32 | ||
| 10 | Data []byte | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseSvcTempEntities(reader *bitreader.Reader) SvcTempEntities { | ||
| 14 | svcTempEntities := SvcTempEntities{ | ||
| 15 | NumEntries: reader.TryReadUInt8(), | ||
| 16 | Length: uint32(reader.TryReadBits(17)), | ||
| 17 | } | ||
| 18 | svcTempEntities.Data = reader.TryReadBitsToSlice(uint64(svcTempEntities.Length)) | ||
| 19 | |||
| 20 | return svcTempEntities | ||
| 21 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcUpdateStringTable struct { | ||
| 8 | TableId uint8 | ||
| 9 | NumChangedEntries uint16 | ||
| 10 | Length int32 | ||
| 11 | Data []byte | ||
| 12 | } | ||
| 13 | |||
| 14 | func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { | ||
| 15 | svcUpdateStringTable := SvcUpdateStringTable{ | ||
| 16 | TableId: uint8(reader.TryReadBits(5)), | ||
| 17 | } | ||
| 18 | if reader.TryReadBool() { | ||
| 19 | svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16() | ||
| 20 | } | ||
| 21 | svcUpdateStringTable.Length = int32(reader.TryReadBits(20)) | ||
| 22 | svcUpdateStringTable.Data = reader.TryReadBitsToSlice(uint64(svcUpdateStringTable.Length)) | ||
| 23 | |||
| 24 | return svcUpdateStringTable | ||
| 25 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "fmt" | ||
| 5 | "math" | ||
| 6 | |||
| 7 | "github.com/pektezol/bitreader" | ||
| 8 | ) | ||
| 9 | |||
| 10 | type SvcUserMessage struct { | ||
| 11 | Type int8 | ||
| 12 | Length int16 | ||
| 13 | Data any | ||
| 14 | } | ||
| 15 | |||
| 16 | func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | ||
| 17 | svcUserMessage := SvcUserMessage{ | ||
| 18 | Type: int8(reader.TryReadBits(8)), | ||
| 19 | Length: int16(reader.TryReadBits(12)), | ||
| 20 | } | ||
| 21 | svcUserMessage.Data = reader.TryReadBitsToSlice(uint64(svcUserMessage.Length)) | ||
| 22 | userMessageReader := bitreader.NewReaderFromBytes(svcUserMessage.Data.([]byte), true) | ||
| 23 | switch svcUserMessage.Type { | ||
| 24 | case 60: | ||
| 25 | svcUserMessage.parseScoreboardTempUpdate(userMessageReader) | ||
| 26 | } | ||
| 27 | return svcUserMessage | ||
| 28 | } | ||
| 29 | |||
| 30 | func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreader.Reader) { | ||
| 31 | scoreboardTempUpdate := struct { | ||
| 32 | NumPortals int32 | ||
| 33 | TimeTaken int32 | ||
| 34 | }{ | ||
| 35 | NumPortals: reader.TryReadSInt32(), | ||
| 36 | TimeTaken: reader.TryReadSInt32(), | ||
| 37 | } | ||
| 38 | svcUserMessage.Data = scoreboardTempUpdate | ||
| 39 | fmt.Printf("Portal Count: %d\n", scoreboardTempUpdate.NumPortals) | ||
| 40 | fmt.Printf("CM Ticks: %d\n", int(math.Round(float64((float32(scoreboardTempUpdate.TimeTaken)/100.0)/float32(1.0/60.0))))) | ||
| 41 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcVoiceData struct { | ||
| 8 | FromClient uint8 | ||
| 9 | Proximity bool | ||
| 10 | Length int16 | ||
| 11 | Data []byte | ||
| 12 | } | ||
| 13 | |||
| 14 | func ParseSvcVoiceData(reader *bitreader.Reader) SvcVoiceData { | ||
| 15 | svcVoiceData := SvcVoiceData{ | ||
| 16 | FromClient: reader.TryReadUInt8(), | ||
| 17 | } | ||
| 18 | proximity := reader.TryReadUInt8() | ||
| 19 | if proximity != 0 { | ||
| 20 | svcVoiceData.Proximity = true | ||
| 21 | } | ||
| 22 | svcVoiceData.Data = reader.TryReadBitsToSlice(uint64(svcVoiceData.Length)) | ||
| 23 | |||
| 24 | return svcVoiceData | ||
| 25 | } | ||
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 @@ | |||
| 1 | package messages | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcVoiceInit struct { | ||
| 8 | Codec string | ||
| 9 | Quality uint8 | ||
| 10 | SampleRate int32 | ||
| 11 | } | ||
| 12 | |||
| 13 | func ParseSvcVoiceInit(reader *bitreader.Reader) SvcVoiceInit { | ||
| 14 | svcVoiceInit := SvcVoiceInit{ | ||
| 15 | Codec: reader.TryReadString(), | ||
| 16 | Quality: reader.TryReadUInt8(), | ||
| 17 | } | ||
| 18 | if svcVoiceInit.Quality == 0b11111111 { | ||
| 19 | svcVoiceInit.SampleRate = reader.TryReadSInt32() | ||
| 20 | } else { | ||
| 21 | if svcVoiceInit.Codec == "vaudio_celt" { | ||
| 22 | svcVoiceInit.SampleRate = 22050 | ||
| 23 | } else { | ||
| 24 | svcVoiceInit.SampleRate = 11025 | ||
| 25 | } | ||
| 26 | } | ||
| 27 | |||
| 28 | return svcVoiceInit | ||
| 29 | } | ||