fix: hide try on messages

This commit is contained in:
Anna 2021-11-21 02:13:58 -05:00
parent 672cc49e14
commit f56c80080c
2 changed files with 27 additions and 1 deletions

View File

@ -3,6 +3,9 @@ using System.Collections.Generic;
using System.Diagnostics.CodeAnalysis;
using System.Linq;
using System.Runtime.InteropServices;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
using Dalamud.Game.Text.SeStringHandling.Payloads;
using Dalamud.Memory;
using FFXIVClientStructs.FFXIV.Client.Game;
using FFXIVClientStructs.FFXIV.Client.System.Framework;
@ -11,7 +14,7 @@ using FFXIVClientStructs.FFXIV.Component.GUI;
using Lumina.Excel.GeneratedSheets;
namespace Glamaholic {
internal class GameFunctions {
internal class GameFunctions : IDisposable {
private static class Signatures {
internal const string SetGlamourPlateSlot = "E8 ?? ?? ?? ?? E9 ?? ?? ?? ?? 48 8B 46 10";
internal const string ModifyGlamourPlateSlot = "48 89 74 24 ?? 57 48 83 EC 20 80 79 30 00";
@ -38,6 +41,8 @@ namespace Glamaholic {
private readonly TryOnDelegate _tryOn;
private readonly IntPtr _examineNamePtr;
private readonly List<uint> _filterIds = new();
internal GameFunctions(Plugin plugin) {
this.Plugin = plugin;
@ -47,6 +52,22 @@ namespace Glamaholic {
this._armoirePtr = this.Plugin.SigScanner.GetStaticAddressFromSig(Signatures.ArmoirePointer);
this._tryOn = Marshal.GetDelegateForFunctionPointer<TryOnDelegate>(this.Plugin.SigScanner.ScanText(Signatures.TryOn));
this._examineNamePtr = this.Plugin.SigScanner.GetStaticAddressFromSig(Signatures.ExamineNamePointer);
this.Plugin.ChatGui.ChatMessage += this.OnChat;
}
public void Dispose() {
this.Plugin.ChatGui.ChatMessage -= this.OnChat;
}
private void OnChat(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled) {
if (this._filterIds.Count == 0 || type != XivChatType.SystemMessage) {
return;
}
if (message.Payloads.Any(payload => payload is ItemPayload item && this._filterIds.Remove(item.ItemId))) {
isHandled = true;
}
}
internal unsafe bool ArmoireLoaded => *(byte*) this._armoirePtr > 0;
@ -298,6 +319,7 @@ namespace Glamaholic {
}
internal void TryOn(uint itemId, byte stainId) {
this._filterIds.Add(itemId);
this._tryOn(0xFF, itemId % 1_000_000, stainId, 0, 0);
}
}

View File

@ -13,6 +13,9 @@ namespace Glamaholic {
[PluginService]
internal DalamudPluginInterface Interface { get; init; }
[PluginService]
internal ChatGui ChatGui { get; init; }
[PluginService]
internal CommandManager CommandManager { get; init; }
@ -43,6 +46,7 @@ namespace Glamaholic {
public void Dispose() {
this.Commands.Dispose();
this.Ui.Dispose();
this.Functions.Dispose();
}
internal void SaveConfig() {