aboutsummaryrefslogtreecommitdiff
path: root/messages
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2022-11-07 16:09:44 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-16 21:39:37 +0300
commita77cf8169b42a4394e62f7a381ca546b27d0f723 (patch)
tree2dd8d4f51c5841b806e9b5ed6fe9054bce06e2e0 /messages
parentchanged github username + other stuff that i don't remember (diff)
downloadsdp.go-a77cf8169b42a4394e62f7a381ca546b27d0f723.tar.gz
sdp.go-a77cf8169b42a4394e62f7a381ca546b27d0f723.tar.bz2
sdp.go-a77cf8169b42a4394e62f7a381ca546b27d0f723.zip
starting fresh for the third time
Diffstat (limited to '')
-rw-r--r--messages/header.go29
-rw-r--r--messages/messages.go78
-rw-r--r--packets/types.go (renamed from messages/types.go)36
3 files changed, 24 insertions, 119 deletions
diff --git a/messages/header.go b/messages/header.go
deleted file mode 100644
index 34b36d3..0000000
--- a/messages/header.go
+++ /dev/null
@@ -1,29 +0,0 @@
1package messages
2
3import (
4 "fmt"
5 "os"
6
7 "github.com/pektezol/bitreader"
8 "github.com/pektezol/demoparser/utils"
9)
10
11func ParseHeader(file *os.File) {
12 var header Header
13 reader := bitreader.Reader(file, true)
14 header.DemoFileStamp = string(utils.ReadByteFromFile(file, 8))
15 header.DemoProtocol = int32(reader.TryReadInt32())
16 header.NetworkProtocol = int32(reader.TryReadInt32())
17 header.ServerName = string(utils.ReadByteFromFile(file, 260))
18 header.ClientName = string(utils.ReadByteFromFile(file, 260))
19 header.MapName = string(utils.ReadByteFromFile(file, 260))
20 header.GameDirectory = string(utils.ReadByteFromFile(file, 260))
21 header.PlaybackTime = float32(reader.TryReadFloat32())
22 header.PlaybackTicks = int32(reader.TryReadInt32())
23 header.PlaybackFrames = int32(reader.TryReadInt32())
24 header.SignOnLength = int32(reader.TryReadInt32())
25 if header.DemoProtocol != 4 { // Old Engine == 2, 3 / New Engine == 4
26 panic("Only New Engine is supported.")
27 }
28 fmt.Printf("%+v", header)
29}
diff --git a/messages/messages.go b/messages/messages.go
deleted file mode 100644
index b40684b..0000000
--- a/messages/messages.go
+++ /dev/null
@@ -1,78 +0,0 @@
1package messages
2
3import (
4 "fmt"
5 "os"
6
7 "github.com/pektezol/bitreader"
8 "github.com/pektezol/demoparser/classes"
9 "github.com/pektezol/demoparser/classes/netsvc"
10 "github.com/pektezol/demoparser/utils"
11)
12
13func ParseMessage(file *os.File) (statusCode int) {
14 reader := bitreader.Reader(file, true)
15 messageType := reader.TryReadInt8()
16 messageTick := reader.TryReadInt32()
17 messageSlot := reader.TryReadInt8()
18 //fmt.Println(messageType, messageTick, messageSlot)
19 switch messageType {
20 case 0x01: // SignOn
21 var packet Packet
22 packet.PacketInfo = classes.ParseCmdInfo(file, 2)
23 packet.InSequence = int32(reader.TryReadInt32())
24 packet.OutSequence = int32(reader.TryReadInt32())
25 packet.Size = int32(reader.TryReadInt32())
26 data := utils.ReadByteFromFile(file, packet.Size)
27 //fmt.Println(data)
28 netsvc.ParseNetSvcMessage(data)
29 //reader.SkipBytes(int(packet.Size)) // TODO: NET/SVC Message Parsing
30 fmt.Printf("[%d] (%d) SignOn: %v\n", messageTick, messageSlot, packet)
31 return 1
32 case 0x02: // Packet
33 var packet Packet
34 packet.PacketInfo = classes.ParseCmdInfo(file, 2)
35 packet.InSequence = int32(reader.TryReadInt32())
36 packet.OutSequence = int32(reader.TryReadInt32())
37 packet.Size = int32(reader.TryReadInt32())
38 reader.SkipBytes(int(packet.Size)) // TODO: NET/SVC Message Parsing
39 //fmt.Printf("[%d] Packet: %v\n", messageTick, packet)
40 return 2
41 case 0x03: // SyncTick
42 return 3
43 case 0x04: // ConsoleCmd
44 var consolecmd ConsoleCmd
45 consolecmd.Size = int32(reader.TryReadInt32())
46 consolecmd.Data = string(utils.ReadByteFromFile(file, consolecmd.Size))
47 //fmt.Printf("[%d] ConsoleCmd: %s\n", messageTick, consolecmd.Data)
48 return 4
49 case 0x05: // UserCmd
50 var usercmd UserCmd
51 usercmd.Cmd = int32(reader.TryReadInt32())
52 usercmd.Size = int32(reader.TryReadInt32())
53 usercmd.Data = classes.ParseUserCmdInfo(file, int(usercmd.Size))
54 //fmt.Printf("[%d] UserCmd: %v\n", messageTick, usercmd.Data)
55 return 5
56 case 0x06: // DataTables
57 var datatables DataTables
58 datatables.Size = int32(reader.TryReadInt32())
59 reader.SkipBytes(int(datatables.Size)) // TODO: DataTables Data
60 return 6
61 case 0x07: // Stop
62 fmt.Printf("[%d] Stop\n", messageTick)
63 return 7
64 case 0x08: // CustomData
65 var customdata CustomData
66 customdata.Unknown = int32(reader.TryReadInt32())
67 customdata.Size = int32(reader.TryReadInt32())
68 reader.SkipBytes(int(customdata.Size)) // TODO: CustomData Data
69 return 8
70 case 0x09: // StringTables
71 var stringtables StringTables
72 stringtables.Size = int32(reader.TryReadInt32())
73 reader.SkipBytes(int(stringtables.Size)) // TODO: StringTables Data
74 return 9
75 default:
76 return 0
77 }
78}
diff --git a/messages/types.go b/packets/types.go
index 9c92c54..5f7a29b 100644
--- a/messages/types.go
+++ b/packets/types.go
@@ -1,29 +1,37 @@
1package messages 1package packets
2
3import "github.com/pektezol/demoparser/classes"
4 2
5type Header struct { 3type Header struct {
6 DemoFileStamp string 4 DemoFileStamp string
7 DemoProtocol int32 5 DemoProtocol uint
8 NetworkProtocol int32 6 NetworkProtocol uint
9 ServerName string 7 ServerName string
10 ClientName string 8 ClientName string
11 MapName string 9 MapName string
12 GameDirectory string 10 GameDirectory string
13 PlaybackTime float32 11 PlaybackTime float32
14 PlaybackTicks int32 12 PlaybackTicks int
15 PlaybackFrames int32 13 PlaybackFrames int
16 SignOnLength int32 14 SignOnLength uint
15}
16
17type SignOn struct {
18 PacketInfo []byte
19 InSequence int32
20 OutSequence int32
21 Size int32
22 Data []byte
17} 23}
18 24
19type Packet struct { 25type Packet struct {
20 PacketInfo []classes.CmdInfo 26 PacketInfo []byte
21 InSequence int32 27 InSequence int32
22 OutSequence int32 28 OutSequence int32
23 Size int32 29 Size int32
24 Data []byte 30 Data []byte
25} 31}
26 32
33type SyncTick struct{}
34
27type ConsoleCmd struct { 35type ConsoleCmd struct {
28 Size int32 36 Size int32
29 Data string 37 Data string
@@ -32,12 +40,16 @@ type ConsoleCmd struct {
32type UserCmd struct { 40type UserCmd struct {
33 Cmd int32 41 Cmd int32
34 Size int32 42 Size int32
35 Data classes.UserCmdInfo 43 Data []byte
36} 44}
37 45
38type DataTables struct { 46type DataTables struct {
39 Size int32 47 Size int32
40 Data classes.DataTables 48 Data []byte
49}
50
51type Stop struct {
52 RemainingData []byte
41} 53}
42 54
43type CustomData struct { 55type CustomData struct {
@@ -48,5 +60,5 @@ type CustomData struct {
48 60
49type StringTables struct { 61type StringTables struct {
50 Size int32 62 Size int32
51 Data []classes.StringTable 63 Data []byte
52} 64}