aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBiSaXa <1669855+BiSaXa@users.noreply.github.com>2022-08-28 18:46:20 +0300
committerBiSaXa <1669855+BiSaXa@users.noreply.github.com>2022-08-28 18:46:20 +0300
commitbb3801544a0ed1f47c7074649c81f638b48d2f25 (patch)
tree055d5fc4cb71d980686dc5e45925c0f6185a1541
parentUpdate and rename go-windows-amd64.yml to CI.yml (diff)
downloadsdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.tar.gz
sdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.tar.bz2
sdp.go-bb3801544a0ed1f47c7074649c81f638b48d2f25.zip
module name and other changes
-rw-r--r--classes/cmdInfo.go2
-rw-r--r--classes/userCmdInfo.go15
-rw-r--r--go.mod4
-rw-r--r--go.sum2
-rw-r--r--main.go16
-rw-r--r--messages/messages.go10
-rw-r--r--utils/utils.go31
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 @@
1package classes 1package classes
2 2
3import "parser/utils" 3import "github.com/bisaxa/demoparser/utils"
4 4
5type CmdInfo struct { 5type 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 @@
1package classes 1package classes
2 2
3import (
4 "fmt"
5
6 "github.com/bisaxa/demoparser/utils"
7)
8
3type UserCmdInfo struct { 9type 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
20func 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/*
15func UserCmdInfoInit(byteArr []byte, size int) (output UserCmdInfo) { 30func UserCmdInfoInit(byteArr []byte, size int) (output UserCmdInfo) {
16 var class UserCmdInfo 31 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 @@
1module parser 1module github.com/bisaxa/demoparser
2 2
3go 1.19 3go 1.19
4
5require 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 @@
1github.com/32bitkid/bitreader v1.0.1 h1:BlmpTTTL1us9nQ+EUh4M/r5/mY+j4JeC5qOCgL/08ms=
2github.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 (
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
12func main() { 13func 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
3import ( 3import (
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
9const MSSC int32 = 2 11const 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 @@
1package utils 1package utils
2 2
3import ( 3import (
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
12func CheckError(e error) { 15func CheckError(e error) {
@@ -15,6 +18,34 @@ func CheckError(e error) {
15 } 18 }
16} 19}
17 20
21func 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
28func 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
35func 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
42func 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
18func ReverseByteArrayValues(byteArr []byte, size int) []byte { 49func 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 {