aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkg/classes/cmdInfo.go30
-rw-r--r--pkg/classes/serverClassInfo.go4
-rw-r--r--pkg/messages/types/svcUpdateStringTable.go2
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 @@
1package classes 1package classes
2 2
3import ( 3import (
4 "fmt"
5
4 "github.com/pektezol/bitreader" 6 "github.com/pektezol/bitreader"
5) 7)
6 8
7type CmdInfo struct { 9type CmdInfo struct {
8 Flags int32 10 Flags string
9 ViewOrigin []float32 11 ViewOrigin []float32
10 ViewAngles []float32 12 ViewAngles []float32
11 LocalViewAngles []float32 13 LocalViewAngles []float32
@@ -14,9 +16,33 @@ type CmdInfo struct {
14 LocalViewAngles2 []float32 16 LocalViewAngles2 []float32
15} 17}
16 18
19type CmdInfoFlags int
20
21const (
22 ECmdInfoFlagsNone = 0
23 ECmdInfoFlagsUseOrigin2 = 1
24 ECmdInfoFlagsUserAngles2 = 1 << 1
25 ECmdInfoFlagsNoInterp = 1 << 2
26)
27
28func (cmdInfoFlags CmdInfoFlags) String() string {
29 switch cmdInfoFlags {
30 case ECmdInfoFlagsNone:
31 return "None"
32 case ECmdInfoFlagsUseOrigin2:
33 return "UseOrigin2"
34 case ECmdInfoFlagsUserAngles2:
35 return "UserAngles2"
36 case ECmdInfoFlagsNoInterp:
37 return "NoInterp"
38 default:
39 return fmt.Sprintf("%d", int(cmdInfoFlags))
40 }
41}
42
17func ParseCmdInfo(reader *bitreader.Reader) CmdInfo { 43func ParseCmdInfo(reader *bitreader.Reader) CmdInfo {
18 return CmdInfo{ 44 return CmdInfo{
19 Flags: int32(reader.TryReadBits(32)), 45 Flags: CmdInfoFlags(reader.TryReadUInt32()).String(),
20 ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, 46 ViewOrigin: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
21 ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, 47 ViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()},
22 LocalViewAngles: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, 48 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 (
5) 5)
6 6
7type ServerClassInfo struct { 7type ServerClassInfo struct {
8 ClassId int16 8 ClassId uint16
9 ClassName string 9 ClassName string
10 DataTableName string 10 DataTableName string
11} 11}
12 12
13func ParseServerClassInfo(reader *bitreader.Reader, count int, numOfClasses int) ServerClassInfo { 13func ParseServerClassInfo(reader *bitreader.Reader, count int, numOfClasses int) ServerClassInfo {
14 return ServerClassInfo{ 14 return ServerClassInfo{
15 ClassId: int16(reader.TryReadBits(16)), 15 ClassId: reader.TryReadUInt16(),
16 ClassName: reader.TryReadString(), 16 ClassName: reader.TryReadString(),
17 DataTableName: reader.TryReadString(), 17 DataTableName: reader.TryReadString(),
18 } 18 }
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 {
11 11
12func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable { 12func ParseSvcUpdateStringTable(reader *bitreader.Reader) SvcUpdateStringTable {
13 svcUpdateStringTable := SvcUpdateStringTable{ 13 svcUpdateStringTable := SvcUpdateStringTable{
14 TableId: reader.TryReadUInt8(), 14 TableId: uint8(reader.TryReadBits(5)),
15 } 15 }
16 if reader.TryReadBool() { 16 if reader.TryReadBool() {
17 svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16() 17 svcUpdateStringTable.NumChangedEntries = reader.TryReadUInt16()