diff options
Diffstat (limited to 'packets/messages')
| -rw-r--r-- | packets/messages/message.go | 12 | ||||
| -rw-r--r-- | packets/messages/types/SvcCreateStringTable.go | 9 | ||||
| -rw-r--r-- | packets/messages/types/SvcGameEvent.go | 15 | ||||
| -rw-r--r-- | packets/messages/types/SvcGameEventList.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcPacketEntities.go | 5 | ||||
| -rw-r--r-- | packets/messages/types/SvcSounds.go | 4 | ||||
| -rw-r--r-- | packets/messages/types/SvcTempEntities.go | 4 | ||||
| -rw-r--r-- | packets/messages/types/SvcUpdateStringTable.go | 3 | ||||
| -rw-r--r-- | packets/messages/types/SvcUserMessage.go | 3 |
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 | |||
| 19 | func ParseMessage(data []byte) []Message { | 10 | func 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 @@ | |||
| 1 | package types | 1 | package types |
| 2 | 2 | ||
| 3 | import "github.com/pektezol/bitreader" | 3 | import ( |
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 4 | 6 | ||
| 5 | type SvcCreateStringTable struct { | 7 | type 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 | ||
| 16 | func ParseSvcCreateStringTable(reader *bitreader.ReaderType) SvcCreateStringTable { | 18 | func 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 @@ | |||
| 1 | package types | ||
| 2 | |||
| 3 | import ( | ||
| 4 | "github.com/pektezol/bitreader" | ||
| 5 | ) | ||
| 6 | |||
| 7 | type SvcGameEvent struct { | ||
| 8 | Data []byte | ||
| 9 | } | ||
| 10 | |||
| 11 | func 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 { | |||
| 10 | func ParseSvcGameEventList(reader *bitreader.ReaderType) SvcGameEventList { | 10 | func 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 { | |||
| 12 | func ParseSvcTempEntities(reader *bitreader.ReaderType) SvcTempEntities { | 12 | func 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 { | |||
| 12 | func ParseSvcUserMessage(reader *bitreader.ReaderType) SvcUserMessage { | 12 | func 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 | } |