diff options
| author | Arda Serdar Pektezol <1669855+pektezol@users.noreply.github.com> | 2023-09-25 00:03:24 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-09-25 00:03:24 +0300 |
| commit | 37f3c9bc9c6dd7730806b77df6b494f63ec44818 (patch) | |
| tree | 82c93fffe82ba021a6816cfb322a24d390330008 /pkg/messages/types/svcUserMessage.go | |
| parent | fix writer broken for directory parsing (#12) (diff) | |
| download | sdp.go-37f3c9bc9c6dd7730806b77df6b494f63ec44818.tar.gz sdp.go-37f3c9bc9c6dd7730806b77df6b494f63ec44818.tar.bz2 sdp.go-37f3c9bc9c6dd7730806b77df6b494f63ec44818.zip | |
add new user messages, fix some writer types (#13)
Diffstat (limited to 'pkg/messages/types/svcUserMessage.go')
| -rw-r--r-- | pkg/messages/types/svcUserMessage.go | 96 |
1 files changed, 86 insertions, 10 deletions
diff --git a/pkg/messages/types/svcUserMessage.go b/pkg/messages/types/svcUserMessage.go index 35c9e2d..2e7f044 100644 --- a/pkg/messages/types/svcUserMessage.go +++ b/pkg/messages/types/svcUserMessage.go | |||
| @@ -60,6 +60,10 @@ func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | |||
| 60 | svcUserMessage.parseLogoTimeMsg(userMessageReader) | 60 | svcUserMessage.parseLogoTimeMsg(userMessageReader) |
| 61 | case EUserMessageTypeAchievementEvent: | 61 | case EUserMessageTypeAchievementEvent: |
| 62 | svcUserMessage.parseAchivementEvent(userMessageReader) | 62 | svcUserMessage.parseAchivementEvent(userMessageReader) |
| 63 | case EUserMessageTypeCurrentTimescale: | ||
| 64 | svcUserMessage.parseCurrentTimescale(userMessageReader) | ||
| 65 | case EUserMessageTypeDesiredTimescale: | ||
| 66 | svcUserMessage.parseDesiredTimescale(userMessageReader) | ||
| 63 | case EUserMessageTypeMPMapCompleted: | 67 | case EUserMessageTypeMPMapCompleted: |
| 64 | svcUserMessage.parseMpMapCompleted(userMessageReader) | 68 | svcUserMessage.parseMpMapCompleted(userMessageReader) |
| 65 | case EUserMessageTypeMPMapIncomplete: | 69 | case EUserMessageTypeMPMapIncomplete: |
| @@ -70,6 +74,10 @@ func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | |||
| 70 | svcUserMessage.parseMpTauntLocked(userMessageReader) | 74 | svcUserMessage.parseMpTauntLocked(userMessageReader) |
| 71 | case EUserMessageTypePortalFX_Surface: | 75 | case EUserMessageTypePortalFX_Surface: |
| 72 | svcUserMessage.parsePortalFxSurface(userMessageReader) | 76 | svcUserMessage.parsePortalFxSurface(userMessageReader) |
| 77 | case EUserMessageTypePaintWorld: | ||
| 78 | svcUserMessage.parsePaintWorld(userMessageReader) | ||
| 79 | case EUserMessageTypeTransitionFade: | ||
| 80 | svcUserMessage.parseTransitionFade(userMessageReader) | ||
| 73 | case EUserMessageTypeScoreboardTempUpdate: | 81 | case EUserMessageTypeScoreboardTempUpdate: |
| 74 | svcUserMessage.parseScoreboardTempUpdate(userMessageReader) | 82 | svcUserMessage.parseScoreboardTempUpdate(userMessageReader) |
| 75 | default: | 83 | default: |
| @@ -272,10 +280,10 @@ func (svcUserMessage *SvcUserMessage) parseShake(reader *bitreader.Reader) { | |||
| 272 | } | 280 | } |
| 273 | } | 281 | } |
| 274 | svcUserMessage.Data = shake | 282 | svcUserMessage.Data = shake |
| 275 | writer.TempAppendLine("\t\t\tCommand: %v", shakeCommandToString(ShakeCommand(shake.Command))) | 283 | writer.TempAppendLine("\t\t\tCommand: %s", shakeCommandToString(ShakeCommand(shake.Command))) |
| 276 | writer.TempAppendLine("\t\t\tAmplitude: %v", shake.Amplitude) | 284 | writer.TempAppendLine("\t\t\tAmplitude: %f", shake.Amplitude) |
| 277 | writer.TempAppendLine("\t\t\tFrequency: %v", shake.Frequency) | 285 | writer.TempAppendLine("\t\t\tFrequency: %f", shake.Frequency) |
| 278 | writer.TempAppendLine("\t\t\tDuration: %v", shake.Duration) | 286 | writer.TempAppendLine("\t\t\tDuration: %f", shake.Duration) |
| 279 | } | 287 | } |
| 280 | 288 | ||
| 281 | func (svcUserMessage *SvcUserMessage) parseFade(reader *bitreader.Reader) { | 289 | func (svcUserMessage *SvcUserMessage) parseFade(reader *bitreader.Reader) { |
| @@ -574,7 +582,34 @@ func (svcUserMessage *SvcUserMessage) parseAchivementEvent(reader *bitreader.Rea | |||
| 574 | AchivementID: reader.TryReadSInt32(), | 582 | AchivementID: reader.TryReadSInt32(), |
| 575 | } | 583 | } |
| 576 | svcUserMessage.Data = achivementEvent | 584 | svcUserMessage.Data = achivementEvent |
| 577 | writer.TempAppendLine("\t\t\tPortal Count: %v", achivementEvent.AchivementID) | 585 | writer.TempAppendLine("\t\t\tAchivement ID: %d", achivementEvent.AchivementID) |
| 586 | } | ||
| 587 | |||
| 588 | func (svcUserMessage *SvcUserMessage) parseCurrentTimescale(reader *bitreader.Reader) { | ||
| 589 | currentTimescale := struct{ Timescale float32 }{ | ||
| 590 | Timescale: reader.TryReadFloat32(), | ||
| 591 | } | ||
| 592 | svcUserMessage.Data = currentTimescale | ||
| 593 | writer.TempAppendLine("\t\t\tTimescale: %f", currentTimescale.Timescale) | ||
| 594 | } | ||
| 595 | |||
| 596 | func (svcUserMessage *SvcUserMessage) parseDesiredTimescale(reader *bitreader.Reader) { | ||
| 597 | desiredTimescale := struct { | ||
| 598 | Unk1 float32 | ||
| 599 | Unk2 float32 | ||
| 600 | Unk3 uint8 | ||
| 601 | Unk4 float32 | ||
| 602 | }{ | ||
| 603 | Unk1: reader.TryReadFloat32(), | ||
| 604 | Unk2: reader.TryReadFloat32(), | ||
| 605 | Unk3: reader.TryReadUInt8(), | ||
| 606 | Unk4: reader.TryReadFloat32(), | ||
| 607 | } | ||
| 608 | svcUserMessage.Data = desiredTimescale | ||
| 609 | writer.TempAppendLine("\t\t\tUnk1: %f", desiredTimescale.Unk1) | ||
| 610 | writer.TempAppendLine("\t\t\tUnk2: %f", desiredTimescale.Unk2) | ||
| 611 | writer.TempAppendLine("\t\t\tUnk3: %d", desiredTimescale.Unk3) | ||
| 612 | writer.TempAppendLine("\t\t\tUnk4: %f", desiredTimescale.Unk4) | ||
| 578 | } | 613 | } |
| 579 | 614 | ||
| 580 | func (svcUserMessage *SvcUserMessage) parseMpMapCompleted(reader *bitreader.Reader) { | 615 | func (svcUserMessage *SvcUserMessage) parseMpMapCompleted(reader *bitreader.Reader) { |
| @@ -716,6 +751,47 @@ func (svcUserMessage *SvcUserMessage) parsePortalFxSurface(reader *bitreader.Rea | |||
| 716 | writer.TempAppendLine("\t\t\tAngles: %v", portalFxSurface.Angles) | 751 | writer.TempAppendLine("\t\t\tAngles: %v", portalFxSurface.Angles) |
| 717 | } | 752 | } |
| 718 | 753 | ||
| 754 | func (svcUserMessage *SvcUserMessage) parsePaintWorld(reader *bitreader.Reader) { | ||
| 755 | paintWorld := struct { | ||
| 756 | Type uint8 | ||
| 757 | EHandle uint32 | ||
| 758 | UnkHf1 float32 | ||
| 759 | UnkHf2 float32 | ||
| 760 | Center []float32 | ||
| 761 | Positions [][]float32 | ||
| 762 | }{ | ||
| 763 | Type: reader.TryReadUInt8(), | ||
| 764 | EHandle: reader.TryReadUInt32(), | ||
| 765 | UnkHf1: reader.TryReadFloat32(), | ||
| 766 | UnkHf2: reader.TryReadFloat32(), | ||
| 767 | // Center: []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()}, | ||
| 768 | // Positions: [][]float32{{},{}}, | ||
| 769 | } | ||
| 770 | length := reader.TryReadUInt8() | ||
| 771 | paintWorld.Center = []float32{reader.TryReadFloat32(), reader.TryReadFloat32(), reader.TryReadFloat32()} | ||
| 772 | paintWorld.Positions = make([][]float32, length) | ||
| 773 | for i := 0; i < int(length); i++ { | ||
| 774 | paintWorld.Positions[i] = []float32{paintWorld.Center[0] + float32(reader.TryReadSInt16()), paintWorld.Center[1] + float32(reader.TryReadSInt16()), paintWorld.Center[2] + float32(reader.TryReadSInt16())} | ||
| 775 | } | ||
| 776 | svcUserMessage.Data = paintWorld | ||
| 777 | writer.TempAppendLine("\t\t\tType: %d", paintWorld.Type) | ||
| 778 | writer.TempAppendLine("\t\t\tEHandle: %d", paintWorld.EHandle) | ||
| 779 | writer.TempAppendLine("\t\t\tUnkHf1: %f", paintWorld.UnkHf1) | ||
| 780 | writer.TempAppendLine("\t\t\tUnkHf2: %f", paintWorld.UnkHf2) | ||
| 781 | writer.TempAppendLine("\t\t\tCenter: %v", paintWorld.Center) | ||
| 782 | writer.TempAppendLine("\t\t\tPositions: %v", paintWorld.Positions) | ||
| 783 | } | ||
| 784 | |||
| 785 | func (svcUserMessage *SvcUserMessage) parseTransitionFade(reader *bitreader.Reader) { | ||
| 786 | transitionFade := struct { | ||
| 787 | Seconds float32 | ||
| 788 | }{ | ||
| 789 | Seconds: reader.TryReadFloat32(), | ||
| 790 | } | ||
| 791 | svcUserMessage.Data = transitionFade | ||
| 792 | writer.TempAppendLine("\t\t\tSeconds: %f", transitionFade.Seconds) | ||
| 793 | } | ||
| 794 | |||
| 719 | func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreader.Reader) { | 795 | func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreader.Reader) { |
| 720 | scoreboardTempUpdate := struct { | 796 | scoreboardTempUpdate := struct { |
| 721 | NumPortals int32 | 797 | NumPortals int32 |
| @@ -725,8 +801,8 @@ func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreade | |||
| 725 | TimeTaken: reader.TryReadSInt32(), | 801 | TimeTaken: reader.TryReadSInt32(), |
| 726 | } | 802 | } |
| 727 | svcUserMessage.Data = scoreboardTempUpdate | 803 | svcUserMessage.Data = scoreboardTempUpdate |
| 728 | writer.TempAppendLine("\t\t\tPortal Count: %v", scoreboardTempUpdate.NumPortals) | 804 | writer.TempAppendLine("\t\t\tPortal Count: %d", scoreboardTempUpdate.NumPortals) |
| 729 | writer.TempAppendLine("\t\t\tCM Ticks: %v", scoreboardTempUpdate.TimeTaken) | 805 | writer.TempAppendLine("\t\t\tCM Ticks: %d", scoreboardTempUpdate.TimeTaken) |
| 730 | } | 806 | } |
| 731 | 807 | ||
| 732 | type UserMessageType uint8 | 808 | type UserMessageType uint8 |
| @@ -762,7 +838,7 @@ const ( | |||
| 762 | EUserMessageTypeLogoTimeMsg // done | 838 | EUserMessageTypeLogoTimeMsg // done |
| 763 | EUserMessageTypeAchievementEvent // done | 839 | EUserMessageTypeAchievementEvent // done |
| 764 | EUserMessageTypeUpdateJalopyRadar | 840 | EUserMessageTypeUpdateJalopyRadar |
| 765 | EUserMessageTypeCurrentTimescale // Send one float for the new timescale | 841 | EUserMessageTypeCurrentTimescale // done // Send one float for the new timescale |
| 766 | EUserMessageTypeDesiredTimescale // Send timescale and some blending vars | 842 | EUserMessageTypeDesiredTimescale // Send timescale and some blending vars |
| 767 | EUserMessageTypeCreditsPortalMsg // portal 1 end | 843 | EUserMessageTypeCreditsPortalMsg // portal 1 end |
| 768 | EUserMessageTypeInventoryFlash // portal 2 start | 844 | EUserMessageTypeInventoryFlash // portal 2 start |
| @@ -781,7 +857,7 @@ const ( | |||
| 781 | EUserMessageTypeMPTauntLocked // done | 857 | EUserMessageTypeMPTauntLocked // done |
| 782 | EUserMessageTypeMPAllTauntsLocked | 858 | EUserMessageTypeMPAllTauntsLocked |
| 783 | EUserMessageTypePortalFX_Surface // done | 859 | EUserMessageTypePortalFX_Surface // done |
| 784 | EUserMessageTypePaintWorld | 860 | EUserMessageTypePaintWorld // d |
| 785 | EUserMessageTypePaintEntity | 861 | EUserMessageTypePaintEntity |
| 786 | EUserMessageTypeChangePaintColor | 862 | EUserMessageTypeChangePaintColor |
| 787 | EUserMessageTypePaintBombExplode | 863 | EUserMessageTypePaintBombExplode |
| @@ -791,7 +867,7 @@ const ( | |||
| 791 | EUserMessageTypeStartSurvey | 867 | EUserMessageTypeStartSurvey |
| 792 | EUserMessageTypeApplyHitBoxDamageEffect | 868 | EUserMessageTypeApplyHitBoxDamageEffect |
| 793 | EUserMessageTypeSetMixLayerTriggerFactor | 869 | EUserMessageTypeSetMixLayerTriggerFactor |
| 794 | EUserMessageTypeTransitionFade | 870 | EUserMessageTypeTransitionFade // done |
| 795 | EUserMessageTypeScoreboardTempUpdate // done | 871 | EUserMessageTypeScoreboardTempUpdate // done |
| 796 | EUserMessageTypeChallengeModCheatSession | 872 | EUserMessageTypeChallengeModCheatSession |
| 797 | EUserMessageTypeChallengeModCloseAllUI | 873 | EUserMessageTypeChallengeModCloseAllUI |