fix: make pf links work
This commit is contained in:
parent
42ebd5c376
commit
9a42b1b9da
|
@ -227,7 +227,7 @@ internal unsafe class GameFunctions : IDisposable {
|
||||||
vf27(atkModule, addonId, 1);
|
vf27(atkModule, addonId, 1);
|
||||||
} else {
|
} else {
|
||||||
// 6.05: 8443DD
|
// 6.05: 8443DD
|
||||||
if (*(uint*) ((IntPtr) lfg + 0x2AB8) > 0) {
|
if (*(uint*) ((IntPtr) lfg + 0x2C20) > 0) {
|
||||||
lfg->Hide();
|
lfg->Hide();
|
||||||
} else {
|
} else {
|
||||||
lfg->Show();
|
lfg->Show();
|
||||||
|
|
|
@ -14,6 +14,7 @@ using ImGuiNET;
|
||||||
using ImGuiScene;
|
using ImGuiScene;
|
||||||
using Lumina.Excel.GeneratedSheets;
|
using Lumina.Excel.GeneratedSheets;
|
||||||
using Action = System.Action;
|
using Action = System.Action;
|
||||||
|
using PartyFinderPayload = Dalamud.Game.Text.SeStringHandling.Payloads.PartyFinderPayload;
|
||||||
|
|
||||||
namespace ChatTwo;
|
namespace ChatTwo;
|
||||||
|
|
||||||
|
@ -295,20 +296,18 @@ internal sealed class PayloadHandler {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case PartyFinderPayload pf: {
|
case PartyFinderPayload pf: {
|
||||||
this.Ui.Plugin.Functions.OpenPartyFinder(pf.Id);
|
if (pf.LinkType == PartyFinderPayload.PartyFinderLinkType.PartyFinderNotification) {
|
||||||
|
GameFunctions.GameFunctions.OpenPartyFinder();
|
||||||
|
} else {
|
||||||
|
this.Ui.Plugin.Functions.OpenPartyFinder(pf.ListingId);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case AchievementPayload achievement: {
|
case AchievementPayload achievement: {
|
||||||
this.Ui.Plugin.Functions.OpenAchievement(achievement.Id);
|
this.Ui.Plugin.Functions.OpenAchievement(achievement.Id);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RawPayload raw: {
|
|
||||||
if (Equals(raw, ChunkUtil.PeriodicRecruitmentLink)) {
|
|
||||||
GameFunctions.GameFunctions.OpenPartyFinder();
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -63,16 +63,14 @@ internal static class ChunkUtil {
|
||||||
case PayloadType.Player:
|
case PayloadType.Player:
|
||||||
link = payload;
|
link = payload;
|
||||||
break;
|
break;
|
||||||
|
case PayloadType.PartyFinder:
|
||||||
|
link = payload;
|
||||||
|
break;
|
||||||
case PayloadType.Unknown:
|
case PayloadType.Unknown:
|
||||||
var rawPayload = (RawPayload) payload;
|
var rawPayload = (RawPayload) payload;
|
||||||
if (rawPayload.Data.Length > 1 && rawPayload.Data[1] == 0x13) {
|
if (rawPayload.Data.Length > 1 && rawPayload.Data[1] == 0x13) {
|
||||||
foreground.Pop();
|
foreground.Pop();
|
||||||
glow.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) {
|
} else if (rawPayload.Data.Length > 5 && rawPayload.Data[1] == 0x27 && rawPayload.Data[3] == 0x06) {
|
||||||
// achievement payload
|
// achievement payload
|
||||||
var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..]));
|
var reader = new BinaryReader(new MemoryStream(rawPayload.Data[4..]));
|
||||||
|
@ -80,8 +78,6 @@ internal static class ChunkUtil {
|
||||||
link = new AchievementPayload(id);
|
link = new AchievementPayload(id);
|
||||||
} else if (Equals(rawPayload, RawPayload.LinkTerminator)) {
|
} else if (Equals(rawPayload, RawPayload.LinkTerminator)) {
|
||||||
link = null;
|
link = null;
|
||||||
} else if (Equals(rawPayload, PeriodicRecruitmentLink)) {
|
|
||||||
link = rawPayload;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue