aboutsummaryrefslogtreecommitdiff
path: root/classes/classes.go
diff options
context:
space:
mode:
Diffstat (limited to 'classes/classes.go')
-rw-r--r--classes/classes.go104
1 files changed, 74 insertions, 30 deletions
diff --git a/classes/classes.go b/classes/classes.go
index beaab77..1a431f3 100644
--- a/classes/classes.go
+++ b/classes/classes.go
@@ -1,6 +1,7 @@
1package classes 1package classes
2 2
3import ( 3import (
4 "encoding/binary"
4 "os" 5 "os"
5 6
6 "github.com/bisaxa/bitreader" 7 "github.com/bisaxa/bitreader"
@@ -8,45 +9,26 @@ import (
8) 9)
9 10
10func ParseCmdInfo(file *os.File, MSSC int) []CmdInfo { 11func ParseCmdInfo(file *os.File, MSSC int) []CmdInfo {
11 reader := bitreader.Reader(file, true) 12 array := utils.ReadByteFromFile(file, 76*int32(MSSC))
12 var cmdinfo CmdInfo
13 var cmdinfoarray []CmdInfo 13 var cmdinfoarray []CmdInfo
14 for count := 0; count < MSSC; count++ { 14 for count := 0; count < MSSC; count++ {
15 cmdinfo.Flags = int32(reader.TryReadInt32()) 15 var cmdinfo CmdInfo
16 var floatArray [3]float32 16 cmdinfo.Flags = int32(binary.LittleEndian.Uint32(array[0+76*count : 4+76*count]))
17 for i := 0; i < 3; i++ { 17 cmdinfo.ViewOrigin = utils.FloatArrFromBytes(array[4+76*count : 16+76*count])
18 floatArray[i] = reader.TryReadFloat32() 18 cmdinfo.ViewAngles = utils.FloatArrFromBytes(array[16+76*count : 28+76*count])
19 } 19 cmdinfo.LocalViewAngles = utils.FloatArrFromBytes(array[28+76*count : 40+76*count])
20 cmdinfo.ViewOrigin = floatArray[:] 20 cmdinfo.ViewOrigin2 = utils.FloatArrFromBytes(array[40+76*count : 52+76*count])
21 for i := 0; i < 3; i++ { 21 cmdinfo.ViewAngles2 = utils.FloatArrFromBytes(array[52+76*count : 64+76*count])
22 floatArray[i] = reader.TryReadFloat32() 22 cmdinfo.LocalViewAngles2 = utils.FloatArrFromBytes(array[64+76*count : 76+76*count])
23 }
24 cmdinfo.ViewAngles = floatArray[:]
25 for i := 0; i < 3; i++ {
26 floatArray[i] = reader.TryReadFloat32()
27 }
28 cmdinfo.LocalViewAngles = floatArray[:]
29 for i := 0; i < 3; i++ {
30 floatArray[i] = reader.TryReadFloat32()
31 }
32 cmdinfo.ViewOrigin2 = floatArray[:]
33 for i := 0; i < 3; i++ {
34 floatArray[i] = reader.TryReadFloat32()
35 }
36 cmdinfo.ViewAngles2 = floatArray[:]
37 for i := 0; i < 3; i++ {
38 floatArray[i] = reader.TryReadFloat32()
39 }
40 cmdinfo.LocalViewAngles2 = floatArray[:]
41 cmdinfoarray = append(cmdinfoarray, cmdinfo) 23 cmdinfoarray = append(cmdinfoarray, cmdinfo)
42 } 24 }
43 return cmdinfoarray 25 return cmdinfoarray
44} 26}
45 27
46func ParseUserCmdInfo(file *os.File, size int) UserCmdInfo { 28func ParseUserCmdInfo(file *os.File, size int) UserCmdInfo {
47 count := 0
48 reader := bitreader.Reader(file, true) 29 reader := bitreader.Reader(file, true)
49 var usercmd UserCmdInfo 30 var usercmd UserCmdInfo
31 count := 0
50 flag, err := reader.ReadBool() 32 flag, err := reader.ReadBool()
51 utils.CheckError(err) 33 utils.CheckError(err)
52 if flag { 34 if flag {
@@ -150,6 +132,68 @@ func ParseUserCmdInfo(file *os.File, size int) UserCmdInfo {
150 count += 16 132 count += 16
151 } 133 }
152 count++ 134 count++
153 reader.SkipBits(size*8 - count) 135 reader.SkipBits(size*8 - count) // Skip remaining bits from specified size
154 return usercmd 136 return usercmd
155} 137}
138
139/*func ParseStringTable(file *os.File, size int) []StringTable {
140 reader := bitreader.Reader(file, true)
141 var stringtable StringTable
142 var stringtablearray []StringTable
143 //count := 0
144 stringtable.NumOfTables = int8(reader.TryReadInt8())
145 for i := 0; i < int(stringtable.NumOfTables); i++ {
146 stringtable.TableName = utils.ReadStringFromFile(file)
147 stringtable.NumOfEntries = int16(reader.TryReadInt16())
148 stringtable.EntryName = utils.ReadStringFromFile(file)
149 flag, err := reader.ReadBool()
150 utils.CheckError(err)
151 if flag {
152 stringtable.EntrySize = int16(reader.TryReadInt16())
153 }
154 flag, err = reader.ReadBool()
155 utils.CheckError(err)
156 if flag {
157 fmt.Println(int(stringtable.EntrySize))
158 reader.SkipBytes(int(stringtable.EntrySize))
159 var bytearray []byte
160 for i := 0; i < int(stringtable.EntrySize); i++ {
161 value, err := reader.ReadBytes(1)
162 utils.CheckError(err)
163 bytearray = append(bytearray, byte(value))
164 }
165 stringtable.EntryData = bytearrray
166 }
167 flag, err = reader.ReadBool()
168 utils.CheckError(err)
169 if flag {
170 stringtable.NumOfClientEntries = int16(reader.TryReadInt16())
171 }
172 flag, err = reader.ReadBool()
173 utils.CheckError(err)
174 if flag {
175 stringtable.ClientEntryName = utils.ReadStringFromFile(file)
176 }
177 flag, err = reader.ReadBool()
178 utils.CheckError(err)
179 if flag {
180 stringtable.ClientEntrySize = int16(reader.TryReadInt16())
181 }
182 flag, err = reader.ReadBool()
183 utils.CheckError(err)
184 if flag {
185 reader.SkipBytes(int(stringtable.ClientEntrySize))
186 /*var bytearray []byte
187 for i := 0; i < int(stringtable.ClientEntrySize); i++ {
188 value, err := reader.ReadBytes(1)
189 utils.CheckError(err)
190 bytearray = append(bytearray, byte(value))
191 }
192 stringtable.ClientEntryData = bytearrray
193 }
194 stringtablearray = append(stringtablearray, stringtable)
195 }
196
197 //reader.SkipBits(size*8 - 8)
198 return stringtablearray
199}*/