From bb3801544a0ed1f47c7074649c81f638b48d2f25 Mon Sep 17 00:00:00 2001 From: BiSaXa <1669855+BiSaXa@users.noreply.github.com> Date: Sun, 28 Aug 2022 18:46:20 +0300 Subject: module name and other changes --- classes/cmdInfo.go | 2 +- classes/userCmdInfo.go | 15 +++++++++++++++ go.mod | 4 +++- go.sum | 2 ++ main.go | 16 ++++++++++++++-- messages/messages.go | 10 ++++++---- 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 @@ package classes -import "parser/utils" +import "github.com/bisaxa/demoparser/utils" type CmdInfo struct { 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 @@ package classes +import ( + "fmt" + + "github.com/bisaxa/demoparser/utils" +) + type UserCmdInfo struct { CommandNumber int32 TickCount int32 @@ -11,6 +17,15 @@ type UserCmdInfo struct { UpMove float32 } +func UserCmdInfoInit(byteArr []byte, size int32) (output UserCmdInfo) { + var class UserCmdInfo + if utils.ReadBitsFromReversedByteArray1(byteArr) { + class.CommandNumber = int32(utils.ReadBitsFromReversedByteArray16(byteArr, 15)) + fmt.Printf("%b\n", class.CommandNumber) + } + return class +} + /* func UserCmdInfoInit(byteArr []byte, size int) (output UserCmdInfo) { var class UserCmdInfo diff --git a/go.mod b/go.mod index d0e178d..a8203a2 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,5 @@ -module parser +module github.com/bisaxa/demoparser go 1.19 + +require github.com/32bitkid/bitreader v1.0.1 diff --git a/go.sum b/go.sum index e69de29..6bc7cd5 100644 --- a/go.sum +++ b/go.sum @@ -0,0 +1,2 @@ +github.com/32bitkid/bitreader v1.0.1 h1:BlmpTTTL1us9nQ+EUh4M/r5/mY+j4JeC5qOCgL/08ms= +github.com/32bitkid/bitreader v1.0.1/go.mod h1:wiZHryiWx8YsSuS17YiR7Be4rz6FNxxQl/zs1eWJBMo= diff --git a/main.go b/main.go index 7978414..d1053af 100644 --- a/main.go +++ b/main.go @@ -5,11 +5,23 @@ import ( "io/ioutil" "log" "os" - "parser/messages" - "parser/utils" + + "github.com/bisaxa/demoparser/messages" + "github.com/bisaxa/demoparser/utils" ) func main() { + /*var arr []byte = make([]byte, 4) + arr[0] = 200 + arr[1] = 10 + fmt.Printf("%b\n", arr[0]) + for _, s := range arr { + fmt.Printf("Value: %d - Binary : %b\n", s, s) + } + state := utils.ReadBitsFromReversedByteArray1(arr) + value := utils.ReadBitsFromReversedByteArray32(arr, 9) + fmt.Println(state) + fmt.Printf("Value: %d - Binary : %b\n", value, value)*/ if len(os.Args) != 2 { log.Fatal("Specify file in command line arguments.") } 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 import ( "fmt" "os" - "parser/utils" + + "github.com/bisaxa/demoparser/classes" + "github.com/bisaxa/demoparser/utils" ) const MSSC int32 = 2 @@ -46,12 +48,12 @@ func ParseMessage(file *os.File) (statusCode int) { return 4 case 0x05: // Usercmd FIXME: Correct bit-packing inside classes var usercmd UserCmd - // var usercmdinfo classes.UserCmdInfo + var usercmdinfo classes.UserCmdInfo usercmd.Cmd = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) usercmd.Size = int32(utils.IntFromBytes(utils.ReadByteFromFile(file, 4))) usercmd.Data = utils.ReadByteFromFile(file, usercmd.Size) - // usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, int(usercmd.Size)) - // fmt.Printf("[%d] UserCmd: %v\n", utils.IntFromBytes(Tick), usercmdinfo) + usercmdinfo = classes.UserCmdInfoInit(usercmd.Data, usercmd.Size) + fmt.Printf("[%d] UserCmd: %v\n", message.Tick, usercmdinfo) return 5 case 0x06: // DataTables 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 @@ package utils import ( + "bytes" "encoding/binary" "log" "math" "math/bits" "os" "unsafe" + + "github.com/32bitkid/bitreader" ) func CheckError(e error) { @@ -15,6 +18,34 @@ func CheckError(e error) { } } +func ReadBitsFromReversedByteArray1(byteArr []byte) bool { + r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) + value, err := r.Read1() + CheckError(err) + return value +} + +func ReadBitsFromReversedByteArray8(byteArr []byte, bitLength uint) uint8 { + r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) + value, err := r.Read8(bitLength) + CheckError(err) + return value +} + +func ReadBitsFromReversedByteArray16(byteArr []byte, bitLength uint) uint16 { + r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) + value, err := r.Read16(bitLength) + CheckError(err) + return value +} + +func ReadBitsFromReversedByteArray32(byteArr []byte, bitLength uint) uint32 { + r := bitreader.NewReader(bytes.NewBuffer(ReverseByteArrayValues(byteArr, len(byteArr)))) + value, err := r.Read32(bitLength) + CheckError(err) + return value +} + func ReverseByteArrayValues(byteArr []byte, size int) []byte { arr := make([]byte, size) for index, byteValue := range byteArr { -- cgit v1.2.3