diff --git a/ChatTwo/PayloadHandler.cs b/ChatTwo/PayloadHandler.cs index b9ad6ab..cb3db53 100755 --- a/ChatTwo/PayloadHandler.cs +++ b/ChatTwo/PayloadHandler.cs @@ -14,7 +14,8 @@ using ImGuiNET; using ImGuiScene; using Lumina.Excel.GeneratedSheets; using Action = System.Action; -using PartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload; +using DalamudPartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload; +using ChatTwoPartyFinderPayload = ChatTwo.Util.PartyFinderPayload; namespace ChatTwo; @@ -295,8 +296,8 @@ internal sealed class PayloadHandler { this.ClickLinkPayload(chunk, payload, link); break; } - case PartyFinderPayload pf: { - if (pf.LinkType == PartyFinderPayload.PartyFinderLinkType.PartyFinderNotification) { + case DalamudPartyFinderPayload pf: { + if (pf.LinkType == DalamudPartyFinderPayload.PartyFinderLinkType.PartyFinderNotification) { GameFunctions.GameFunctions.OpenPartyFinder(); } else { this.Ui.Plugin.Functions.OpenPartyFinder(pf.ListingId); @@ -304,10 +305,21 @@ internal sealed class PayloadHandler { break; } + case ChatTwoPartyFinderPayload pf: { + this.Ui.Plugin.Functions.OpenPartyFinder(pf.Id); + break; + } case AchievementPayload achievement: { this.Ui.Plugin.Functions.OpenAchievement(achievement.Id); break; } + case RawPayload raw: { + if (Equals(raw, ChunkUtil.PeriodicRecruitmentLink)) { + GameFunctions.GameFunctions.OpenPartyFinder(); + } + + break; + } } } diff --git a/ChatTwo/Util/ChunkUtil.cs b/ChatTwo/Util/ChunkUtil.cs index 1358081..9405e2e 100755 --- a/ChatTwo/Util/ChunkUtil.cs +++ b/ChatTwo/Util/ChunkUtil.cs @@ -71,6 +71,11 @@ internal static class ChunkUtil { if (rawPayload.Data.Length > 1 && rawPayload.Data[1] == 0x13) { foreground.Pop(); glow.Pop(); + } else if (rawPayload.Data.Length > 7 && rawPayload.Data[1] == 0x27 && rawPayload.Data[3] == 0x0A) { + // pf payload + var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..])); + var id = GetInteger(reader); + link = new PartyFinderPayload(id); } else if (rawPayload.Data.Length > 5 && rawPayload.Data[1] == 0x27 && rawPayload.Data[3] == 0x06) { // achievement payload var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..]));