aboutsummaryrefslogtreecommitdiff
path: root/packets/classes/stringtable.go
diff options
context:
space:
mode:
Diffstat (limited to 'packets/classes/stringtable.go')
-rw-r--r--packets/classes/stringtable.go36
1 files changed, 35 insertions, 1 deletions
diff --git a/packets/classes/stringtable.go b/packets/classes/stringtable.go
index df8e840..64e8496 100644
--- a/packets/classes/stringtable.go
+++ b/packets/classes/stringtable.go
@@ -1,5 +1,39 @@
1package classes 1package classes
2 2
3func ParseStringTable() { 3import (
4 "bytes"
4 5
6 "github.com/pektezol/bitreader"
7)
8
9func ParseStringTable(data []byte) []StringTable {
10 reader := bitreader.Reader(bytes.NewReader(data), true)
11 var stringTables []StringTable
12 numOfTables := reader.TryReadInt8()
13 for i := 0; i < int(numOfTables); i++ {
14 var stringTable StringTable
15 stringTable.TableName = reader.TryReadString()
16 stringTable.NumOfEntries = int16(reader.TryReadInt16())
17 stringTable.EntryName = reader.TryReadString()
18 if reader.TryReadBool() {
19 stringTable.EntrySize = int16(reader.TryReadInt16())
20 }
21 if reader.TryReadBool() {
22 stringTable.EntryData = reader.TryReadBytesToSlice(int(stringTable.EntrySize))
23 }
24 if reader.TryReadBool() {
25 stringTable.NumOfClientEntries = int16(reader.TryReadInt16())
26 }
27 if reader.TryReadBool() {
28 stringTable.ClientEntryName = reader.TryReadString()
29 }
30 if reader.TryReadBool() {
31 stringTable.ClientEntrySize = int16(reader.TryReadInt16())
32 }
33 if reader.TryReadBool() {
34 stringTable.ClientEntryData = reader.TryReadBytesToSlice(int(stringTable.ClientEntrySize))
35 }
36 stringTables = append(stringTables, stringTable)
37 }
38 return stringTables
5} 39}