refactor: move to net5
This commit is contained in:
parent
04f598f44c
commit
fd2fe8db78
|
@ -8,13 +8,13 @@ namespace RoleplayersToolbox {
|
|||
internal Commands(Plugin plugin) {
|
||||
this.Plugin = plugin;
|
||||
|
||||
this.Plugin.Interface.CommandManager.AddHandler("/rptools", new CommandInfo(this.OnCommand) {
|
||||
this.Plugin.CommandManager.AddHandler("/rptools", new CommandInfo(this.OnCommand) {
|
||||
HelpMessage = "Open The Roleplayer's Toolbox",
|
||||
});
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.Plugin.Interface.CommandManager.RemoveHandler("/rptools");
|
||||
this.Plugin.CommandManager.RemoveHandler("/rptools");
|
||||
}
|
||||
|
||||
private void OnCommand(string command, string arguments) {
|
||||
|
|
|
@ -1,18 +0,0 @@
|
|||
using Dalamud.Plugin;
|
||||
|
||||
namespace RoleplayersToolbox {
|
||||
// ReSharper disable once UnusedType.Global
|
||||
public class DalamudPlugin : IDalamudPlugin {
|
||||
public string Name => "The Roleplayer's Toolbox";
|
||||
|
||||
private Plugin Plugin { get; set; } = null!;
|
||||
|
||||
public void Initialize(DalamudPluginInterface pluginInterface) {
|
||||
this.Plugin = new Plugin(pluginInterface);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.Plugin.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
|
||||
<ILMerge/>
|
||||
</Weavers>
|
|
@ -1,6 +1,15 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using Dalamud.Data;
|
||||
using Dalamud.Game;
|
||||
using Dalamud.Game.ClientState;
|
||||
using Dalamud.Game.ClientState.Objects;
|
||||
using Dalamud.Game.Command;
|
||||
using Dalamud.Game.Gui;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.IoC;
|
||||
using Dalamud.Logging;
|
||||
using Dalamud.Plugin;
|
||||
using Lumina;
|
||||
using RoleplayersToolbox.Tools;
|
||||
|
@ -14,8 +23,39 @@ using RoleplayersToolbox.Tools.Illegal.EmoteSnap;
|
|||
#endif
|
||||
|
||||
namespace RoleplayersToolbox {
|
||||
internal class Plugin : IDisposable {
|
||||
internal DalamudPluginInterface Interface { get; }
|
||||
internal class Plugin : IDalamudPlugin {
|
||||
public string Name => "The Roleplayer's Toolbox";
|
||||
|
||||
[PluginService]
|
||||
internal DalamudPluginInterface Interface { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal ChatGui ChatGui { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal ClientState ClientState { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal CommandManager CommandManager { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal DataManager DataManager { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal Framework Framework { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal GameGui GameGui { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal ObjectTable ObjectTable { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal SeStringManager SeStringManager { get; init; } = null!;
|
||||
|
||||
[PluginService]
|
||||
internal SigScanner SigScanner { get; init; } = null!;
|
||||
|
||||
internal GameData? GameData { get; }
|
||||
internal Configuration Config { get; }
|
||||
internal XivCommonBase Common { get; }
|
||||
|
@ -23,14 +63,13 @@ namespace RoleplayersToolbox {
|
|||
internal PluginUi Ui { get; }
|
||||
private Commands Commands { get; }
|
||||
|
||||
public Plugin(DalamudPluginInterface pluginInterface) {
|
||||
this.Interface = pluginInterface;
|
||||
this.GameData = (GameData?) this.Interface.Data
|
||||
public Plugin() {
|
||||
this.GameData = (GameData?) this.DataManager
|
||||
.GetType()
|
||||
.GetField("gameData", BindingFlags.Instance | BindingFlags.NonPublic)
|
||||
?.GetValue(this.Interface.Data);
|
||||
?.GetValue(this.DataManager);
|
||||
this.Config = this.Interface.GetPluginConfig() as Configuration ?? new Configuration();
|
||||
this.Common = new XivCommonBase(pluginInterface, Hooks.ContextMenu | Hooks.PartyFinderListings);
|
||||
this.Common = new XivCommonBase(Hooks.ContextMenu | Hooks.PartyFinderListings);
|
||||
|
||||
this.Tools.Add(new HousingTool(this));
|
||||
this.Tools.Add(new TargetingTool(this));
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
using System;
|
||||
using System.Numerics;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Logging;
|
||||
using ImGuiNET;
|
||||
|
||||
namespace RoleplayersToolbox {
|
||||
internal class PluginUi : IDisposable {
|
||||
internal Plugin Plugin { get; }
|
||||
private Plugin Plugin { get; }
|
||||
|
||||
private bool _showInterface;
|
||||
|
||||
|
@ -17,16 +17,16 @@ namespace RoleplayersToolbox {
|
|||
internal PluginUi(Plugin plugin) {
|
||||
this.Plugin = plugin;
|
||||
|
||||
this.Plugin.Interface.UiBuilder.OnBuildUi += this.Draw;
|
||||
this.Plugin.Interface.UiBuilder.OnOpenConfigUi += this.OpenConfig;
|
||||
this.Plugin.Interface.UiBuilder.Draw += this.Draw;
|
||||
this.Plugin.Interface.UiBuilder.OpenConfigUi += this.OpenConfig;
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.Plugin.Interface.UiBuilder.OnOpenConfigUi -= this.OpenConfig;
|
||||
this.Plugin.Interface.UiBuilder.OnBuildUi -= this.Draw;
|
||||
this.Plugin.Interface.UiBuilder.OpenConfigUi -= this.OpenConfig;
|
||||
this.Plugin.Interface.UiBuilder.Draw -= this.Draw;
|
||||
}
|
||||
|
||||
private void OpenConfig(object? sender = null, object? args = null) {
|
||||
private void OpenConfig() {
|
||||
this.ShowInterface = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
<TargetFramework>net5-windows</TargetFramework>
|
||||
<Version>0.3.0</Version>
|
||||
<LangVersion>latest</LangVersion>
|
||||
<Nullable>enable</Nullable>
|
||||
|
@ -51,10 +51,8 @@
|
|||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DalamudPackager" Version="1.2.1"/>
|
||||
<PackageReference Include="F23.StringSimilarity" Version="4.1.0"/>
|
||||
<PackageReference Include="Fody" Version="6.5.1" PrivateAssets="all"/>
|
||||
<PackageReference Include="ILMerge.Fody" Version="1.16.0" PrivateAssets="all"/>
|
||||
<PackageReference Include="XivCommon" Version="2.2.0-alpha.1"/>
|
||||
<PackageReference Include="DalamudPackager" Version="2.1.0" />
|
||||
<PackageReference Include="F23.StringSimilarity" Version="4.1.0" />
|
||||
<PackageReference Include="XivCommon" Version="3.0.1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
|
|
@ -20,11 +20,11 @@ namespace RoleplayersToolbox {
|
|||
private DataManager Data { get; }
|
||||
|
||||
internal Teleport(Plugin plugin) {
|
||||
this.Data = plugin.Interface.Data;
|
||||
this.Data = plugin.DataManager;
|
||||
|
||||
plugin.Interface.TargetModuleScanner.TryGetStaticAddressFromSig(Signatures.TelepoAddress, out this._telepo);
|
||||
plugin.SigScanner.TryGetStaticAddressFromSig(Signatures.TelepoAddress, out this._telepo);
|
||||
|
||||
if (plugin.Interface.TargetModuleScanner.TryScanText(Signatures.Teleport, out var teleportPtr)) {
|
||||
if (plugin.SigScanner.TryScanText(Signatures.Teleport, out var teleportPtr)) {
|
||||
this._teleport = Marshal.GetDelegateForFunctionPointer<TeleportDelegate>(teleportPtr);
|
||||
}
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ namespace RoleplayersToolbox {
|
|||
return;
|
||||
}
|
||||
|
||||
var aetheryte = this.Data.GetExcelSheet<Aetheryte>().FirstOrDefault(aeth => aeth.IsAetheryte && aeth.Territory.Row == area.CityStateTerritoryType());
|
||||
var aetheryte = this.Data.GetExcelSheet<Aetheryte>()!.FirstOrDefault(aeth => aeth.IsAetheryte && aeth.Territory.Row == area.CityStateTerritoryType());
|
||||
if (aetheryte == null) {
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
var hash = bookmark.GetHashCode().ToString();
|
||||
|
||||
if (ImGui.TreeNode($"{bookmark.Name}##{hash}")) {
|
||||
var worldName = this.Plugin.Interface.Data.GetExcelSheet<World>().GetRow(bookmark.WorldId)?.Name;
|
||||
var worldName = this.Plugin.DataManager.GetExcelSheet<World>()!.GetRow(bookmark.WorldId)?.Name;
|
||||
ImGui.TextUnformatted($"{worldName}/{bookmark.Area.Name()}/W{bookmark.Ward}/P{bookmark.Plot}");
|
||||
|
||||
if (Util.IconButton(FontAwesomeIcon.MapMarkerAlt, hash)) {
|
||||
|
@ -67,7 +67,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
if (Util.IconButton(FontAwesomeIcon.Route, hash)) {
|
||||
this.Tool.Destination = new DestinationInfo(
|
||||
this.Tool.Info,
|
||||
this.Plugin.Interface.Data.GetExcelSheet<World>().GetRow(bookmark.WorldId),
|
||||
this.Plugin.DataManager.GetExcelSheet<World>()!.GetRow(bookmark.WorldId),
|
||||
bookmark.Area,
|
||||
bookmark.Ward,
|
||||
bookmark.Plot
|
||||
|
@ -153,11 +153,11 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
|
||||
var world = bookmark.WorldId == 0
|
||||
? null
|
||||
: this.Plugin.Interface.Data.GetExcelSheet<World>().GetRow(bookmark.WorldId);
|
||||
: this.Plugin.DataManager.GetExcelSheet<World>()!.GetRow(bookmark.WorldId);
|
||||
if (ImGui.BeginCombo("World", world?.Name?.ToString() ?? string.Empty)) {
|
||||
var dataCentre = this.Plugin.Interface.ClientState.LocalPlayer?.HomeWorld?.GameData?.DataCenter?.Row;
|
||||
var dataCentre = this.Plugin.ClientState.LocalPlayer?.HomeWorld?.GameData?.DataCenter?.Row;
|
||||
|
||||
foreach (var availWorld in this.Plugin.Interface.Data.GetExcelSheet<World>()) {
|
||||
foreach (var availWorld in this.Plugin.DataManager.GetExcelSheet<World>()!) {
|
||||
if (availWorld.DataCenter.Row != dataCentre || !availWorld.IsPublic) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -28,7 +28,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
};
|
||||
|
||||
public static TerritoryType CityState(this HousingArea area, DataManager data) {
|
||||
return data.GetExcelSheet<TerritoryType>().GetRow(area.CityStateTerritoryType());
|
||||
return data.GetExcelSheet<TerritoryType>()!.GetRow(area.CityStateTerritoryType())!;
|
||||
}
|
||||
|
||||
public static bool CanWorldTravel(this HousingArea area) {
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
internal HousingAethernet? GetClosest(HousingArea area, uint plot) {
|
||||
if (Overrides.TryGetValue(area, out var overridePlots)) {
|
||||
if (overridePlots.TryGetValue(plot, out var overrideId)) {
|
||||
var overrideAethernet = this.Data.GetExcelSheet<HousingAethernet>().GetRow(overrideId);
|
||||
var overrideAethernet = this.Data.GetExcelSheet<HousingAethernet>()!.GetRow(overrideId);
|
||||
if (overrideAethernet != null) {
|
||||
return overrideAethernet;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Dalamud.Data;
|
||||
using Dalamud.Plugin;
|
||||
using Dalamud.Logging;
|
||||
using Lumina;
|
||||
using Lumina.Data.Files;
|
||||
using Lumina.Data.Parsing.Layer;
|
||||
|
@ -15,14 +15,14 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
internal HousingDistances Distances { get; }
|
||||
|
||||
internal HousingInfo(Plugin plugin) {
|
||||
this.Data = plugin.Interface.Data;
|
||||
this.Data = plugin.DataManager;
|
||||
this.GameData = plugin.GameData;
|
||||
this.Distances = this.PrecalculateClosest();
|
||||
}
|
||||
|
||||
private HousingAethernet? CalculateClosest(HousingArea area, uint plot) {
|
||||
// subtract 1 from the subrow because Lumina is zero-indexed even though the sheet isn't
|
||||
var info = this.Data.GetExcelSheet<HousingMapMarkerInfo>().GetRow((uint) area, plot - 1);
|
||||
var info = this.Data.GetExcelSheet<HousingMapMarkerInfo>()!.GetRow((uint) area, plot - 1);
|
||||
if (info == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -30,7 +30,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
var (x, y, z) = (info.X, info.Y, info.Z);
|
||||
|
||||
(HousingAethernet aethernet, double distance)? shortest = null;
|
||||
foreach (var aethernet in this.Data.GetExcelSheet<HousingAethernet>()) {
|
||||
foreach (var aethernet in this.Data.GetExcelSheet<HousingAethernet>()!) {
|
||||
if (aethernet.TerritoryType.Row != (uint) area) {
|
||||
continue;
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
return new HousingDistances(this.Data, allClosest);
|
||||
}
|
||||
|
||||
internal LgbFile? GetLgbFromPath(string path) {
|
||||
private LgbFile? GetLgbFromPath(string path) {
|
||||
if (this.GameData == null) {
|
||||
return null;
|
||||
}
|
||||
|
@ -92,18 +92,18 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
}
|
||||
|
||||
internal LgbFile? GetLgbFromArea(HousingArea area) {
|
||||
var territory = this.Data.GetExcelSheet<TerritoryType>().GetRow((uint) area);
|
||||
private LgbFile? GetLgbFromArea(HousingArea area) {
|
||||
var territory = this.Data.GetExcelSheet<TerritoryType>()!.GetRow((uint) area);
|
||||
if (territory == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
var path = territory.Bg.ToString();
|
||||
path = path.Substring(0, path.LastIndexOf('/'));
|
||||
path = path[..path.LastIndexOf('/')];
|
||||
return this.GetLgbFromPath($"bg/{path}/planmap.lgb");
|
||||
}
|
||||
|
||||
internal void LoadObjectsFromFile(LgbFile lgb) {
|
||||
private void LoadObjectsFromFile(LgbFile lgb) {
|
||||
foreach (var layer in lgb.Layers) {
|
||||
foreach (var obj in layer.InstanceObjects) {
|
||||
this.LgbObjects[obj.InstanceId] = obj;
|
||||
|
@ -120,7 +120,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
this.LoadObjectsFromFile(lgb);
|
||||
}
|
||||
|
||||
internal void LoadObjectsFromArea(HousingArea area) {
|
||||
private void LoadObjectsFromArea(HousingArea area) {
|
||||
var lgb = this.GetLgbFromArea(area);
|
||||
if (lgb == null) {
|
||||
return;
|
||||
|
|
|
@ -2,8 +2,8 @@
|
|||
using System.Linq;
|
||||
using System.Numerics;
|
||||
using System.Runtime.InteropServices;
|
||||
using Dalamud.Game;
|
||||
using Dalamud.Game.Command;
|
||||
using Dalamud.Game.Internal;
|
||||
using Dalamud.Game.Text.SeStringHandling;
|
||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||
using FFXIVClientStructs.FFXIV.Client.UI;
|
||||
|
@ -73,26 +73,26 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
this.BookmarksUi = new BookmarksUi(plugin, this, this.Config);
|
||||
this.Teleport = new Teleport(plugin);
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.AddonMapHide, out var addonMapHidePtr)) {
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.AddonMapHide, out var addonMapHidePtr)) {
|
||||
this._addonMapHide = Marshal.GetDelegateForFunctionPointer<AddonMapHideDelegate>(addonMapHidePtr);
|
||||
}
|
||||
|
||||
this.Plugin.Interface.TargetModuleScanner.TryGetStaticAddressFromSig(Signatures.HousingPointer, out this._housingPointer);
|
||||
this.Plugin.SigScanner.TryGetStaticAddressFromSig(Signatures.HousingPointer, out this._housingPointer);
|
||||
|
||||
this.Plugin.Common.Functions.ContextMenu.OpenContextMenu += this.OnContextMenu;
|
||||
this.Plugin.Interface.Framework.OnUpdateEvent += this.OnFramework;
|
||||
this.Plugin.Interface.CommandManager.AddHandler("/route", new CommandInfo(this.OnRouteCommand) {
|
||||
this.Plugin.Framework.Update += this.OnFramework;
|
||||
this.Plugin.CommandManager.AddHandler("/route", new CommandInfo(this.OnRouteCommand) {
|
||||
HelpMessage = "Extract housing information from the given text and open the routing window",
|
||||
});
|
||||
this.Plugin.Interface.CommandManager.AddHandler("/bookmarks", new CommandInfo(this.OnBookmarksCommand) {
|
||||
this.Plugin.CommandManager.AddHandler("/bookmarks", new CommandInfo(this.OnBookmarksCommand) {
|
||||
HelpMessage = "Toggles the housing bookmarks window",
|
||||
});
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.Plugin.Interface.CommandManager.RemoveHandler("/bookmarks");
|
||||
this.Plugin.Interface.CommandManager.RemoveHandler("/route");
|
||||
this.Plugin.Interface.Framework.OnUpdateEvent -= this.OnFramework;
|
||||
this.Plugin.CommandManager.RemoveHandler("/bookmarks");
|
||||
this.Plugin.CommandManager.RemoveHandler("/route");
|
||||
this.Plugin.Framework.Update -= this.OnFramework;
|
||||
this.Plugin.Common.Functions.ContextMenu.OpenContextMenu -= this.OnContextMenu;
|
||||
}
|
||||
|
||||
|
@ -137,9 +137,9 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
|
||||
var world = this.Destination.World;
|
||||
if (ImGui.BeginCombo("World", world?.Name?.ToString() ?? string.Empty)) {
|
||||
var dataCentre = this.Plugin.Interface.ClientState.LocalPlayer?.HomeWorld?.GameData?.DataCenter?.Row;
|
||||
var dataCentre = this.Plugin.ClientState.LocalPlayer?.HomeWorld?.GameData?.DataCenter?.Row;
|
||||
|
||||
foreach (var availWorld in this.Plugin.Interface.Data.GetExcelSheet<World>()) {
|
||||
foreach (var availWorld in this.Plugin.DataManager.GetExcelSheet<World>()!) {
|
||||
if (availWorld.DataCenter.Row != dataCentre || !availWorld.IsPublic) {
|
||||
continue;
|
||||
}
|
||||
|
@ -189,11 +189,11 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
ImGui.SameLine();
|
||||
|
||||
var destArea = this.Destination.Area.Value;
|
||||
if (!destArea.CanWorldTravel() && this.Destination?.World != null && this.Destination?.World != this.Plugin.Interface.ClientState.LocalPlayer?.CurrentWorld?.GameData) {
|
||||
if (!destArea.CanWorldTravel() && this.Destination?.World != null && this.Destination?.World != this.Plugin.ClientState.LocalPlayer?.CurrentWorld?.GameData) {
|
||||
destArea = HousingArea.Mist;
|
||||
}
|
||||
|
||||
var name = destArea.CityState(this.Plugin.Interface.Data).PlaceName.Value.Name;
|
||||
var name = destArea.CityState(this.Plugin.DataManager).PlaceName.Value!.Name;
|
||||
if (ImGui.Button($"Teleport to {name}")) {
|
||||
this.Teleport.TeleportToHousingArea(destArea);
|
||||
}
|
||||
|
@ -207,12 +207,12 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
private void OnRouteCommand(string command, string arguments) {
|
||||
var player = this.Plugin.Interface.ClientState.LocalPlayer;
|
||||
var player = this.Plugin.ClientState.LocalPlayer;
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.Destination = InfoExtractor.Extract(arguments, player.HomeWorld.GameData.DataCenter.Row, this.Plugin.Interface.Data, this.Info);
|
||||
this.Destination = InfoExtractor.Extract(arguments, player.HomeWorld.GameData.DataCenter.Row, this.Plugin.DataManager, this.Info);
|
||||
}
|
||||
|
||||
private void OnBookmarksCommand(string command, string arguments) {
|
||||
|
@ -237,7 +237,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
this.ClearFlag();
|
||||
this.Destination = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.Interface.Data, this.Info);
|
||||
this.Destination = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.DataManager, this.Info);
|
||||
}
|
||||
|
||||
private void AddBookmark(ContextMenuItemSelectedArgs args) {
|
||||
|
@ -246,7 +246,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
return;
|
||||
}
|
||||
|
||||
var dest = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.Interface.Data, this.Info);
|
||||
var dest = InfoExtractor.Extract(listing.Description.TextValue, listing.World.Value.DataCenter.Row, this.Plugin.DataManager, this.Info);
|
||||
this.BookmarksUi.Editing = (new Bookmark(string.Empty) {
|
||||
WorldId = dest.World?.RowId ?? 0,
|
||||
Area = dest.Area ?? 0,
|
||||
|
@ -269,12 +269,12 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
return;
|
||||
}
|
||||
|
||||
var info = this.Plugin.Interface.Data.GetExcelSheet<HousingMapMarkerInfo>().GetRow((uint) destination.Area!.Value, (uint) destination.Plot! - 1);
|
||||
var info = this.Plugin.DataManager.GetExcelSheet<HousingMapMarkerInfo>()!.GetRow((uint) destination.Area!.Value, (uint) destination.Plot! - 1);
|
||||
if (info == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var player = this.Plugin.Interface.ClientState.LocalPlayer;
|
||||
var player = this.Plugin.ClientState.LocalPlayer;
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -285,7 +285,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
// ensure in correct zone
|
||||
if (this.Plugin.Interface.ClientState.TerritoryType != (ushort) destination.Area) {
|
||||
if (this.Plugin.ClientState.TerritoryType != (ushort) destination.Area) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -326,9 +326,9 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
private void CloseMap() {
|
||||
var addon = this.Plugin.Interface.Framework.Gui.GetAddonByName("AreaMap", 1);
|
||||
if (addon != null) {
|
||||
this._addonMapHide?.Invoke(addon.Address);
|
||||
var addon = this.Plugin.GameGui.GetAddonByName("AreaMap", 1);
|
||||
if (addon != IntPtr.Zero) {
|
||||
this._addonMapHide?.Invoke(addon);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -341,7 +341,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
internal void FlagHouseOnMap(HousingArea area, uint plot) {
|
||||
var info = this.Plugin.Interface.Data.GetExcelSheet<HousingMapMarkerInfo>().GetRow((uint) area, plot - 1);
|
||||
var info = this.Plugin.DataManager.GetExcelSheet<HousingMapMarkerInfo>()!.GetRow((uint) area, plot - 1);
|
||||
if (info == null) {
|
||||
return;
|
||||
}
|
||||
|
@ -354,25 +354,24 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
var mapLink = new MapLinkPayload(
|
||||
this.Plugin.Interface.Data,
|
||||
terr.RowId,
|
||||
map!.RowId,
|
||||
(int) (info.X * 1_000f),
|
||||
(int) (info.Z * 1_000f)
|
||||
);
|
||||
|
||||
this.Plugin.Interface.Framework.Gui.OpenMapWithMapLink(mapLink);
|
||||
this.Plugin.GameGui.OpenMapWithMapLink(mapLink);
|
||||
}
|
||||
|
||||
private unsafe void HighlightResidentialTeleport() {
|
||||
var addon = this.Plugin.Interface.Framework.Gui.GetAddonByName("HousingSelectBlock", 1);
|
||||
if (addon == null) {
|
||||
var addon = this.Plugin.GameGui.GetAddonByName("HousingSelectBlock", 1);
|
||||
if (addon == IntPtr.Zero) {
|
||||
return;
|
||||
}
|
||||
|
||||
var shouldSet = false;
|
||||
|
||||
var player = this.Plugin.Interface.ClientState.LocalPlayer;
|
||||
var player = this.Plugin.ClientState.LocalPlayer;
|
||||
if (player != null && this.Destination?.World != null) {
|
||||
shouldSet = player.CurrentWorld.GameData == this.Destination.World;
|
||||
}
|
||||
|
@ -380,11 +379,11 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
if (this.Destination?.Area == null) {
|
||||
shouldSet = false;
|
||||
} else {
|
||||
var currentArea = this.Plugin.Interface.ClientState.TerritoryType;
|
||||
var currentArea = this.Plugin.ClientState.TerritoryType;
|
||||
shouldSet = shouldSet && (currentArea == (ushort) this.Destination.Area || currentArea == this.Destination.Area.Value.CityStateTerritoryType());
|
||||
}
|
||||
|
||||
var unit = (AtkUnitBase*) addon.Address;
|
||||
var unit = (AtkUnitBase*) addon;
|
||||
var uld = unit->UldManager;
|
||||
if (uld.NodeListCount < 1) {
|
||||
return;
|
||||
|
@ -411,18 +410,18 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
var textNode = (AtkTextNode*) radioUld.NodeList[3];
|
||||
var text = Util.ReadSeString((IntPtr) textNode->NodeText.StringPtr, this.Plugin.Interface.SeStringManager);
|
||||
var text = Util.ReadSeString((IntPtr) textNode->NodeText.StringPtr, this.Plugin.SeStringManager);
|
||||
HighlightIf(radioButton, shouldSet && text.TextValue == $"{this.Destination?.Ward}");
|
||||
} while ((radioButton = radioButton->PrevSiblingNode) != null);
|
||||
}
|
||||
|
||||
private unsafe void HighlightSelectString() {
|
||||
var addon = this.Plugin.Interface.Framework.Gui.GetAddonByName("SelectString", 1);
|
||||
if (addon == null) {
|
||||
var addon = this.Plugin.GameGui.GetAddonByName("SelectString", 1);
|
||||
if (addon == IntPtr.Zero) {
|
||||
return;
|
||||
}
|
||||
|
||||
var select = (AddonSelectString*) addon.Address;
|
||||
var select = (AddonSelectString*) addon;
|
||||
var list = select->PopupMenu.List;
|
||||
if (list == null) {
|
||||
return;
|
||||
|
@ -434,7 +433,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
private bool ShouldHighlight(SeString str) {
|
||||
var text = str.TextValue;
|
||||
|
||||
var sameWorld = this.Destination?.World == this.Plugin.Interface.ClientState.LocalPlayer?.CurrentWorld?.GameData;
|
||||
var sameWorld = this.Destination?.World == this.Plugin.ClientState.LocalPlayer?.CurrentWorld?.GameData;
|
||||
if (!sameWorld && this.Destination?.World != null) {
|
||||
return text == " Visit Another World Server.";
|
||||
}
|
||||
|
@ -446,7 +445,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
// ReSharper disable once InvertIf
|
||||
if (this.Destination?.Ward != null && this.Plugin.Interface.ClientState.TerritoryType == this.Destination?.Area?.CityStateTerritoryType()) {
|
||||
if (this.Destination?.Ward != null && this.Plugin.ClientState.TerritoryType == this.Destination?.Area?.CityStateTerritoryType()) {
|
||||
switch (text) {
|
||||
case " Residential District Aethernet.":
|
||||
case "Go to specified ward. (Review Tabs)":
|
||||
|
@ -461,7 +460,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
for (var i = 0; i < list->ListLength; i++) {
|
||||
var item = list->ItemRendererList + i;
|
||||
var button = item->AtkComponentListItemRenderer->AtkComponentButton;
|
||||
var buttonText = Util.ReadSeString((IntPtr) button.ButtonTextNode->NodeText.StringPtr, this.Plugin.Interface.SeStringManager);
|
||||
var buttonText = Util.ReadSeString((IntPtr) button.ButtonTextNode->NodeText.StringPtr, this.Plugin.SeStringManager);
|
||||
|
||||
var component = (AtkComponentBase*) item->AtkComponentListItemRenderer;
|
||||
|
||||
|
@ -470,19 +469,19 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
}
|
||||
|
||||
private unsafe void HighlightWorldTravel() {
|
||||
var player = this.Plugin.Interface.ClientState.LocalPlayer;
|
||||
var player = this.Plugin.ClientState.LocalPlayer;
|
||||
if (player == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var world = this.Destination?.World;
|
||||
|
||||
var addon = this.Plugin.Interface.Framework.Gui.GetAddonByName("WorldTravelSelect", 1);
|
||||
if (addon == null) {
|
||||
var addon = this.Plugin.GameGui.GetAddonByName("WorldTravelSelect", 1);
|
||||
if (addon == IntPtr.Zero) {
|
||||
return;
|
||||
}
|
||||
|
||||
var unit = (AtkUnitBase*) addon.Address;
|
||||
var unit = (AtkUnitBase*) addon;
|
||||
var root = unit->RootNode;
|
||||
if (root == null) {
|
||||
return;
|
||||
|
@ -507,7 +506,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
var comp = (AtkComponentNode*) prev;
|
||||
var res = comp->Component->UldManager.RootNode->PrevSiblingNode->PrevSiblingNode->PrevSiblingNode;
|
||||
var text = (AtkTextNode*) res->ChildNode;
|
||||
var str = Util.ReadSeString((IntPtr) text->NodeText.StringPtr, this.Plugin.Interface.SeStringManager);
|
||||
var str = Util.ReadSeString((IntPtr) text->NodeText.StringPtr, this.Plugin.SeStringManager);
|
||||
HighlightIf(&text->AtkResNode, str.TextValue == world?.Name?.ToString());
|
||||
} while ((prev = prev->PrevSiblingNode) != null);
|
||||
}
|
||||
|
|
|
@ -47,7 +47,7 @@ namespace RoleplayersToolbox.Tools.Housing {
|
|||
|
||||
private static World? FindWorld(string source, uint dataCentre, DataManager data) {
|
||||
var words = NonWord.Split(source).Where(word => word.ToLowerInvariant() != "gg").ToArray();
|
||||
var mostSimilar = data.Excel.GetSheet<World>()
|
||||
var mostSimilar = data.Excel.GetSheet<World>()!
|
||||
.Where(world => world.DataCenter.Row == dataCentre)
|
||||
.SelectMany(world => {
|
||||
var name = world.Name.ToString().ToLowerInvariant();
|
||||
|
|
|
@ -32,26 +32,26 @@ namespace RoleplayersToolbox.Tools.Illegal.Emote {
|
|||
internal EmoteTool(Plugin plugin) {
|
||||
this.Plugin = plugin;
|
||||
|
||||
this.Plugin.Interface.CommandManager.AddHandler("/emoteid", new CommandInfo(this.EmoteIdCommand) {
|
||||
this.Plugin.CommandManager.AddHandler("/emoteid", new CommandInfo(this.EmoteIdCommand) {
|
||||
HelpMessage = "Run the emote with the given ID if it is unlocked",
|
||||
});
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.SetActionOnHotbar, out var setPtr)) {
|
||||
this.SetActionOnHotbarHook = new Hook<SetActionOnHotbarDelegate>(setPtr, new SetActionOnHotbarDelegate(this.SetActionOnHotbarDetour));
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.SetActionOnHotbar, out var setPtr)) {
|
||||
this.SetActionOnHotbarHook = new Hook<SetActionOnHotbarDelegate>(setPtr, this.SetActionOnHotbarDetour);
|
||||
this.SetActionOnHotbarHook.Enable();
|
||||
}
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.RunEmote, out var runEmotePtr)) {
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.RunEmote, out var runEmotePtr)) {
|
||||
this.RunEmoteFunction = Marshal.GetDelegateForFunctionPointer<RunEmoteDelegate>(runEmotePtr);
|
||||
}
|
||||
|
||||
this.Plugin.Interface.TargetModuleScanner.TryGetStaticAddressFromSig(Signatures.RunEmoteFirstArg, out this._runEmoteFirstArg);
|
||||
this.Plugin.Interface.TargetModuleScanner.TryGetStaticAddressFromSig(Signatures.RunEmoteThirdArg, out this._runEmoteThirdArg);
|
||||
this.Plugin.SigScanner.TryGetStaticAddressFromSig(Signatures.RunEmoteFirstArg, out this._runEmoteFirstArg);
|
||||
this.Plugin.SigScanner.TryGetStaticAddressFromSig(Signatures.RunEmoteThirdArg, out this._runEmoteThirdArg);
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.SetActionOnHotbarHook?.Dispose();
|
||||
this.Plugin.Interface.CommandManager.RemoveHandler("/emoteid");
|
||||
this.Plugin.CommandManager.RemoveHandler("/emoteid");
|
||||
}
|
||||
|
||||
public override void DrawSettings(ref bool anyChanged) {
|
||||
|
|
|
@ -23,18 +23,18 @@ namespace RoleplayersToolbox.Tools.Illegal.EmoteSnap {
|
|||
this.Plugin = plugin;
|
||||
this.Config = this.Plugin.Config.Tools.EmoteSnap;
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.ShouldSnap, out var snapPtr)) {
|
||||
this.ShouldSnapHook = new Hook<ShouldSnapDelegate>(snapPtr, new ShouldSnapDelegate(this.ShouldSnapDetour));
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.ShouldSnap, out var snapPtr)) {
|
||||
this.ShouldSnapHook = new Hook<ShouldSnapDelegate>(snapPtr, this.ShouldSnapDetour);
|
||||
this.ShouldSnapHook.Enable();
|
||||
}
|
||||
|
||||
this.Plugin.Interface.CommandManager.AddHandler("/dozesnap", new CommandInfo(this.OnCommand) {
|
||||
this.Plugin.CommandManager.AddHandler("/dozesnap", new CommandInfo(this.OnCommand) {
|
||||
HelpMessage = "Toggle snapping for the /doze emote",
|
||||
});
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
this.Plugin.Interface.CommandManager.RemoveHandler("/dozesnap");
|
||||
this.Plugin.CommandManager.RemoveHandler("/dozesnap");
|
||||
this.ShouldSnapHook?.Dispose();
|
||||
}
|
||||
|
||||
|
@ -55,7 +55,7 @@ namespace RoleplayersToolbox.Tools.Illegal.EmoteSnap {
|
|||
this.Config.DisableDozeSnap ^= true;
|
||||
|
||||
var status = this.Config.DisableDozeSnap ? "off" : "on";
|
||||
this.Plugin.Interface.Framework.Gui.Chat.Print($"/doze snap toggled {status}.");
|
||||
this.Plugin.ChatGui.Print($"/doze snap toggled {status}.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
using Dalamud.Game.ClientState.Actors;
|
||||
using Dalamud.Game.ClientState.Structs;
|
||||
using Dalamud.Game.ClientState.Objects.Enums;
|
||||
using Dalamud.Hooking;
|
||||
using ImGuiNET;
|
||||
|
||||
|
@ -24,17 +22,17 @@ namespace RoleplayersToolbox.Tools.Targeting {
|
|||
this.Plugin = plugin;
|
||||
this.Config = this.Plugin.Config.Tools.Targeting;
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.LeftClickTarget, out var leftClickPtr)) {
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.LeftClickTarget, out var leftClickPtr)) {
|
||||
unsafe {
|
||||
this.LeftClickHook = new Hook<ClickTargetDelegate>(leftClickPtr, new ClickTargetDelegate(this.LeftClickDetour));
|
||||
this.LeftClickHook = new Hook<ClickTargetDelegate>(leftClickPtr, this.LeftClickDetour);
|
||||
}
|
||||
|
||||
this.LeftClickHook.Enable();
|
||||
}
|
||||
|
||||
if (this.Plugin.Interface.TargetModuleScanner.TryScanText(Signatures.RightClickTarget, out var rightClickPtr)) {
|
||||
if (this.Plugin.SigScanner.TryScanText(Signatures.RightClickTarget, out var rightClickPtr)) {
|
||||
unsafe {
|
||||
this.RightClickHook = new Hook<ClickTargetDelegate>(rightClickPtr, new ClickTargetDelegate(this.RightClickDetour));
|
||||
this.RightClickHook = new Hook<ClickTargetDelegate>(rightClickPtr, this.RightClickDetour);
|
||||
}
|
||||
|
||||
this.RightClickHook.Enable();
|
||||
|
@ -64,9 +62,9 @@ namespace RoleplayersToolbox.Tools.Targeting {
|
|||
}
|
||||
|
||||
if (this.Config.LeftClickExamine) {
|
||||
var actorStruct = Marshal.PtrToStructure<Actor>((IntPtr) clickedOn);
|
||||
if (actorStruct.ObjectKind == ObjectKind.Player) {
|
||||
this.Plugin.Common.Functions.Examine.OpenExamineWindow(actorStruct.ActorId);
|
||||
var obj = this.Plugin.ObjectTable.CreateObjectReference((IntPtr) clickedOn);
|
||||
if (obj != null && obj.ObjectKind == ObjectKind.Player) {
|
||||
this.Plugin.Common.Functions.Examine.OpenExamineWindow(obj.ObjectId);
|
||||
// tell game current target was left-clicked
|
||||
return this.LeftClickHook!.Original(a1, target, a3);
|
||||
}
|
||||
|
@ -93,9 +91,9 @@ namespace RoleplayersToolbox.Tools.Targeting {
|
|||
goto Original;
|
||||
}
|
||||
|
||||
var actorStruct = Marshal.PtrToStructure<Actor>((IntPtr) clickedOn);
|
||||
if (actorStruct.ObjectKind == ObjectKind.Player) {
|
||||
this.Plugin.Common.Functions.Examine.OpenExamineWindow(actorStruct.ActorId);
|
||||
var obj = this.Plugin.ObjectTable.CreateObjectReference((IntPtr) clickedOn);
|
||||
if (obj != null && obj.ObjectKind == ObjectKind.Player) {
|
||||
this.Plugin.Common.Functions.Examine.OpenExamineWindow(obj.ObjectId);
|
||||
// tell game nothing was right-clicked
|
||||
return this.RightClickHook!.Original(a1, null, a3);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue