diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2024-06-15 13:58:30 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-06-15 13:58:30 +0300 |
| commit | 77e4b066cb8d506b4bc944ab4eb2d6e4679e2202 (patch) | |
| tree | 1d549eca619ed36cb881e487cb054c4643ac8376 /pkg/messages/types/svcGameEvent.go | |
| parent | change project name to sdp.go (diff) | |
| download | sdp.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.go | 40 |
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 | ||
| 3 | import ( | 3 | import ( |
| 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 | ||
| 8 | type SvcGameEvent struct { | 8 | type 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 | ||
| 15 | type EventDescriptorKey struct { | 15 | type EventDescriptorKey struct { |
| 16 | Name string | 16 | Name string `json:"name"` |
| 17 | Descriptor any | 17 | Descriptor any `json:"descriptor"` |
| 18 | } | 18 | } |
| 19 | 19 | ||
| 20 | func ParseSvcGameEvent(reader *bitreader.Reader) SvcGameEvent { | 20 | func 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 | ||
| 29 | func (svcGameEvent *SvcGameEvent) parseGameEvent(reader *bitreader.Reader) { | 29 | func (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 | } |