Skip to content

Commit

Permalink
AutoHook 2.2.2.2 [PUSH]
Browse files Browse the repository at this point in the history
Trying removing language dependency
  • Loading branch information
InitialDet committed Aug 15, 2022
1 parent 8755ecf commit e9bae6f
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 70 deletions.
2 changes: 1 addition & 1 deletion AutoHook/AutoHook.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<Authors>Det</Authors>
<Version>2.2.2.1</Version>
<Version>2.2.2.2</Version>
<Description>Auto hooks for you</Description>
<PackageProjectUrl>https://github.com/InitialDet/AutoHook</PackageProjectUrl>
<Configurations>Release;Debug</Configurations>
Expand Down
2 changes: 1 addition & 1 deletion AutoHook/AutoHook.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@
"Tags": ["Gathering","Fishing"],
"DalamudApiLevel": 6,
"IconUrl": "https://raw.githubusercontent.com/InitialDet/AutoHook/main/AutoHook/images/icon.png",
"Changelog": "- Added an option to not cancel current mooch when using Auto Casts\n- Fixed an issue with \"Stop Fishing After\""
"Changelog": "- Trying to add support for CN server"
}
3 changes: 1 addition & 2 deletions AutoHook/Parser/FishingParser.Regexes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,7 @@ public static Regexes FromLanguage(ClientLanguage lang)
ClientLanguage.German => German.Value,
ClientLanguage.French => French.Value,
ClientLanguage.Japanese => Japanese.Value,
ClientLanguage.ChineseSimplified => ChineseSimplified.Value,
_ => throw new InvalidEnumArgumentException(),
_ => ChineseSimplified.Value,
};
}

Expand Down
34 changes: 28 additions & 6 deletions AutoHook/Parser/FishingParser.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using AutoHook.SeFunctions;
using AutoHook.Utils;
using Item = Lumina.Excel.GeneratedSheets.Item;
using AutoHook.Data;

namespace Parser;

Expand All @@ -25,28 +26,34 @@ private delegate bool UseActionDelegate(IntPtr manager, ActionType actionType, u
private readonly Regexes _regexes = Regexes.FromLanguage(Service.Language);

private readonly Hook<UpdateCatchDelegate>? _catchHook;
private readonly Hook<UseActionDelegate>? _hookHook;

public FishingParser()
public unsafe FishingParser()
{
_catchHook = new UpdateFishCatch(Service.SigScanner).CreateHook(OnCatchUpdate);
var hookPtr = (IntPtr)ActionManager.fpUseAction;
_hookHook = Hook<UseActionDelegate>.FromAddress(hookPtr, OnUseAction);
}

public void Enable()
{
_hookHook?.Enable();
_catchHook?.Enable();
Service.Chat.ChatMessage += OnMessageDelegate;
//Service.Chat.ChatMessage += OnMessageDelegate;
}

public void Disable()
{
_hookHook?.Disable();
_catchHook?.Disable();
Service.Chat.ChatMessage -= OnMessageDelegate;
//Service.Chat.ChatMessage -= OnMessageDelegate;
}

public void Dispose()
{
Disable();
_catchHook?.Dispose();
_hookHook?.Dispose();
}

private void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sender, ref SeString message, ref bool isHandled)
Expand Down Expand Up @@ -76,13 +83,28 @@ private void OnMessageDelegate(XivChatType type, uint senderId, ref SeString sen
}
}

private bool OnUseAction(IntPtr manager, ActionType actionType, uint actionId, GameObjectID targetId, uint a4, uint a5, uint a6, IntPtr a7)
{
if (actionType == ActionType.Spell)
switch (actionId)
{
case IDs.Actions.Cast:
BeganFishing?.Invoke();
break;
case IDs.Actions.Mooch:
case IDs.Actions.Mooch2:
BeganMooching?.Invoke();
break;
}

return _hookHook!.Original(manager, actionType, actionId, targetId, a4, a5, a6, a7);
}

