diff options
Diffstat (limited to 'pkg/classes')
| -rw-r--r-- | pkg/classes/cmdInfo.go | 30 | ||||
| -rw-r--r-- | pkg/classes/serverClassInfo.go | 4 |
2 files changed, 30 insertions, 4 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 @@ | |||
| 1 | package classes | 1 | package classes |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | ||
| 5 | |||
| 4 | "github.com/pektezol/bitreader" | 6 | "github.com/pektezol/bitreader" |
| 5 | ) | 7 | ) |
| 6 | 8 | ||
| 7 | type CmdInfo struct { | 9 | type 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 | ||
| 19 | type CmdInfoFlags int | ||
| 20 | |||
| 21 | const ( | ||
| 22 | ECmdInfoFlagsNone = 0 | ||
| 23 | ECmdInfoFlagsUseOrigin2 = 1 | ||
| 24 | ECmdInfoFlagsUserAngles2 = 1 << 1 | ||
| 25 | ECmdInfoFlagsNoInterp = 1 << 2 | ||
| 26 | ) | ||
| 27 | |||
| 28 | func (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 | |||
| 17 | func ParseCmdInfo(reader *bitreader.Reader) CmdInfo { | 43 | func 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 | ||
| 7 | type ServerClassInfo struct { | 7 | type ServerClassInfo struct { |
| 8 | ClassId int16 | 8 | ClassId uint16 |
| 9 | ClassName string | 9 | ClassName string |
| 10 | DataTableName string | 10 | DataTableName string |
| 11 | } | 11 | } |
| 12 | 12 | ||
| 13 | func ParseServerClassInfo(reader *bitreader.Reader, count int, numOfClasses int) ServerClassInfo { | 13 | func 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 | } |