diff options
| author | BiSaXa <1669855+BiSaXa@users.noreply.github.com> | 2022-09-07 23:08:58 +0300 |
|---|---|---|
| committer | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-16 21:39:36 +0300 |
| commit | 0b8d982acae2ae102e6dee29afff3b621f32cd8f (patch) | |
| tree | 5754719ec8f17745bc6413f621974f1120443788 /classes/classes.go | |
| parent | first rewrite commit using bisaxa/bitreader (diff) | |
| download | sdp.go-0b8d982acae2ae102e6dee29afff3b621f32cd8f.tar.gz sdp.go-0b8d982acae2ae102e6dee29afff3b621f32cd8f.tar.bz2 sdp.go-0b8d982acae2ae102e6dee29afff3b621f32cd8f.zip | |
class parses and other stuff
Diffstat (limited to 'classes/classes.go')
| -rw-r--r-- | classes/classes.go | 104 |
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 @@ | |||
| 1 | package classes | 1 | package classes |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 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 | ||
| 10 | func ParseCmdInfo(file *os.File, MSSC int) []CmdInfo { | 11 | func 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 | ||
| 46 | func ParseUserCmdInfo(file *os.File, size int) UserCmdInfo { | 28 | func 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 | }*/ | ||