aboutsummaryrefslogtreecommitdiff
path: root/packets/messages
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2022-11-11 23:19:01 +0300
committerArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-16 21:39:42 +0300
commit892fb8f547ce4a31901fb029a762331b1188efb7 (patch)
tree51d38af2364d7139fc93f8637e40c77930407532 /packets/messages
parentupgrade bitreader to v1.2.5 (diff)
downloadsdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.tar.gz
sdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.tar.bz2
sdp.go-892fb8f547ce4a31901fb029a762331b1188efb7.zip
net/svc messages finally getting parsed correctly
Diffstat (limited to 'packets/messages')
-rw-r--r--packets/messages/message.go12
-rw-r--r--packets/messages/types/SvcCreateStringTable.go9
-rw-r--r--packets/messages/types/SvcGameEvent.go15
-rw-r--r--packets/messages/types/SvcGameEventList.go3
-rw-r--r--packets/messages/types/SvcPacketEntities.go5
-rw-r--r--packets/messages/types/SvcSounds.go4
-rw-r--r--packets/messages/types/SvcTempEntities.go4
-rw-r--r--packets/messages/types/SvcUpdateStringTable.go3
-rw-r--r--packets/messages/types/SvcUserMessage.go3
9 files changed, 30 insertions, 28 deletions
diff --git a/packets/messages/message.go b/packets/messages/message.go
index 376a3d5..4a00212 100644
--- a/packets/messages/message.go
+++ b/packets/messages/message.go
@@ -7,15 +7,6 @@ import (
7 "github.com/pektezol/demoparser/packets/messages/types" 7 "github.com/pektezol/demoparser/packets/messages/types"
8) 8)
9 9
10// TODO: Read data properly in:
11// SvcCreateStringTable
12// SvcGameEventList
13// SvcPacketEntities
14// SvcSounds
15// SvcTempEntities
16// SvcUpdateStringTable
17// SvcUserMessage
18
19func ParseMessage(data []byte) []Message { 10func ParseMessage(data []byte) []Message {
20 reader := bitreader.Reader(bytes.NewReader(data), true) 11 reader := bitreader.Reader(bytes.NewReader(data), true)
21 var messages []Message 12 var messages []Message
@@ -24,7 +15,6 @@ func ParseMessage(data []byte) []Message {
24 if err != nil { 15 if err != nil {
25 break 16 break
26 } 17 }
27 // fmt.Printf("Reading message type: %d\n", messageType)
28 switch messageType { 18 switch messageType {
29 case 0: 19 case 0:
30 messages = append(messages, Message{Data: types.NetNop{}}) 20 messages = append(messages, Message{Data: types.NetNop{}})
@@ -77,7 +67,7 @@ func ParseMessage(data []byte) []Message {
77 case 24: 67 case 24:
78 messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)}) 68 messages = append(messages, Message{Data: types.ParseSvcEntityMessage(reader)})
79 case 25: 69 case 25:
80 // TODO: SvcGameEvent 70 messages = append(messages, Message{Data: types.ParseSvcGameEvent(reader)})
81 case 26: 71 case 26:
82 messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)}) 72 messages = append(messages, Message{Data: types.ParseSvcPacketEntities(reader)})
83 case 27: 73 case 27:
diff --git a/packets/messages/types/SvcCreateStringTable.go b/packets/messages/types/SvcCreateStringTable.go
index 336b3e0..72ab1a7 100644
--- a/packets/messages/types/SvcCreateStringTable.go
+++ b/packets/messages/types/SvcCreateStringTable.go
@@ -1,6 +1,8 @@
1package types 1package types
2 2
3import "github.com/pektezol/bitreader" 3import (
4 "github.com/pektezol/bitreader"
5)
4 6
5type SvcCreateStringTable struct { 7type SvcCreateStringTable struct {
6 Name string 8 Name string
@@ -10,7 +12,7 @@ type SvcCreateStringTable struct {
10 UserDataSize uint16 12 UserDataSize uint16
11 UserDataSizeBits uint8 13 UserDataSizeBits uint8
12 Flags uint8 14 Flags uint8
13 StringData int 15 StringData []byte
14} 16}
15 17
16func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { 18func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable {
@@ -26,8 +28,7 @@ func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTabl
26 svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4)) 28 svccreatestringtable.UserDataSizeBits = uint8(reader.TryReadBits(4))
27 } 29 }
28 svccreatestringtable.Flags = uint8(reader.TryReadBits(2)) 30 svccreatestringtable.Flags = uint8(reader.TryReadBits(2))
29 reader.SkipBits(int(length)) // TODO: Read data properly 31 svccreatestringtable.StringData = reader.TryReadBitsToSlice(int(length))
30 // svccreatestringtable.StringData = int(reader.TryReadBits(int(length / 8)))
31 return svccreatestringtable 32 return svccreatestringtable
32 33
33} 34}
diff --git a/packets/messages/types/SvcGameEvent.go b/packets/messages/types/SvcGameEvent.go
new file mode 100644
index 0000000..1d6b0ea
--- /dev/null
+++ b/packets/messages/types/SvcGameEvent.go
@@ -0,0 +1,15 @@
1package types
2
3import (
4 "github.com/pektezol/bitreader"
5)
6
7type SvcGameEvent struct {
8 Data []byte
9}
10
11func ParseSvcGameEvent(reader *bitreader.ReaderType) SvcGameEvent {
12 length := reader.TryReadBits(11)
13 reader.SkipBits(int(length))
14 return SvcGameEvent{} // TODO: Parse SvcGameEvent
15}
diff --git a/packets/messages/types/SvcGameEventList.go b/packets/messages/types/SvcGameEventList.go
index 3952517..fea0be4 100644
--- a/packets/messages/types/SvcGameEventList.go
+++ b/packets/messages/types/SvcGameEventList.go
@@ -10,9 +10,8 @@ type SvcGameEventList struct {
10func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { 10func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList {
11 events := reader.TryReadBits(9) 11 events := reader.TryReadBits(9)
12 length := reader.TryReadBits(20) 12 length := reader.TryReadBits(20)
13 reader.SkipBits(int(length)) // TODO: Read data properly
14 return SvcGameEventList{ 13 return SvcGameEventList{
15 Events: int16(events), 14 Events: int16(events),
16 //Data: reader.TryReadBytesToSlice(int(length)), 15 Data: reader.TryReadBitsToSlice(int(length)),
17 } 16 }
18} 17}
diff --git a/packets/messages/types/SvcPacketEntities.go b/packets/messages/types/SvcPacketEntities.go
index 6621c3a..9d8a8b0 100644
--- a/packets/messages/types/SvcPacketEntities.go
+++ b/packets/messages/types/SvcPacketEntities.go
@@ -20,12 +20,13 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities {
20 var deltafrom int32 20 var deltafrom int32
21 if isdelta { 21 if isdelta {
22 deltafrom = int32(reader.TryReadInt32()) 22 deltafrom = int32(reader.TryReadInt32())
23 } else {
24 deltafrom = -1
23 } 25 }
24 baseline := reader.TryReadBool() 26 baseline := reader.TryReadBool()
25 updatedentries := reader.TryReadBits(11) 27 updatedentries := reader.TryReadBits(11)
26 length := reader.TryReadBits(20) 28 length := reader.TryReadBits(20)
27 updatebaseline := reader.TryReadBool() 29 updatebaseline := reader.TryReadBool()
28 reader.SkipBits(int(length)) // TODO: Read data properly
29 return SvcPacketEntities{ 30 return SvcPacketEntities{
30 MaxEntries: uint16(maxentries), 31 MaxEntries: uint16(maxentries),
31 IsDelta: isdelta, 32 IsDelta: isdelta,
@@ -33,6 +34,6 @@ func ParseSvcPacketEntities(reader *bitreader.ReaderType) SvcPacketEntities {
33 BaseLine: baseline, 34 BaseLine: baseline,
34 UpdatedEntries: uint16(updatedentries), 35 UpdatedEntries: uint16(updatedentries),
35 UpdateBaseline: updatebaseline, 36 UpdateBaseline: updatebaseline,
36 // Data: reader.TryReadBytesToSlice(int(length / 8)), 37 Data: reader.TryReadBitsToSlice(int(length)),
37 } 38 }
38} 39}
diff --git a/packets/messages/types/SvcSounds.go b/packets/messages/types/SvcSounds.go
index 4d858bf..2dc7974 100644
--- a/packets/messages/types/SvcSounds.go
+++ b/packets/messages/types/SvcSounds.go
@@ -22,11 +22,9 @@ func ParseSvcSounds(reader *bitreader.ReaderType) SvcSounds {
22 } else { 22 } else {
23 length = int16(reader.TryReadInt16()) 23 length = int16(reader.TryReadInt16())
24 } 24 }
25 reader.SkipBits(int(length)) // TODO: Read data properly
26 //data := reader.TryReadBytesToSlice(int(length / 8))
27 return SvcSounds{ 25 return SvcSounds{
28 ReliableSound: reliablesound, 26 ReliableSound: reliablesound,
29 Size: size, 27 Size: size,
30 //Data: data, 28 Data: reader.TryReadBitsToSlice(int(length)),
31 } 29 }
32} 30}
diff --git a/packets/messages/types/SvcTempEntities.go b/packets/messages/types/SvcTempEntities.go
index 105e014..3bfae0c 100644
--- a/packets/messages/types/SvcTempEntities.go
+++ b/packets/messages/types/SvcTempEntities.go
@@ -12,9 +12,9 @@ type SvcTempEntities struct {
12func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { 12func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities {
13 numentries := reader.TryReadInt8() 13 numentries := reader.TryReadInt8()
14 length := reader.TryReadBits(17) 14 length := reader.TryReadBits(17)
15 reader.SkipBits(int(length)) // TODO: Read data properly 15 //reader.SkipBits(int(length)) // TODO: Read data properly
16 return SvcTempEntities{ 16 return SvcTempEntities{
17 NumEntries: numentries, 17 NumEntries: numentries,
18 //Data: reader.TryReadBytesToSlice(int(length/8) + int(length%8)), 18 Data: reader.TryReadBitsToSlice(int(length)),
19 } 19 }
20} 20}
diff --git a/packets/messages/types/SvcUpdateStringTable.go b/packets/messages/types/SvcUpdateStringTable.go
index d1ca9bb..9f178a5 100644
--- a/packets/messages/types/SvcUpdateStringTable.go
+++ b/packets/messages/types/SvcUpdateStringTable.go
@@ -16,7 +16,6 @@ func ParseSvcUpdateStringTable(reader *bitreader.ReaderType) SvcUpdateStringTabl
16 svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16()) 16 svcupdatestringtable.NumChangedEntries = int16(reader.TryReadInt16())
17 } 17 }
18 length := reader.TryReadBits(20) 18 length := reader.TryReadBits(20)
19 reader.SkipBits(int(length)) // TODO: Read data properly 19 svcupdatestringtable.Data = reader.TryReadBitsToSlice(int(length))
20 //svcupdatestringtable.Data = reader.TryReadBytesToSlice(int(length / 8))
21 return svcupdatestringtable 20 return svcupdatestringtable
22} 21}
diff --git a/packets/messages/types/SvcUserMessage.go b/packets/messages/types/SvcUserMessage.go
index 6d09fa1..c7b0566 100644
--- a/packets/messages/types/SvcUserMessage.go
+++ b/packets/messages/types/SvcUserMessage.go
@@ -12,9 +12,8 @@ type SvcUserMessage struct {
12func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { 12func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage {
13 msgtype := reader.TryReadInt8() 13 msgtype := reader.TryReadInt8()
14 length := reader.TryReadBits(12) 14 length := reader.TryReadBits(12)
15 reader.SkipBits(int(length)) // TODO: Read data properly
16 return SvcUserMessage{ 15 return SvcUserMessage{
17 MsgType: msgtype, 16 MsgType: msgtype,
18 //Data: reader.TryReadBytesToSlice(int(length / 8)), 17 Data: reader.TryReadBitsToSlice(int(length)),
19 } 18 }
20} 19}