aboutsummaryrefslogtreecommitdiff
path: root/pkg
diff options
context:
space:
mode:
authorArda Serdar Pektezol <1669855+pektezol@users.noreply.github.com>2023-09-25 00:03:24 +0300
committerGitHub <noreply@github.com>2023-09-25 00:03:24 +0300
commit37f3c9bc9c6dd7730806b77df6b494f63ec44818 (patch)
tree82c93fffe82ba021a6816cfb322a24d390330008 /pkg
parentfix writer broken for directory parsing (#12) (diff)
downloadsdp.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')
-rw-r--r--pkg/messages/messages.go2
-rw-r--r--pkg/messages/types/svcUserMessage.go96
2 files changed, 87 insertions, 11 deletions
diff --git a/pkg/messages/messages.go b/pkg/messages/messages.go
index 626f462..d3ab460 100644
--- a/pkg/messages/messages.go
+++ b/pkg/messages/messages.go
@@ -78,7 +78,7 @@ func ParseMessages(messageType uint64, reader *bitreader.Reader) any {
78 case 32: 78 case 32:
79 messageData = messages.ParseSvcCmdKeyValues(reader) 79 messageData = messages.ParseSvcCmdKeyValues(reader)
80 case 33: 80 case 33:
81 messageData = messages.ParseSvcPaintmapData(reader) 81 messageData = messages.ParseSvcPaintmapData(reader) // skipped
82 default: 82 default:
83 return nil 83 return nil
84 } 84 }
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
281func (svcUserMessage *SvcUserMessage) parseFade(reader *bitreader.Reader) { 289func (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
588func (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
596func (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
580func (svcUserMessage *SvcUserMessage) parseMpMapCompleted(reader *bitreader.Reader) { 615func (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
754func (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
785func (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
719func (svcUserMessage *SvcUserMessage) parseScoreboardTempUpdate(reader *bitreader.Reader) { 795func (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
732type UserMessageType uint8 808type 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