From f44d9e89fe2ade9e81f22d09c10c3a43dd345d35 Mon Sep 17 00:00:00 2001 From: Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> Date: Sun, 17 Sep 2023 18:37:44 +0300 Subject: touchup and fix bug --- pkg/classes/cmdInfo.go | 30 ++++++++++++++++++++++++++++-- pkg/classes/serverClassInfo.go | 4 ++-- pkg/messages/types/svcUpdateStringTable.go | 2 +- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/pkg/classes/cmdInfo.go b/pkg/classes/cmdInfo.go index b56afed..545d14b 100644 --- a/pkg/classes/cmdInfo.go +++ b/pkg/classes/cmdInfo.go @@ -1,11 +1,13 @@ package classes import ( + "fmt" + "github.com/pektezol/bitreader" ) type CmdInfo struct { - Flags int32 + Flags string ViewOrigin []float32 ViewAngles []float32 LocalViewAngles []float32 @@ -14,9 +16,33 @@ type CmdInfo struct { LocalViewAngles2 []float32 } +type CmdInfoFlags int + +const ( + ECmdInfoFlagsNone = 0 + ECmdInfoFlagsUseOrigin2 = 1 + ECmdInfoFlagsUserAngles2 = 1 << 1 + ECmdInfoFlagsNoInterp = 1 << 2 +) + +func (cmdInfoFlags CmdInfoFlags) String() string { + switch cmdInfoFlags { + case ECmdInfoFlagsNone: + return "None" + case ECmdInfoFlagsUseOrigin2: + return "UseOrigin2" + case ECmdInfoFlagsUserAngles2: + return "UserAngles2" + case ECmdInfoFlagsNoInterp: + return "NoInterp" + default: + return fmt.Sprintf("%d", int(cmdInfoFlags)) + } +} + func ParseCmdInfo(reader *bitreader.Reader) CmdInfo { return CmdInfo{ - Flags: int32(reader.TryReadBits(32)), + Flags: CmdInfoFlags(reader.TryReadUInt32()).String(), ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, diff --git a/pkg/classes/serverClassInfo.go b/pkg/classes/serverClassInfo.go index fbccffb..36bd8b8 100644 --- a/pkg/classes/serverClassInfo.go +++ b/pkg/classes/serverClassInfo.go @@ -5,14 +5,14 @@ import ( ) type ServerClassInfo struct { - ClassId int16 + ClassId uint16 ClassName string DataTableName string } func ParseServerClassInfo(reader *bitreader.Reader, count int, numOfClasses int) ServerClassInfo { return ServerClassInfo{ - ClassId: int16(reader.TryReadBits(16)), + ClassId: reader.TryReadUInt16(), ClassName: reader.TryReadString(), DataTableName: reader.TryReadString(), } diff --git a/pkg/messages/types/svcUpdateStringTable.go b/pkg/messages/types/svcUpdateStringTable.go index 9a3cbe0..0ff076c 100644 --- a/pkg/messages/types/svcUpdateStringTable.go +++ b/pkg/messages/types/svcUpdateStringTable.go @@ -11,7 +11,7 @@ type SvcUpdateStringTable struct { func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { svcUpdateStringTable := SvcUpdateStringTable{ - TableId: reader.TryReadUInt8(), + TableId: uint8(reader.TryReadBits(5)), } if reader.TryReadBool() { svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16() -- cgit v1.2.3