Cursed Dictionary to speed icon replacement function.

This commit is contained in:
attick 2019-11-06 18:38:18 -05:00
parent 33489bff2b
commit c7291743b2
2 changed files with 248 additions and 1 deletions

View file

@ -7,7 +7,7 @@
</PropertyGroup>
<PropertyGroup Label="Build">
<OutputType>Library</OutputType>
<OutputPath>D:\Sapphire\recorder\FFXIV.Recorder\/bin</OutputPath>
<OutputPath></OutputPath>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<DebugSymbols>true</DebugSymbols>
<DebugType>Portable</DebugType>

View file

@ -4,6 +4,7 @@ using Dalamud.Game.ClientState.Structs.JobGauge;
using Dalamud.Hooking;
using Serilog;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Runtime.InteropServices;
using XIVLauncher.Dalamud;
@ -25,6 +26,8 @@ namespace Dalamud.Game.Internal.Gui {
private IntPtr byteBase;
private Dalamud dalamud;
private Dictionary<uint, bool> UsedIDs;
public unsafe IconReplacer(Dalamud dalamud, SigScanner scanner) {
this.dalamud = dalamud;
this.Address = new IconReplacerAddressResolver();
@ -34,6 +37,10 @@ namespace Dalamud.Game.Internal.Gui {
this.comboTimer = byteBase + 0x1BB5B50;
this.lastComboMove = byteBase + 0x1BB5B54;
UsedIDs = new Dictionary<uint, bool>();
PopulateDict();
Log.Verbose("===== H O T B A R S =====");
Log.Verbose("IsIconReplaceable address {IsIconReplaceable}", Address.IsIconReplaceable);
Log.Verbose("GetIcon address {GetIcon}", Address.GetIcon);
@ -86,6 +93,8 @@ namespace Dalamud.Game.Internal.Gui {
}
*/
if (!this.UsedIDs.ContainsKey(actionID)) return actionID;
// TODO: this is currently broken
// As it stands, don't rely on localCharacter.level for anything.
var localPlayer = this.dalamud.ClientState.LocalPlayer;
@ -848,5 +857,243 @@ namespace Dalamud.Game.Internal.Gui {
var callback = Marshal.GetDelegateForFunctionPointer<getArray>(step3);
return (IntPtr)callback((long*)num);
}
private void PopulateDict() {
UsedIDs.Add(16477, true);
UsedIDs.Add(88, true);
UsedIDs.Add(84, true);
UsedIDs.Add(3632, true);
UsedIDs.Add(16468, true);
UsedIDs.Add(3538, true);
UsedIDs.Add(3539, true);
UsedIDs.Add(16457, true);
UsedIDs.Add(42, true);
UsedIDs.Add(45, true);
UsedIDs.Add(16462, true);
UsedIDs.Add(7480, true);
UsedIDs.Add(7481, true);
UsedIDs.Add(7482, true);
UsedIDs.Add(7484, true);
UsedIDs.Add(7485, true);
UsedIDs.Add(3563, true);
UsedIDs.Add(2255, true);
UsedIDs.Add(16488, true);
UsedIDs.Add(16145, true);
UsedIDs.Add(16146, true);
UsedIDs.Add(16149, true);
UsedIDs.Add(7413, true);
UsedIDs.Add(2870, true);
UsedIDs.Add(3575, true);
UsedIDs.Add(149, true);
UsedIDs.Add(17055, true);
UsedIDs.Add(3582, true);
UsedIDs.Add(3581, true);
UsedIDs.Add(163, true);
UsedIDs.Add(16508, true);
UsedIDs.Add(16510, true);
UsedIDs.Add(16543, true);
UsedIDs.Add(167, true);
UsedIDs.Add(15994, true);
UsedIDs.Add(15993, true);
UsedIDs.Add(16007, true);
UsedIDs.Add(16008, true);
UsedIDs.Add(16531, true);
UsedIDs.Add(16534, true);
UsedIDs.Add(3559, true);
UsedIDs.Add(97, true);
UsedIDs.Add(16525, true);
UsedIDs.Add(16524, true);
UsedIDs.Add(7516, true);
UsedIDs.Add(0x3e75, true);
UsedIDs.Add(0x3e76, true);
UsedIDs.Add(0x3e77, true);
UsedIDs.Add(0x3e78, true);
UsedIDs.Add(0x3e7d, true);
UsedIDs.Add(0x3e7e, true);
UsedIDs.Add(0x3e86, true);
UsedIDs.Add(0x3f10, true);
UsedIDs.Add(0x3f25, true);
UsedIDs.Add(0x3f1b, true);
UsedIDs.Add(0x3f1c, true);
UsedIDs.Add(0x3f1d, true);
UsedIDs.Add(0x3f1e, true);
UsedIDs.Add(0x451f, true);
UsedIDs.Add(0x42ff, true);
UsedIDs.Add(0x4300, true);
UsedIDs.Add(0x49d4, true);
UsedIDs.Add(0x49d5, true);
UsedIDs.Add(0x49e9, true);
UsedIDs.Add(0x49ea, true);
UsedIDs.Add(0x49f4, true);
UsedIDs.Add(0x49f7, true);
UsedIDs.Add(0x49f9, true);
UsedIDs.Add(0x4a06, true);
UsedIDs.Add(0x4a31, true);
UsedIDs.Add(0x4a32, true);
UsedIDs.Add(0x4a35, true);
UsedIDs.Add(0x4792, true);
UsedIDs.Add(0x452f, true);
UsedIDs.Add(0x453f, true);
UsedIDs.Add(0x454c, true);
UsedIDs.Add(0x455c, true);
UsedIDs.Add(0x455d, true);
UsedIDs.Add(0x4561, true);
UsedIDs.Add(0x4565, true);
UsedIDs.Add(0x4566, true);
UsedIDs.Add(0x45a0, true);
UsedIDs.Add(0x45c8, true);
UsedIDs.Add(0x45c9, true);
UsedIDs.Add(0x45cd, true);
UsedIDs.Add(0x4197, true);
UsedIDs.Add(0x4199, true);
UsedIDs.Add(0x419b, true);
UsedIDs.Add(0x419d, true);
UsedIDs.Add(0x419f, true);
UsedIDs.Add(0x4198, true);
UsedIDs.Add(0x419a, true);
UsedIDs.Add(0x419c, true);
UsedIDs.Add(0x419e, true);
UsedIDs.Add(0x41a0, true);
UsedIDs.Add(0x41a1, true);
UsedIDs.Add(0x41a2, true);
UsedIDs.Add(0x41a3, true);
UsedIDs.Add(0x417e, true);
UsedIDs.Add(0x404f, true);
UsedIDs.Add(0x4051, true);
UsedIDs.Add(0x4052, true);
UsedIDs.Add(0x4055, true);
UsedIDs.Add(0x4053, true);
UsedIDs.Add(0x4056, true);
UsedIDs.Add(0x405e, true);
UsedIDs.Add(0x405f, true);
UsedIDs.Add(0x4063, true);
UsedIDs.Add(0x406f, true);
UsedIDs.Add(0x4074, true);
UsedIDs.Add(0x4075, true);
UsedIDs.Add(0x4076, true);
UsedIDs.Add(0x407d, true);
UsedIDs.Add(0x407f, true);
UsedIDs.Add(0x4083, true);
UsedIDs.Add(0x4080, true);
UsedIDs.Add(0x4081, true);
UsedIDs.Add(0x4082, true);
UsedIDs.Add(0x4084, true);
UsedIDs.Add(0x408e, true);
UsedIDs.Add(0x4091, true);
UsedIDs.Add(0x4092, true);
UsedIDs.Add(0x4094, true);
UsedIDs.Add(0x4095, true);
UsedIDs.Add(0x409c, true);
UsedIDs.Add(0x409d, true);
UsedIDs.Add(0x40aa, true);
UsedIDs.Add(0x40ab, true);
UsedIDs.Add(0x40ad, true);
UsedIDs.Add(0x40ae, true);
UsedIDs.Add(0x272b, true);
UsedIDs.Add(0x222a, true);
UsedIDs.Add(0x222d, true);
UsedIDs.Add(0x222e, true);
UsedIDs.Add(0x223b, true);
UsedIDs.Add(0x2265, true);
UsedIDs.Add(0x2267, true);
UsedIDs.Add(0x2268, true);
UsedIDs.Add(0x2269, true);
UsedIDs.Add(0x2274, true);
UsedIDs.Add(0x2290, true);
UsedIDs.Add(0x2291, true);
UsedIDs.Add(0x2292, true);
UsedIDs.Add(0x229c, true);
UsedIDs.Add(0x229e, true);
UsedIDs.Add(0x22a8, true);
UsedIDs.Add(0x22b3, true);
UsedIDs.Add(0x22b5, true);
UsedIDs.Add(0x22b7, true);
UsedIDs.Add(0x22d1, true);
UsedIDs.Add(0x4575, true);
UsedIDs.Add(0x2335, true);
UsedIDs.Add(0x1ebb, true);
UsedIDs.Add(0x1cdd, true);
UsedIDs.Add(0x1cee, true);
UsedIDs.Add(0x1cef, true);
UsedIDs.Add(0x1cf1, true);
UsedIDs.Add(0x1cf3, true);
UsedIDs.Add(0x1cf4, true);
UsedIDs.Add(0x1cf7, true);
UsedIDs.Add(0x1cfc, true);
UsedIDs.Add(0x1d17, true);
UsedIDs.Add(0x1d00, true);
UsedIDs.Add(0x1d01, true);
UsedIDs.Add(0x1d05, true);
UsedIDs.Add(0x1d07, true);
UsedIDs.Add(0x1d0b, true);
UsedIDs.Add(0x1d0d, true);
UsedIDs.Add(0x1d0f, true);
UsedIDs.Add(0x1d12, true);
UsedIDs.Add(0x1d13, true);
UsedIDs.Add(0x1d4f, true);
UsedIDs.Add(0x1d64, true);
UsedIDs.Add(0x1d50, true);
UsedIDs.Add(0x1d58, true);
UsedIDs.Add(0x1d59, true);
UsedIDs.Add(0x1d51, true);
UsedIDs.Add(0x1d53, true);
UsedIDs.Add(0x1d66, true);
UsedIDs.Add(0x1d55, true);
UsedIDs.Add(0xdda, true);
UsedIDs.Add(0xddd, true);
UsedIDs.Add(0xdde, true);
UsedIDs.Add(0xde3, true);
UsedIDs.Add(0xdf0, true);
UsedIDs.Add(0xdfb, true);
UsedIDs.Add(0xe00, true);
UsedIDs.Add(0xe0b, true);
UsedIDs.Add(0xe0c, true);
UsedIDs.Add(0xe0e, true);
UsedIDs.Add(0xe0f, true);
UsedIDs.Add(0xe11, true);
UsedIDs.Add(0xfed, true);
UsedIDs.Add(0xff7, true);
UsedIDs.Add(0xffb, true);
UsedIDs.Add(0xfe9, true);
UsedIDs.Add(0xb30, true);
UsedIDs.Add(0x12e, true);
UsedIDs.Add(0x8d3, true);
UsedIDs.Add(0x8d4, true);
UsedIDs.Add(0x8d5, true);
UsedIDs.Add(0x8d7, true);
UsedIDs.Add(0xb32, true);
UsedIDs.Add(0xb34, true);
UsedIDs.Add(0xb38, true);
UsedIDs.Add(0xb39, true);
UsedIDs.Add(0xb3e, true);
UsedIDs.Add(0x12d, true);
UsedIDs.Add(0x15, true);
UsedIDs.Add(0x26, true);
UsedIDs.Add(0x31, true);
UsedIDs.Add(0x33, true);
UsedIDs.Add(0x4b, true);
UsedIDs.Add(0x5c, true);
UsedIDs.Add(0x62, true);
UsedIDs.Add(0x64, true);
UsedIDs.Add(0x71, true);
UsedIDs.Add(0x77, true);
UsedIDs.Add(0x7f, true);
UsedIDs.Add(0x79, true);
UsedIDs.Add(0x84, true);
UsedIDs.Add(0x90, true);
UsedIDs.Add(0x99, true);
UsedIDs.Add(0xa4, true);
UsedIDs.Add(0xb2, true);
UsedIDs.Add(0xa8, true);
UsedIDs.Add(0xac, true);
UsedIDs.Add(0xb8, true);
UsedIDs.Add(0xe2, true);
UsedIDs.Add(0x10f, true);
UsedIDs.Add(0xf3, true);
UsedIDs.Add(0x10e, true);
UsedIDs.Add(0x110, true);
UsedIDs.Add(0x111, true);
}
}
}