private void OnCatchUpdate(IntPtr module, uint fishId, bool large, ushort size, byte amount, byte level, byte unk7, byte unk8, byte unk9, byte unk10, byte unk11, byte unk12)
{
_catchHook!.Original(module, fishId, large, size, amount, level, unk7, unk8, unk9, unk10, unk11, unk12);

string fishName = MultiString.ParseSeStringLumina(Service.DataManager.GetExcelSheet<Item>()!.GetRow(fishId)?.Name);
CaughtFish?.Invoke(fishName, fishId);
}


}
4 changes: 2 additions & 2 deletions AutoHook/Service.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Dalamud.Game;
using Dalamud.Game;
using Dalamud.IoC;
using Dalamud.Data;
using Dalamud.Plugin;
Expand Down Expand Up @@ -36,5 +36,5 @@ public static void Initialize(DalamudPluginInterface pluginInterface)
public static Configuration Configuration { get; set; } = null!;
public static WindowSystem WindowSystem { get; } = new WindowSystem(PluginName);
public static SeTugType TugType { get; set; } = null!;
public static ClientLanguage Language { get; set; } = ClientLanguage.English;
public static ClientLanguage Language { get; set; }
}
58 changes: 0 additions & 58 deletions AutoHook/Utils/MultiString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,62 +9,4 @@ public readonly struct MultiString
{
public static string ParseSeStringLumina(SeString? luminaString)
=> luminaString == null ? string.Empty : Dalamud.Game.Text.SeStringHandling.SeString.Parse(luminaString.RawData).TextValue;

public readonly string English;
public readonly string German;
public readonly string French;
public readonly string Japanese;
public readonly string ChineseSimplified;

public string this[ClientLanguage lang]
=> Name(lang);

public override string ToString()
=> Name(ClientLanguage.English);

public string ToWholeString()
=> $"{English}|{German}|{French}|{Japanese}|{ChineseSimplified}";

public MultiString(string en, string de, string fr, string jp,string zh)
{
English = en;
German = de;
French = fr;
Japanese = jp;
ChineseSimplified = zh;
}


public static MultiString FromPlaceName(DataManager gameData, uint id)
{
var en = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.PlaceName>(ClientLanguage.English)!.GetRow(id)?.Name);
var de = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.PlaceName>(ClientLanguage.German)!.GetRow(id)?.Name);
var fr = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.PlaceName>(ClientLanguage.French)!.GetRow(id)?.Name);
var jp = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.PlaceName>(ClientLanguage.Japanese)!.GetRow(id)?.Name);
var zh = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.PlaceName>(ClientLanguage.ChineseSimplified)!.GetRow(id)?.Name);
return new MultiString(en, de, fr, jp, zh);
}

public static MultiString FromItem(DataManager gameData, uint id)
{
var en = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.Item>(ClientLanguage.English)!.GetRow(id)?.Name);
var de = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.Item>(ClientLanguage.German)!.GetRow(id)?.Name);
var fr = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.Item>(ClientLanguage.French)!.GetRow(id)?.Name);
var jp = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.Item>(ClientLanguage.Japanese)!.GetRow(id)?.Name);
var zh = ParseSeStringLumina(gameData.GetExcelSheet<Lumina.Excel.GeneratedSheets.Item>(ClientLanguage.ChineseSimplified)!.GetRow(id)?.Name);
return new MultiString(en, de, fr, jp, zh);
}

private string Name(ClientLanguage lang)
=> lang switch
{
ClientLanguage.English => English,
ClientLanguage.German => German,
ClientLanguage.Japanese => Japanese,
ClientLanguage.French => French,
ClientLanguage.ChineseSimplified => ChineseSimplified,
_ => throw new ArgumentException(),
};

public static readonly MultiString Empty = new(string.Empty, string.Empty, string.Empty, string.Empty, string.Empty);
}

0 comments on commit e9bae6f

Please sign in to comment.