diff options
| author | BiSaXa <1669855+BiSaXa@users.noreply.github.com> | 2022-08-28 18:46:20 +0300 |
|---|---|---|
| committer | BiSaXa <1669855+BiSaXa@users.noreply.github.com> | 2022-08-28 18:46:20 +0300 |
| commit | bb3801544a0ed1f47c7074649c81f638b48d2f25 (patch) | |
| tree | 055d5fc4cb71d980686dc5e45925c0f6185a1541 | |
| parent | Update and rename go-windows-amd64.yml to CI.yml (diff) | |
| download | sdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.tar.gz sdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.tar.bz2 sdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.zip | |
module name and other changes
| -rw-r--r-- | classes/cmdInfo.go | 2 | ||||
| -rw-r--r-- | classes/userCmdInfo.go | 15 | ||||
| -rw-r--r-- | go.mod | 4 | ||||
| -rw-r--r-- | go.sum | 2 | ||||
| -rw-r--r-- | main.go | 16 | ||||
| -rw-r--r-- | messages/messages.go | 10 | ||||
| -rw-r--r-- | utils/utils.go | 31 |
7 files changed, 72 insertions, 8 deletions
diff --git a/classes/cmdInfo.go b/classes/cmdInfo.go index c1faadd..7e7e1bc 100644 --- a/classes/cmdInfo.go +++ b/classes/cmdInfo.go | |||
| @@ -1,6 +1,6 @@ | |||
| 1 | package classes | 1 | package classes |
| 2 | 2 | ||
| 3 | import "parser/utils" | 3 | import "github.com/bisaxa/demoparser/utils" |
| 4 | 4 | ||
| 5 | type CmdInfo struct { | 5 | type CmdInfo struct { |
| 6 | Flags int32 | 6 | Flags int32 |
diff --git a/classes/userCmdInfo.go b/classes/userCmdInfo.go index aae1804..a85a495 100644 --- a/classes/userCmdInfo.go +++ b/classes/userCmdInfo.go | |||
| @@ -1,5 +1,11 @@ | |||
| 1 | package classes | 1 | package classes |
| 2 | 2 | ||
| 3 | import ( | ||
| 4 | "fmt" | ||
| 5 | |||
| 6 | "github.com/bisaxa/demoparser/utils" | ||
| 7 | ) | ||
| 8 | |||
| 3 | type UserCmdInfo struct { | 9 | type UserCmdInfo struct { |
| 4 | CommandNumber int32 | 10 | CommandNumber int32 |
| 5 | TickCount int32 | 11 | TickCount int32 |
| @@ -11,6 +17,15 @@ type UserCmdInfo struct { | |||
| 11 | UpMove float32 | 17 | UpMove float32 |
| 12 | } | 18 | } |
| 13 | 19 | ||
| 20 | func UserCmdInfoInit(byteArr []byte, size int32) (output UserCmdInfo) { | ||
| 21 | var class UserCmdInfo | ||
| 22 | if utils.ReadBitsFromReversedByteArray1(byteArr) { | ||
| 23 | class.CommandNumber = int32(utils.ReadBitsFromReversedByteArray16(byteArr, 15)) | ||
| 24 | fmt.Printf("%b\n", class.CommandNumber) | ||
| 25 | } | ||
| 26 | return class | ||
| 27 | } | ||
| 28 | |||
| 14 | /* | 29 | /* |
| 15 | func UserCmdInfoInit(byteArr []byte, size int) (output UserCmdInfo) { | 30 | func UserCmdInfoInit(byteArr []byte, size int) (output UserCmdInfo) { |
| 16 | var class UserCmdInfo | 31 | var class UserCmdInfo |
| @@ -1,3 +1,5 @@ | |||
| 1 | module parser | 1 | module github.com/bisaxa/demoparser |
| 2 | 2 | ||
| 3 | go 1.19 | 3 | go 1.19 |
| 4 | |||
| 5 | require github.com/32bitkid/bitreader v1.0.1 | ||
| @@ -0,0 +1,2 @@ | |||
| 1 | github.com/32bitkid/bitreader v1.0.1 h1:BlmpTTTL1us9nQ+EUh4M/r5/mY+j4JeC5qOCgL/08ms= | ||
| 2 | github.com/32bitkid/bitreader v1.0.1/go.mod h1:wiZHryiWx8YsSuS17YiR7Be4rz6FNxxQl/zs1eWJBMo= | ||
| @@ -5,11 +5,23 @@ import ( | |||
| 5 | "io/ioutil" | 5 | "io/ioutil" |
| 6 | "log" | 6 | "log" |
| 7 | "os" | 7 | "os" |
| 8 | "parser/messages" | 8 | |
| 9 | "parser/utils" | 9 | "github.com/bisaxa/demoparser/messages" |
| 10 | "github.com/bisaxa/demoparser/utils" | ||
| 10 | ) | 11 | ) |
| 11 | 12 | ||
| 12 | func main() { | 13 | func main() { |
| 14 | /*var arr []byte = make([]byte, 4) | ||
| 15 | arr[0] = 200 | ||
| 16 | arr[1] = 10 | ||
| 17 | fmt.Printf("%b\n", arr[0]) | ||
| 18 | for _, s := range arr { | ||
| 19 | fmt.Printf("Value: %d - Binary : %b\n", s, s) | ||
| 20 | } | ||
| 21 | state := utils.ReadBitsFromReversedByteArray1(arr) | ||
| 22 | value := utils.ReadBitsFromReversedByteArray32(arr, 9) | ||
| 23 | fmt.Println(state) | ||
| 24 | fmt.Printf("Value: %d - Binary : %b\n", value, value)*/ | ||
| 13 | if len(os.Args) != 2 { | 25 | if len(os.Args) != 2 { |
| 14 | log.Fatal("Specify file in command line arguments.") | 26 | log.Fatal("Specify file in command line arguments.") |
| 15 | } | 27 | } |
diff --git a/messages/messages.go b/messages/messages.go index 7d00ec1..075aece 100644 --- a/messages/messages.go +++ b/messages/messages.go | |||
| @@ -3,7 +3,9 @@ package messages | |||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | "os" | 5 | "os" |
| 6 | "parser/utils" | 6 | |
| 7 | "github.com/bisaxa/demoparser/classes" | ||
| 8 | "github.com/bisaxa/demoparser/utils" | ||
| 7 | ) | 9 | ) |
| 8 | 10 | ||
| 9 | const MSSC int32 = 2 | 11 | const MSSC int32 = 2 |
| @@ -46,12 +48,12 @@ func ParseMessage(file *os.File) (statusCode int) { | |||
| 46 | return 4 | 48 | return 4 |
| 47 | case 0x05: // Usercmd FIXME: Correct bit-packing inside classes | 49 | case 0x05: // Usercmd FIXME: Correct bit-packing inside classes |
| 48 | var usercmd UserCmd | 50 | var usercmd UserCmd |
| 49 | // var usercmdinfo classes.UserCmdInfo | 51 | var usercmdinfo classes.UserCmdInfo |
| 50 | usercmd.Cmd = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) | 52 | usercmd.Cmd = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) |
| 51 | usercmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) | 53 | usercmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) |
| 52 | usercmd.Data = utils.ReadByteFromFile(file, usercmd.Size) | 54 | usercmd.Data = utils.ReadByteFromFile(file, usercmd.Size) |
| 53 | // usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, int(usercmd.Size)) | 55 | usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, usercmd.Size) |
| 54 | // fmt.Printf("[%d] UserCmd: %v\n", utils.IntFromBytes(Tick), usercmdinfo) | 56 | fmt.Printf("[%d] UserCmd: %v\n", message.Tick, usercmdinfo) |
| 55 | return 5 | 57 | return 5 |
| 56 | case 0x06: // DataTables | 58 | case 0x06: // DataTables |
| 57 | var datatables DataTables | 59 | var datatables DataTables |
diff --git a/utils/utils.go b/utils/utils.go index 5226e80..6874e6b 100644 --- a/utils/utils.go +++ b/utils/utils.go | |||
| @@ -1,12 +1,15 @@ | |||
| 1 | package utils | 1 | package utils |
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "bytes" | ||
| 4 | "encoding/binary" | 5 | "encoding/binary" |
| 5 | "log" | 6 | "log" |
| 6 | "math" | 7 | "math" |
| 7 | "math/bits" | 8 | "math/bits" |
| 8 | "os" | 9 | "os" |
| 9 | "unsafe" | 10 | "unsafe" |
| 11 | |||
| 12 | "github.com/32bitkid/bitreader" | ||
| 10 | ) | 13 | ) |
| 11 | 14 | ||
| 12 | func CheckError(e error) { | 15 | func CheckError(e error) { |
| @@ -15,6 +18,34 @@ func CheckError(e error) { | |||
| 15 | } | 18 | } |
| 16 | } | 19 | } |
| 17 | 20 | ||
| 21 | func ReadBitsFromReversedByteArray1(byteArr []byte) bool { | ||
| 22 | r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) | ||
| 23 | value, err := r.Read1() | ||
| 24 | CheckError(err) | ||
| 25 | return value | ||
| 26 | } | ||
| 27 | |||
| 28 | func ReadBitsFromReversedByteArray8(byteArr []byte, bitLength uint) uint8 { | ||
| 29 | r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) | ||
| 30 | value, err := r.Read8(bitLength) | ||
| 31 | CheckError(err) | ||
| 32 | return value | ||
| 33 | } | ||
| 34 | |||
| 35 | func ReadBitsFromReversedByteArray16(byteArr []byte, bitLength uint) uint16 { | ||
| 36 | r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) | ||
| 37 | value, err := r.Read16(bitLength) | ||
| 38 | CheckError(err) | ||
| 39 | return value | ||
| 40 | } | ||
| 41 | |||
| 42 | func ReadBitsFromReversedByteArray32(byteArr []byte, bitLength uint) uint32 { | ||
| 43 | r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) | ||
| 44 | value, err := r.Read32(bitLength) | ||
| 45 | CheckError(err) | ||
| 46 | return value | ||
| 47 | } | ||
| 48 | |||
| 18 | func ReverseByteArrayValues(byteArr []byte, size int) []byte { | 49 | func ReverseByteArrayValues(byteArr []byte, size int) []byte { |
| 19 | arr := make([]byte, size) | 50 | arr := make([]byte, size) |
| 20 | for index, byteValue := range byteArr { | 51 | for index, byteValue := range byteArr { |