diff options
Diffstat (limited to 'pkg')
| -rw-r--r-- | pkg/messages/types/svcUserMessage.go | 141 |
1 files changed, 102 insertions, 39 deletions
diff --git a/pkg/messages/types/svcUserMessage.go b/pkg/messages/types/svcUserMessage.go index 2e7f044..1acbe31 100644 --- a/pkg/messages/types/svcUserMessage.go +++ b/pkg/messages/types/svcUserMessage.go | |||
| @@ -54,8 +54,12 @@ func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | |||
| 54 | svcUserMessage.parseVoiceMask(userMessageReader) | 54 | svcUserMessage.parseVoiceMask(userMessageReader) |
| 55 | case EUserMessageTypeCloseCaption: | 55 | case EUserMessageTypeCloseCaption: |
| 56 | svcUserMessage.parseCloseCaption(userMessageReader) | 56 | svcUserMessage.parseCloseCaption(userMessageReader) |
| 57 | case EUserMessageTypeHintText: | ||
| 58 | svcUserMessage.parseHintText(userMessageReader) | ||
| 57 | case EUserMessageTypeKeyHintText: | 59 | case EUserMessageTypeKeyHintText: |
| 58 | svcUserMessage.parseKeyHintText(userMessageReader) | 60 | svcUserMessage.parseKeyHintText(userMessageReader) |
| 61 | case EUserMessageTypeCreditsMsg: | ||
| 62 | svcUserMessage.parseCreditsMsg(userMessageReader) | ||
| 59 | case EUserMessageTypeLogoTimeMsg: | 63 | case EUserMessageTypeLogoTimeMsg: |
| 60 | svcUserMessage.parseLogoTimeMsg(userMessageReader) | 64 | svcUserMessage.parseLogoTimeMsg(userMessageReader) |
| 61 | case EUserMessageTypeAchievementEvent: | 65 | case EUserMessageTypeAchievementEvent: |
| @@ -64,6 +68,8 @@ func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | |||
| 64 | svcUserMessage.parseCurrentTimescale(userMessageReader) | 68 | svcUserMessage.parseCurrentTimescale(userMessageReader) |
| 65 | case EUserMessageTypeDesiredTimescale: | 69 | case EUserMessageTypeDesiredTimescale: |
| 66 | svcUserMessage.parseDesiredTimescale(userMessageReader) | 70 | svcUserMessage.parseDesiredTimescale(userMessageReader) |
| 71 | case EUserMessageTypeCreditsPortalMsg: | ||
| 72 | svcUserMessage.parseCreditsPortalMsg(userMessageReader) | ||
| 67 | case EUserMessageTypeMPMapCompleted: | 73 | case EUserMessageTypeMPMapCompleted: |
| 68 | svcUserMessage.parseMpMapCompleted(userMessageReader) | 74 | svcUserMessage.parseMpMapCompleted(userMessageReader) |
| 69 | case EUserMessageTypeMPMapIncomplete: | 75 | case EUserMessageTypeMPMapIncomplete: |
| @@ -76,6 +82,10 @@ func ParseSvcUserMessage(reader *bitreader.Reader) SvcUserMessage { | |||
| 76 | svcUserMessage.parsePortalFxSurface(userMessageReader) | 82 | svcUserMessage.parsePortalFxSurface(userMessageReader) |
| 77 | case EUserMessageTypePaintWorld: | 83 | case EUserMessageTypePaintWorld: |
| 78 | svcUserMessage.parsePaintWorld(userMessageReader) | 84 | svcUserMessage.parsePaintWorld(userMessageReader) |
| 85 | case EUserMessageTypeRemovePaint: | ||
| 86 | svcUserMessage.parseRemovePaint(userMessageReader) | ||
| 87 | case EUserMessageTypeApplyHitBoxDamageEffect: | ||
| 88 | svcUserMessage.parseApplyHitBoxDamageEffect(userMessageReader) | ||
| 79 | case EUserMessageTypeTransitionFade: | 89 | case EUserMessageTypeTransitionFade: |
| 80 | svcUserMessage.parseTransitionFade(userMessageReader) | 90 | svcUserMessage.parseTransitionFade(userMessageReader) |
| 81 | case EUserMessageTypeScoreboardTempUpdate: | 91 | case EUserMessageTypeScoreboardTempUpdate: |
| @@ -517,43 +527,53 @@ func (svcUserMessage *SvcUserMessage) parseVoiceMask(reader *bitreader.Reader) { | |||
| 517 | } | 527 | } |
| 518 | 528 | ||
| 519 | func (svcUserMessage *SvcUserMessage) parseCloseCaption(reader *bitreader.Reader) { | 529 | func (svcUserMessage *SvcUserMessage) parseCloseCaption(reader *bitreader.Reader) { |
| 520 | type CloseCaptionFlag uint8 | 530 | // type CloseCaptionFlag uint8 |
| 521 | const ( | 531 | // const ( |
| 522 | None CloseCaptionFlag = 0 | 532 | // None CloseCaptionFlag = 0 |
| 523 | WarnIfMissing CloseCaptionFlag = 1 | 533 | // WarnIfMissing CloseCaptionFlag = 1 |
| 524 | FromPlayer CloseCaptionFlag = 1 << 1 | 534 | // FromPlayer CloseCaptionFlag = 1 << 1 |
| 525 | GenderMale CloseCaptionFlag = 1 << 2 | 535 | // GenderMale CloseCaptionFlag = 1 << 2 |
| 526 | GenderFemale CloseCaptionFlag = 1 << 3 | 536 | // GenderFemale CloseCaptionFlag = 1 << 3 |
| 527 | ) | 537 | // ) |
| 528 | closeCaption := struct { | 538 | closeCaption := struct { |
| 529 | TokenName string | 539 | Hash uint32 |
| 530 | Duration float32 | 540 | Duration float32 |
| 531 | Flags uint8 | 541 | Flags uint8 |
| 532 | }{ | 542 | }{ |
| 533 | TokenName: reader.TryReadString(), | 543 | Hash: reader.TryReadUInt32(), |
| 534 | Duration: float32(reader.TryReadSInt16()) * 0.1, | 544 | Duration: float32(reader.TryReadSInt16()) * 0.1, |
| 535 | Flags: reader.TryReadUInt8(), | 545 | // Flags: reader.TryReadUInt8(), |
| 536 | } | ||
| 537 | getFlags := func(flags CloseCaptionFlag) []string { | ||
| 538 | var flagStrings []string | ||
| 539 | if flags&WarnIfMissing != 0 { | ||
| 540 | flagStrings = append(flagStrings, "WarnIfMissing") | ||
| 541 | } | ||
| 542 | if flags&FromPlayer != 0 { | ||
| 543 | flagStrings = append(flagStrings, "FromPlayer") | ||
| 544 | } | ||
| 545 | if flags&GenderMale != 0 { | ||
| 546 | flagStrings = append(flagStrings, "GenderMale") | ||
| 547 | } | ||
| 548 | if flags&GenderFemale != 0 { | ||
| 549 | flagStrings = append(flagStrings, "GenderFemale") | ||
| 550 | } | ||
| 551 | return flagStrings | ||
| 552 | } | 546 | } |
| 547 | // getFlags := func(flags CloseCaptionFlag) []string { | ||
| 548 | // var flagStrings []string | ||
| 549 | // if flags&WarnIfMissing != 0 { | ||
| 550 | // flagStrings = append(flagStrings, "WarnIfMissing") | ||
| 551 | // } | ||
| 552 | // if flags&FromPlayer != 0 { | ||
| 553 | // flagStrings = append(flagStrings, "FromPlayer") | ||
| 554 | // } | ||
| 555 | // if flags&GenderMale != 0 { | ||
| 556 | // flagStrings = append(flagStrings, "GenderMale") | ||
| 557 | // } | ||
| 558 | // if flags&GenderFemale != 0 { | ||
| 559 | // flagStrings = append(flagStrings, "GenderFemale") | ||
| 560 | // } | ||
| 561 | // return flagStrings | ||
| 562 | // } | ||
| 553 | svcUserMessage.Data = closeCaption | 563 | svcUserMessage.Data = closeCaption |
| 554 | writer.TempAppendLine("\t\t\tToken Name: %s", closeCaption.TokenName) | 564 | writer.TempAppendLine("\t\t\tHash: %v", closeCaption.Hash) |
| 555 | writer.TempAppendLine("\t\t\tDuration: %f", closeCaption.Duration) | 565 | writer.TempAppendLine("\t\t\tDuration: %f", closeCaption.Duration) |
| 556 | writer.TempAppendLine("\t\t\tFlags: %v", getFlags(CloseCaptionFlag(closeCaption.Flags))) | 566 | // writer.TempAppendLine("\t\t\tFlags: %v", getFlags(CloseCaptionFlag(closeCaption.Flags))) |
| 567 | } | ||
| 568 | |||
| 569 | func (svcUserMessage *SvcUserMessage) parseHintText(reader *bitreader.Reader) { | ||
| 570 | hintText := struct { | ||
| 571 | Text string | ||
| 572 | }{ | ||
| 573 | Text: reader.TryReadString(), | ||
| 574 | } | ||
| 575 | svcUserMessage.Data = hintText | ||
| 576 | writer.TempAppendLine("\t\t\tText: %s", hintText.Text) | ||
| 557 | } | 577 | } |
| 558 | 578 | ||
| 559 | func (svcUserMessage *SvcUserMessage) parseKeyHintText(reader *bitreader.Reader) { | 579 | func (svcUserMessage *SvcUserMessage) parseKeyHintText(reader *bitreader.Reader) { |
| @@ -569,6 +589,14 @@ func (svcUserMessage *SvcUserMessage) parseKeyHintText(reader *bitreader.Reader) | |||
| 569 | writer.TempAppendLine("\t\t\tString: %s", keyHintText.KeyString) | 589 | writer.TempAppendLine("\t\t\tString: %s", keyHintText.KeyString) |
| 570 | } | 590 | } |
| 571 | 591 | ||
| 592 | func (svcUserMessage *SvcUserMessage) parseCreditsMsg(reader *bitreader.Reader) { | ||
| 593 | creditsMsg := struct{ Byte uint8 }{ | ||
| 594 | Byte: reader.TryReadUInt8(), | ||
| 595 | } | ||
| 596 | svcUserMessage.Data = creditsMsg | ||
| 597 | writer.TempAppendLine("\t\t\tByte: %v", creditsMsg.Byte) | ||
| 598 | } | ||
| 599 | |||
| 572 | func (svcUserMessage *SvcUserMessage) parseLogoTimeMsg(reader *bitreader.Reader) { | 600 | func (svcUserMessage *SvcUserMessage) parseLogoTimeMsg(reader *bitreader.Reader) { |
| 573 | logoTimeMsg := struct{ Time float32 }{ | 601 | logoTimeMsg := struct{ Time float32 }{ |
| 574 | Time: reader.TryReadFloat32(), | 602 | Time: reader.TryReadFloat32(), |
| @@ -612,6 +640,14 @@ func (svcUserMessage *SvcUserMessage) parseDesiredTimescale(reader *bitreader.Re | |||
| 612 | writer.TempAppendLine("\t\t\tUnk4: %f", desiredTimescale.Unk4) | 640 | writer.TempAppendLine("\t\t\tUnk4: %f", desiredTimescale.Unk4) |
| 613 | } | 641 | } |
| 614 | 642 | ||
| 643 | func (svcUserMessage *SvcUserMessage) parseCreditsPortalMsg(reader *bitreader.Reader) { | ||
| 644 | creditsPortalMsg := struct{ Byte uint8 }{ | ||
| 645 | Byte: reader.TryReadUInt8(), | ||
| 646 | } | ||
| 647 | svcUserMessage.Data = creditsPortalMsg | ||
| 648 | writer.TempAppendLine("\t\t\tByte: %v", creditsPortalMsg.Byte) | ||
| 649 | } | ||
| 650 | |||
| 615 | func (svcUserMessage *SvcUserMessage) parseMpMapCompleted(reader *bitreader.Reader) { | 651 | func (svcUserMessage *SvcUserMessage) parseMpMapCompleted(reader *bitreader.Reader) { |
| 616 | mpMapCompleted := struct { | 652 | mpMapCompleted := struct { |
| 617 | Branch uint8 | 653 | Branch uint8 |
| @@ -782,6 +818,33 @@ func (svcUserMessage *SvcUserMessage) parsePaintWorld(reader *bitreader.Reader) | |||
| 782 | writer.TempAppendLine("\t\t\tPositions: %v", paintWorld.Positions) | 818 | writer.TempAppendLine("\t\t\tPositions: %v", paintWorld.Positions) |
| 783 | } | 819 | } |
| 784 | 820 | ||
| 821 | func (svcUserMessage *SvcUserMessage) parseRemovePaint(reader *bitreader.Reader) { | ||
| 822 | removePaint := struct { | ||
| 823 | Unk uint32 | ||
| 824 | }{ | ||
| 825 | Unk: reader.TryReadUInt32(), | ||
| 826 | } | ||
| 827 | svcUserMessage.Data = removePaint | ||
| 828 | writer.TempAppendLine("\t\t\tUnk: %d", removePaint.Unk) | ||
| 829 | } | ||
| 830 | |||
| 831 | func (svcUserMessage *SvcUserMessage) parseApplyHitBoxDamageEffect(reader *bitreader.Reader) { | ||
| 832 | applyHitBotDamageStruct := struct { | ||
| 833 | UnkInt uint32 | ||
| 834 | UnkByte1 uint8 | ||
| 835 | UnkByte2 uint8 | ||
| 836 | }{ | ||
| 837 | UnkInt: reader.TryReadUInt32(), | ||
| 838 | UnkByte1: reader.TryReadUInt8(), | ||
| 839 | UnkByte2: reader.TryReadUInt8(), | ||
| 840 | } | ||
| 841 | svcUserMessage.Data = applyHitBotDamageStruct | ||
| 842 | writer.TempAppendLine("\t\t\tUnkInt: %d", applyHitBotDamageStruct.UnkInt) | ||
| 843 | writer.TempAppendLine("\t\t\tUnkByte1: %v", applyHitBotDamageStruct.UnkByte1) | ||
| 844 | writer.TempAppendLine("\t\t\tUnkByte2: %v", applyHitBotDamageStruct.UnkByte2) | ||
| 845 | |||
| 846 | } | ||
| 847 | |||
| 785 | func (svcUserMessage *SvcUserMessage) parseTransitionFade(reader *bitreader.Reader) { | 848 | func (svcUserMessage *SvcUserMessage) parseTransitionFade(reader *bitreader.Reader) { |
| 786 | transitionFade := struct { | 849 | transitionFade := struct { |
| 787 | Seconds float32 | 850 | Seconds float32 |
| @@ -830,17 +893,17 @@ const ( | |||
| 830 | EUserMessageTypeRequestState | 893 | EUserMessageTypeRequestState |
| 831 | EUserMessageTypeCloseCaption // done // Show a caption (by string id number)(duration in 10th of a second) | 894 | EUserMessageTypeCloseCaption // done // Show a caption (by string id number)(duration in 10th of a second) |
| 832 | EUserMessageTypeCloseCaptionDirect // Show a forced caption (by string id number)(duration in 10th of a second) | 895 | EUserMessageTypeCloseCaptionDirect // Show a forced caption (by string id number)(duration in 10th of a second) |
| 833 | EUserMessageTypeHintText // Displays hint text display | 896 | EUserMessageTypeHintText // done // Displays hint text display |
| 834 | EUserMessageTypeKeyHintText // done // Displays hint text display | 897 | EUserMessageTypeKeyHintText // done // Displays hint text display |
| 835 | EUserMessageTypeSquadMemberDied | 898 | EUserMessageTypeSquadMemberDied |
| 836 | EUserMessageTypeAmmoDenied | 899 | EUserMessageTypeAmmoDenied |
| 837 | EUserMessageTypeCreditsMsg | 900 | EUserMessageTypeCreditsMsg // done |
| 838 | EUserMessageTypeLogoTimeMsg // done | 901 | EUserMessageTypeLogoTimeMsg // done |
| 839 | EUserMessageTypeAchievementEvent // done | 902 | EUserMessageTypeAchievementEvent // done |
| 840 | EUserMessageTypeUpdateJalopyRadar | 903 | EUserMessageTypeUpdateJalopyRadar |
| 841 | EUserMessageTypeCurrentTimescale // done // Send one float for the new timescale | 904 | EUserMessageTypeCurrentTimescale // done // Send one float for the new timescale |
| 842 | EUserMessageTypeDesiredTimescale // Send timescale and some blending vars | 905 | EUserMessageTypeDesiredTimescale // done // Send timescale and some blending vars |
| 843 | EUserMessageTypeCreditsPortalMsg // portal 1 end | 906 | EUserMessageTypeCreditsPortalMsg // done // portal 1 end |
| 844 | EUserMessageTypeInventoryFlash // portal 2 start | 907 | EUserMessageTypeInventoryFlash // portal 2 start |
| 845 | EUserMessageTypeIndicatorFlash | 908 | EUserMessageTypeIndicatorFlash |
| 846 | EUserMessageTypeControlHelperAnimate | 909 | EUserMessageTypeControlHelperAnimate |
| @@ -857,15 +920,15 @@ const ( | |||
| 857 | EUserMessageTypeMPTauntLocked // done | 920 | EUserMessageTypeMPTauntLocked // done |
| 858 | EUserMessageTypeMPAllTauntsLocked | 921 | EUserMessageTypeMPAllTauntsLocked |
| 859 | EUserMessageTypePortalFX_Surface // done | 922 | EUserMessageTypePortalFX_Surface // done |
| 860 | EUserMessageTypePaintWorld // d | 923 | EUserMessageTypePaintWorld // done |
| 861 | EUserMessageTypePaintEntity | 924 | EUserMessageTypePaintEntity |
| 862 | EUserMessageTypeChangePaintColor | 925 | EUserMessageTypeChangePaintColor |
| 863 | EUserMessageTypePaintBombExplode | 926 | EUserMessageTypePaintBombExplode |
| 864 | EUserMessageTypeRemoveAllPaint | 927 | EUserMessageTypeRemoveAllPaint |
| 865 | EUserMessageTypePaintAllSurfaces | 928 | EUserMessageTypePaintAllSurfaces |
| 866 | EUserMessageTypeRemovePaint | 929 | EUserMessageTypeRemovePaint // done |
| 867 | EUserMessageTypeStartSurvey | 930 | EUserMessageTypeStartSurvey |
| 868 | EUserMessageTypeApplyHitBoxDamageEffect | 931 | EUserMessageTypeApplyHitBoxDamageEffect // done |
| 869 | EUserMessageTypeSetMixLayerTriggerFactor | 932 | EUserMessageTypeSetMixLayerTriggerFactor |
| 870 | EUserMessageTypeTransitionFade // done | 933 | EUserMessageTypeTransitionFade // done |
| 871 | EUserMessageTypeScoreboardTempUpdate // done | 934 | EUserMessageTypeScoreboardTempUpdate // done |