diff --git a/RoleplayersToolbox/Commands.cs b/RoleplayersToolbox/Commands.cs
index a38460f..f53e328 100755
--- a/RoleplayersToolbox/Commands.cs
+++ b/RoleplayersToolbox/Commands.cs
@@ -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) {
diff --git a/RoleplayersToolbox/DalamudPlugin.cs b/RoleplayersToolbox/DalamudPlugin.cs
deleted file mode 100755
index 0b73038..0000000
--- a/RoleplayersToolbox/DalamudPlugin.cs
+++ /dev/null
@@ -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();
- }
- }
-}
diff --git a/RoleplayersToolbox/FodyWeavers.xml b/RoleplayersToolbox/FodyWeavers.xml
deleted file mode 100755
index 2dfb1f4..0000000
--- a/RoleplayersToolbox/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/RoleplayersToolbox/Plugin.cs b/RoleplayersToolbox/Plugin.cs
index 2875a86..bba3c8c 100755
--- a/RoleplayersToolbox/Plugin.cs
+++ b/RoleplayersToolbox/Plugin.cs
@@ -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));
diff --git a/RoleplayersToolbox/PluginUi.cs b/RoleplayersToolbox/PluginUi.cs
index 009a0e8..19ee391 100755
--- a/RoleplayersToolbox/PluginUi.cs
+++ b/RoleplayersToolbox/PluginUi.cs
@@ -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;
}
diff --git a/RoleplayersToolbox/RoleplayersToolbox.csproj b/RoleplayersToolbox/RoleplayersToolbox.csproj
index 6de6deb..c6e139e 100755
--- a/RoleplayersToolbox/RoleplayersToolbox.csproj
+++ b/RoleplayersToolbox/RoleplayersToolbox.csproj
@@ -1,6 +1,6 @@
- net48
+ net5-windows
0.3.0
latest
enable
@@ -51,10 +51,8 @@
-
-
-
-
-
+
+
+
diff --git a/RoleplayersToolbox/Teleport.cs b/RoleplayersToolbox/Teleport.cs
index b0d57d7..7dc43bf 100755
--- a/RoleplayersToolbox/Teleport.cs
+++ b/RoleplayersToolbox/Teleport.cs
@@ -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(teleportPtr);
}
}
@@ -34,7 +34,7 @@ namespace RoleplayersToolbox {
return;
}
- var aetheryte = this.Data.GetExcelSheet().FirstOrDefault(aeth => aeth.IsAetheryte && aeth.Territory.Row == area.CityStateTerritoryType());
+ var aetheryte = this.Data.GetExcelSheet()!.FirstOrDefault(aeth => aeth.IsAetheryte && aeth.Territory.Row == area.CityStateTerritoryType());
if (aetheryte == null) {
return;
}
diff --git a/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs b/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs
index fc34137..d8e8e0d 100755
--- a/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs
+++ b/RoleplayersToolbox/Tools/Housing/BookmarksUi.cs
@@ -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().GetRow(bookmark.WorldId)?.Name;
+ var worldName = this.Plugin.DataManager.GetExcelSheet()!.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().GetRow(bookmark.WorldId),
+ this.Plugin.DataManager.GetExcelSheet()!.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().GetRow(bookmark.WorldId);
+ : this.Plugin.DataManager.GetExcelSheet()!.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()) {
+ foreach (var availWorld in this.Plugin.DataManager.GetExcelSheet()!) {
if (availWorld.DataCenter.Row != dataCentre || !availWorld.IsPublic) {
continue;
}
diff --git a/RoleplayersToolbox/Tools/Housing/HousingArea.cs b/RoleplayersToolbox/Tools/Housing/HousingArea.cs
index ed2fc39..9efe677 100755
--- a/RoleplayersToolbox/Tools/Housing/HousingArea.cs
+++ b/RoleplayersToolbox/Tools/Housing/HousingArea.cs
@@ -28,7 +28,7 @@ namespace RoleplayersToolbox.Tools.Housing {
};
public static TerritoryType CityState(this HousingArea area, DataManager data) {
- return data.GetExcelSheet().GetRow(area.CityStateTerritoryType());
+ return data.GetExcelSheet()!.GetRow(area.CityStateTerritoryType())!;
}
public static bool CanWorldTravel(this HousingArea area) {
diff --git a/RoleplayersToolbox/Tools/Housing/HousingDistances.cs b/RoleplayersToolbox/Tools/Housing/HousingDistances.cs
index d7cad55..2fa06a6 100755
--- a/RoleplayersToolbox/Tools/Housing/HousingDistances.cs
+++ b/RoleplayersToolbox/Tools/Housing/HousingDistances.cs
@@ -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().GetRow(overrideId);
+ var overrideAethernet = this.Data.GetExcelSheet()!.GetRow(overrideId);
if (overrideAethernet != null) {
return overrideAethernet;
}
diff --git a/RoleplayersToolbox/Tools/Housing/HousingInfo.cs b/RoleplayersToolbox/Tools/Housing/HousingInfo.cs
index ec01d78..1af7bf5 100755
--- a/RoleplayersToolbox/Tools/Housing/HousingInfo.cs
+++ b/RoleplayersToolbox/Tools/Housing/HousingInfo.cs
@@ -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().GetRow((uint) area, plot - 1);
+ var info = this.Data.GetExcelSheet()!.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()) {
+ foreach (var aethernet in this.Data.GetExcelSheet()!) {
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().GetRow((uint) area);
+ private LgbFile? GetLgbFromArea(HousingArea area) {
+ var territory = this.Data.GetExcelSheet()!.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;
diff --git a/RoleplayersToolbox/Tools/Housing/HousingTool.cs b/RoleplayersToolbox/Tools/Housing/HousingTool.cs
index 2ca953a..7762c10 100755
--- a/RoleplayersToolbox/Tools/Housing/HousingTool.cs
+++ b/RoleplayersToolbox/Tools/Housing/HousingTool.cs
@@ -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(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()) {
+ foreach (var availWorld in this.Plugin.DataManager.GetExcelSheet()!) {
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().GetRow((uint) destination.Area!.Value, (uint) destination.Plot! - 1);
+ var info = this.Plugin.DataManager.GetExcelSheet()!.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().GetRow((uint) area, plot - 1);
+ var info = this.Plugin.DataManager.GetExcelSheet()!.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);
}
diff --git a/RoleplayersToolbox/Tools/Housing/InfoExtractor.cs b/RoleplayersToolbox/Tools/Housing/InfoExtractor.cs
index 48aa6a7..769be94 100755
--- a/RoleplayersToolbox/Tools/Housing/InfoExtractor.cs
+++ b/RoleplayersToolbox/Tools/Housing/InfoExtractor.cs
@@ -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()
+ var mostSimilar = data.Excel.GetSheet()!
.Where(world => world.DataCenter.Row == dataCentre)
.SelectMany(world => {
var name = world.Name.ToString().ToLowerInvariant();
diff --git a/RoleplayersToolbox/Tools/Illegal/Emote/EmoteTool.cs b/RoleplayersToolbox/Tools/Illegal/Emote/EmoteTool.cs
index f08b03b..d559a85 100755
--- a/RoleplayersToolbox/Tools/Illegal/Emote/EmoteTool.cs
+++ b/RoleplayersToolbox/Tools/Illegal/Emote/EmoteTool.cs
@@ -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(setPtr, new SetActionOnHotbarDelegate(this.SetActionOnHotbarDetour));
+ if (this.Plugin.SigScanner.TryScanText(Signatures.SetActionOnHotbar, out var setPtr)) {
+ this.SetActionOnHotbarHook = new Hook(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(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) {
diff --git a/RoleplayersToolbox/Tools/Illegal/EmoteSnap/EmoteSnapTool.cs b/RoleplayersToolbox/Tools/Illegal/EmoteSnap/EmoteSnapTool.cs
index 294ce80..96f29cc 100755
--- a/RoleplayersToolbox/Tools/Illegal/EmoteSnap/EmoteSnapTool.cs
+++ b/RoleplayersToolbox/Tools/Illegal/EmoteSnap/EmoteSnapTool.cs
@@ -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(snapPtr, new ShouldSnapDelegate(this.ShouldSnapDetour));
+ if (this.Plugin.SigScanner.TryScanText(Signatures.ShouldSnap, out var snapPtr)) {
+ this.ShouldSnapHook = new Hook(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}.");
}
}
}
diff --git a/RoleplayersToolbox/Tools/Targeting/TargetingTool.cs b/RoleplayersToolbox/Tools/Targeting/TargetingTool.cs
index 263a0df..08773aa 100755
--- a/RoleplayersToolbox/Tools/Targeting/TargetingTool.cs
+++ b/RoleplayersToolbox/Tools/Targeting/TargetingTool.cs
@@ -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(leftClickPtr, new ClickTargetDelegate(this.LeftClickDetour));
+ this.LeftClickHook = new Hook(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(rightClickPtr, new ClickTargetDelegate(this.RightClickDetour));
+ this.RightClickHook = new Hook(rightClickPtr, this.RightClickDetour);
}
this.RightClickHook.Enable();
@@ -64,9 +62,9 @@ namespace RoleplayersToolbox.Tools.Targeting {
}
if (this.Config.LeftClickExamine) {
- var actorStruct = Marshal.PtrToStructure((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((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);
}