fix: catch exceptions in ACS hook

This commit is contained in:
Anna 2021-04-13 09:13:35 -04:00
parent fa96822861
commit 91a454d768
2 changed files with 16 additions and 9 deletions

View File

@ -6,23 +6,23 @@
<LangVersion>latest</LangVersion>
</PropertyGroup>
<ItemGroup>
<Reference Include="Dalamud, Version=5.2.4.2, Culture=neutral, PublicKeyToken=null">
<Reference Include="Dalamud">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\Dalamud.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ImGui.NET, Version=1.72.0.0, Culture=neutral, PublicKeyToken=null">
<Reference Include="ImGui.NET">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\ImGui.NET.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="ImGuiScene, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<Reference Include="ImGuiScene">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\ImGuiScene.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Lumina, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
<Reference Include="Lumina">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\Lumina.dll</HintPath>
<Private>False</Private>
</Reference>
<Reference Include="Lumina.Excel, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<Reference Include="Lumina.Excel">
<HintPath>$(AppData)\XIVLauncher\addon\Hooks\dev\Lumina.Excel.dll</HintPath>
<Private>False</Private>
</Reference>

View File

@ -78,19 +78,26 @@ namespace Globetrotter {
}
private char OnACS(long a1, long a2, IntPtr dataPtr) {
try {
this.OnACSInner(dataPtr);
} catch (Exception ex) {
PluginLog.LogError(ex, "Exception on ACS");
}
return this._acsHook.Original(a1, a2, dataPtr);
}
private void OnACSInner(IntPtr dataPtr) {
var packet = ParsePacket(dataPtr);
if (packet == null) {
return this._acsHook.Original(a1, a2, dataPtr);
return;
}
this._lastMap = packet;
if (this.Config.ShowOnOpen && packet.JustOpened) {
// this does not work because the offset in memory is not yet updated with the thing
this.OpenMapLocation();
}
return this._acsHook.Original(a1, a2, dataPtr);
}
public void OpenMapLocation() {