feat: add periodic recruitment payload
This commit is contained in:
parent
aaa605e806
commit
4b8ee3d648
|
@ -428,4 +428,23 @@ internal unsafe class GameFunctions : IDisposable {
|
|||
var itemFinder = Framework.Instance()->GetUiModule()->GetItemFinderModule();
|
||||
this._searchForItem(itemFinder, itemId, 1);
|
||||
}
|
||||
|
||||
internal static void OpenPartyFinder() {
|
||||
// this whole method: 6.05: 84433A
|
||||
var lfg = Framework.Instance()->GetUiModule()->GetAgentModule()->GetAgentByInternalId(AgentId.LookingForGroup);
|
||||
if (lfg->IsAgentActive()) {
|
||||
var addonId = lfg->GetAddonID();
|
||||
var atkModule = Framework.Instance()->GetUiModule()->GetRaptureAtkModule();
|
||||
var atkModuleVtbl = (void**) atkModule->AtkModule.vtbl;
|
||||
var vf27 = (delegate* unmanaged<RaptureAtkModule*, ulong, ulong, byte>) atkModuleVtbl[27];
|
||||
vf27(atkModule, addonId, 1);
|
||||
} else {
|
||||
// 6.05: 8443DD
|
||||
if (*(uint*) ((IntPtr) lfg + 0x2AB8) > 0) {
|
||||
lfg->Hide();
|
||||
} else {
|
||||
lfg->Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,6 +175,13 @@ internal sealed class PayloadHandler {
|
|||
this.ClickLinkPayload(chunk, payload, link);
|
||||
break;
|
||||
}
|
||||
case RawPayload raw: {
|
||||
if (Equals(raw, ChunkUtil.PeriodicRecruitmentLink)) {
|
||||
GameFunctions.OpenPartyFinder();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -70,6 +70,8 @@ internal static class ChunkUtil {
|
|||
glow.Pop();
|
||||
} else if (Equals(rawPayload, RawPayload.LinkTerminator)) {
|
||||
link = null;
|
||||
} else if (Equals(rawPayload, PeriodicRecruitmentLink)) {
|
||||
link = rawPayload;
|
||||
}
|
||||
|
||||
break;
|
||||
|
@ -84,4 +86,8 @@ internal static class ChunkUtil {
|
|||
|
||||
return chunks;
|
||||
}
|
||||
|
||||
internal static readonly RawPayload PeriodicRecruitmentLink = new(new byte[] {
|
||||
0x02, 0x27, 0x07, 0x08, 0x01, 0x01, 0x01, 0xFF, 0x01, 0x03,
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user