aboutsummaryrefslogtreecommitdiff
path: root/packets/message.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2022-11-07 17:53:33 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-16 21:39:37 +0300
commit71cdb9cea1309fe710ecf7a3d47e2c475adf0cd0 (patch)
treec70a0eca913380e08cd49b5b02ed24f626ec454f /packets/message.go
parentstarting fresh for the third time (diff)
downloadsdp.go-71cdb9cea1309fe710ecf7a3d47e2c475adf0cd0.tar.gz
sdp.go-71cdb9cea1309fe710ecf7a3d47e2c475adf0cd0.tar.bz2
sdp.go-71cdb9cea1309fe710ecf7a3d47e2c475adf0cd0.zip
done until the hard part
Diffstat (limited to 'packets/message.go')
-rw-r--r--packets/message.go70
1 files changed, 44 insertions, 26 deletions
diff --git a/packets/message.go b/packets/message.go
index a8e830d..3688ff9 100644
--- a/packets/message.go
+++ b/packets/message.go
@@ -4,56 +4,74 @@ import (
4 "fmt" 4 "fmt"
5 5
6 "github.com/pektezol/bitreader" 6 "github.com/pektezol/bitreader"
7 "github.com/pektezol/demoparser/packets/classes"
7) 8)
8 9
10const MSSC = 2
11
9func ParseMessage(reader *bitreader.ReaderType) (status int) { 12func ParseMessage(reader *bitreader.ReaderType) (status int) {
10 messageType := reader.TryReadInt8() 13 messageType := reader.TryReadInt8()
11 messageTick := reader.TryReadInt32() 14 messageTick := reader.TryReadInt32()
12 messageSlot := reader.TryReadInt8() 15 messageSlot := reader.TryReadInt8()
13 //fmt.Println(messageType, messageTick, messageSlot)
14 switch messageType { 16 switch messageType {
15 case 0x01: 17 case 0x01: // TODO: SignOn - Data
16 //signOn := SignOn{} 18 signOn := SignOn{
17 reader.SkipBytes(76*2 + 8) 19 PacketInfo: classes.ParseCmdInfo(reader, MSSC),
18 val := reader.TryReadInt32() 20 InSequence: int32(reader.TryReadInt32()),
19 reader.SkipBytes(int(val)) 21 OutSequence: int32(reader.TryReadInt32()),
20 fmt.Printf("[%d] (%d) {%d} SignOn: \n", messageTick, messageType, messageSlot) 22 Size: int32(reader.TryReadInt32()),
23 }
24 reader.SkipBytes(int(signOn.Size))
25 fmt.Printf("[%d] (%d) {%d} SignOn: %v\n", messageTick, messageType, messageSlot, signOn)
21 return 1 26 return 1
22 case 0x02: 27 case 0x02: // TODO: Packet - Data
23 reader.SkipBytes(76*2 + 8) 28 packet := Packet{
24 val := reader.TryReadInt32() 29 PacketInfo: classes.ParseCmdInfo(reader, MSSC),
25 reader.SkipBytes(int(val)) 30 InSequence: int32(reader.TryReadInt32()),
26 // fmt.Printf("[%d] (%d) Packet: \n", messageTick, messageType) 31 OutSequence: int32(reader.TryReadInt32()),
32 Size: int32(reader.TryReadInt32()),
33 }
34 //classes.ParseUserCmdInfo(reader, packet.Size)
35 reader.SkipBytes(int(packet.Size))
36 //fmt.Printf("[%d] (%d) Packet: %v\n", messageTick, messageType, packet)
27 return 2 37 return 2
28 case 0x03: 38 case 0x03:
29 fmt.Printf("[%d] (%d) SyncTick: \n", messageTick, messageType) 39 syncTick := SyncTick{}
40 fmt.Printf("[%d] (%d) SyncTick: %v\n", messageTick, messageType, syncTick)
30 return 3 41 return 3
31 case 0x04: 42 case 0x04:
32 val := reader.TryReadInt32() 43 consoleCmd := ConsoleCmd{
33 reader.SkipBytes(int(val)) 44 Size: int32(reader.TryReadInt32()),
34 // fmt.Printf("[%d] (%d) ConsoleCmd: \n", messageTick, messageType) 45 }
46 consoleCmd.Data = reader.TryReadStringLen(int(consoleCmd.Size))
47 //fmt.Printf("[%d] (%d) ConsoleCmd: %s\n", messageTick, messageType, consoleCmd.Data)
35 return 4 48 return 4
36 case 0x05: 49 case 0x05: // TODO: UserCmd - Buttons
37 reader.SkipBytes(4) 50 userCmd := UserCmd{
38 val := reader.TryReadInt32() 51 Cmd: int32(reader.TryReadInt32()),
39 reader.SkipBytes(int(val)) 52 Size: int32(reader.TryReadInt32()),
40 // fmt.Printf("[%d] (%d) UserCmd: \n", messageTick, messageType) 53 }
54 userCmd.Data = classes.ParseUserCmdInfo(reader, int(userCmd.Size))
55 fmt.Printf("[%d] (%d) UserCmd: %v\n", messageTick, messageType, userCmd)
41 return 5 56 return 5
42 case 0x06: 57 case 0x06: // TODO: DataTables
43 val := reader.TryReadInt32() 58 val := reader.TryReadInt32()
44 reader.SkipBytes(int(val)) 59 reader.SkipBytes(int(val))
45 // fmt.Printf("[%d] (%d) DataTables: \n", messageTick, messageType) 60 // fmt.Printf("[%d] (%d) DataTables: \n", messageTick, messageType)
46 return 6 61 return 6
47 case 0x07: 62 case 0x07: // TODO: Stop - RemainingData
48 fmt.Printf("[%d] (%d) Stop: \n", messageTick, messageType) 63 stop := Stop{
64 RemainingData: nil,
65 }
66 fmt.Printf("[%d] (%d) Stop: %v\n", messageTick, messageType, stop)
49 return 7 67 return 7
50 case 0x08: 68 case 0x08: // TODO: CustomData
51 reader.SkipBytes(4) 69 reader.SkipBytes(4)
52 val := reader.TryReadInt32() 70 val := reader.TryReadInt32()
53 reader.SkipBytes(int(val)) 71 reader.SkipBytes(int(val))
54 // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType) 72 // fmt.Printf("[%d] (%d) CustomData: \n", messageTick, messageType)
55 return 8 73 return 8
56 case 0x09: 74 case 0x09: // TODO: StringTables
57 val := reader.TryReadInt32() 75 val := reader.TryReadInt32()
58 reader.SkipBytes(int(val)) 76 reader.SkipBytes(int(val))
59 // fmt.Printf("[%d] (%d) StringTables: \n", messageTick, messageType) 77 // fmt.Printf("[%d] (%d) StringTables: \n", messageTick, messageType)