aboutsummaryrefslogtreecommitdiff
path: root/pkg/messages/types/svcGameEvent.go
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2024-06-15 13:58:30 +0300
committerGitHub <noreply@github.com>2024-06-15 13:58:30 +0300
commit77e4b066cb8d506b4bc944ab4eb2d6e4679e2202 (patch)
tree1d549eca619ed36cb881e487cb054c4643ac8376 /pkg/messages/types/svcGameEvent.go
parentchange project name to sdp.go (diff)
downloadsdp.go-77e4b066cb8d506b4bc944ab4eb2d6e4679e2202.tar.gz
sdp.go-77e4b066cb8d506b4bc944ab4eb2d6e4679e2202.tar.bz2
sdp.go-77e4b066cb8d506b4bc944ab4eb2d6e4679e2202.zip
enable multithreading with goroutines (#20)
Diffstat (limited to 'pkg/messages/types/svcGameEvent.go')
-rw-r--r--pkg/messages/types/svcGameEvent.go40
1 files changed, 20 insertions, 20 deletions
diff --git a/pkg/messages/types/svcGameEvent.go b/pkg/messages/types/svcGameEvent.go
index b325472..cb1e91d 100644
--- a/pkg/messages/types/svcGameEvent.go
+++ b/pkg/messages/types/svcGameEvent.go
@@ -2,56 +2,56 @@ package messages
2 2
3import ( 3import (
4 "github.com/pektezol/bitreader" 4 "github.com/pektezol/bitreader"
5 "github.com/pektezol/sdp.go/pkg/writer" 5 "github.com/pektezol/sdp.go/pkg/types"
6) 6)
7 7
8type SvcGameEvent struct { 8type SvcGameEvent struct {
9 Length uint16 9 Length uint16 `json:"length"`
10 EventID uint32 10 EventID uint32 `json:"event_id"`
11 EventDescription GameEventDescriptor 11 EventDescription types.GameEventDescriptor `json:"event_description"`
12 EventDescriptors []EventDescriptorKey 12 EventDescriptors []EventDescriptorKey `json:"event_descriptors"`
13} 13}
14 14
15type EventDescriptorKey struct { 15type EventDescriptorKey struct {
16 Name string 16 Name string `json:"name"`
17 Descriptor any 17 Descriptor any `json:"descriptor"`
18} 18}
19 19
20func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { 20func ParseSvcGameEvent(reader *bitreader.Reader, demo *types.Demo) SvcGameEvent {
21 svcGameEvent := SvcGameEvent{ 21 svcGameEvent := SvcGameEvent{
22 Length: uint16(reader.TryReadBits(11)), 22 Length: uint16(reader.TryReadBits(11)),
23 } 23 }
24 gameEventReader := bitreader.NewReaderFromBytes(reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)), true) 24 gameEventReader := bitreader.NewReaderFromBytes(reader.TryReadBitsToSlice(uint64(svcGameEvent.Length)), true)
25 svcGameEvent.parseGameEvent(gameEventReader) 25 svcGameEvent.parseGameEvent(gameEventReader, demo)
26 return svcGameEvent 26 return svcGameEvent
27} 27}
28 28
29func (svcGameEvent *SvcGameEvent) parseGameEvent(reader *bitreader.Reader) { 29func (svcGameEvent *SvcGameEvent) parseGameEvent(reader *bitreader.Reader, demo *types.Demo) {
30 svcGameEvent.EventID = uint32(reader.TryReadBits(9)) 30 svcGameEvent.EventID = uint32(reader.TryReadBits(9))
31 svcGameEvent.EventDescription = GameEventList.GameEventDescriptor[svcGameEvent.EventID] 31 svcGameEvent.EventDescription = demo.GameEventList.GameEventDescriptor[svcGameEvent.EventID]
32 writer.TempAppendLine("\t\t%s (%d):", svcGameEvent.EventDescription.Name, svcGameEvent.EventID) 32 demo.Writer.TempAppendLine("\t\t%s (%d):", svcGameEvent.EventDescription.Name, svcGameEvent.EventID)
33 for _, descriptor := range svcGameEvent.EventDescription.Keys { 33 for _, descriptor := range svcGameEvent.EventDescription.Keys {
34 var value any 34 var value any
35 switch descriptor.Type { 35 switch descriptor.Type {
36 case EventDescriptorString: 36 case types.EventDescriptorString:
37 value = reader.TryReadString() 37 value = reader.TryReadString()
38 case EventDescriptorFloat: 38 case types.EventDescriptorFloat:
39 value = reader.TryReadFloat32() 39 value = reader.TryReadFloat32()
40 case EventDescriptorInt32: 40 case types.EventDescriptorInt32:
41 value = reader.TryReadSInt32() 41 value = reader.TryReadSInt32()
42 case EventDescriptorInt16: 42 case types.EventDescriptorInt16:
43 value = reader.TryReadSInt16() 43 value = reader.TryReadSInt16()
44 case EventDescriptorInt8: 44 case types.EventDescriptorInt8:
45 value = reader.TryReadUInt8() 45 value = reader.TryReadUInt8()
46 case EventDescriptorBool: 46 case types.EventDescriptorBool:
47 value = reader.TryReadBool() 47 value = reader.TryReadBool()
48 case EventDescriptorUInt64: 48 case types.EventDescriptorUInt64:
49 value = reader.TryReadUInt64() 49 value = reader.TryReadUInt64()
50 } 50 }
51 svcGameEvent.EventDescriptors = append(svcGameEvent.EventDescriptors, EventDescriptorKey{ 51 svcGameEvent.EventDescriptors = append(svcGameEvent.EventDescriptors, EventDescriptorKey{
52 Name: descriptor.Name, 52 Name: descriptor.Name,
53 Descriptor: value, 53 Descriptor: value,
54 }) 54 })
55 writer.TempAppendLine("\t\t\t%s: %v", descriptor.Name, value) 55 demo.Writer.TempAppendLine("\t\t\t%s: %v", descriptor.Name, value)
56 } 56 }
57} 57}