From 67b6981f7b1142bc35e425b7d845ddebcc079c8c Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Wed, 4 Oct 2023 10:49:39 +0200 Subject: [PATCH] API 9 --- Deliveroo/Deliveroo.csproj | 8 +-- Deliveroo/DeliverooPlugin.Exchange.cs | 11 ++-- Deliveroo/DeliverooPlugin.GameFunctions.cs | 12 ++-- Deliveroo/DeliverooPlugin.Supply.cs | 7 +-- Deliveroo/DeliverooPlugin.cs | 65 +++++++++++----------- Deliveroo/External/DalamudReflector.cs | 15 +++-- Deliveroo/GameData/GcRewardsCache.cs | 4 +- Deliveroo/Windows/ConfigWindow.cs | 12 ++-- Deliveroo/Windows/TurnInWindow.cs | 1 + Deliveroo/packages.lock.json | 6 +- 10 files changed, 66 insertions(+), 75 deletions(-) diff --git a/Deliveroo/Deliveroo.csproj b/Deliveroo/Deliveroo.csproj index 4c49b59..538dc8a 100644 --- a/Deliveroo/Deliveroo.csproj +++ b/Deliveroo/Deliveroo.csproj @@ -1,7 +1,7 @@ net7.0-windows - 1.0 + 2.0 11.0 enable true @@ -22,7 +22,7 @@ - + @@ -34,10 +34,6 @@ $(DalamudLibPath)ImGui.NET.dll false - - $(DalamudLibPath)ImGuiScene.dll - false - $(DalamudLibPath)Lumina.dll false diff --git a/Deliveroo/DeliverooPlugin.Exchange.cs b/Deliveroo/DeliverooPlugin.Exchange.cs index 43a74f1..acc991b 100644 --- a/Deliveroo/DeliverooPlugin.Exchange.cs +++ b/Deliveroo/DeliverooPlugin.Exchange.cs @@ -1,6 +1,5 @@ using System; using Dalamud.Game.ClientState.Objects.Types; -using Dalamud.Logging; using Deliveroo.GameData; using FFXIVClientStructs.FFXIV.Component.GUI; using ValueType = FFXIVClientStructs.FFXIV.Component.GUI.ValueType; @@ -51,7 +50,7 @@ partial class DeliverooPlugin if (TryGetAddonByName("GrandCompanyExchange", out var addonExchange) && IsAddonReady(addonExchange)) { - PluginLog.Information($"Selecting tier 1, {(int)item.Tier - 1}"); + _pluginLog.Information($"Selecting tier 1, {(int)item.Tier - 1}"); var selectRank = stackalloc AtkValue[] { new() { Type = ValueType.Int, Int = 1 }, @@ -82,7 +81,7 @@ partial class DeliverooPlugin if (TryGetAddonByName("GrandCompanyExchange", out var addonExchange) && IsAddonReady(addonExchange)) { - PluginLog.Information($"Selecting subcategory 2, {(int)item.SubCategory}"); + _pluginLog.Information($"Selecting subcategory 2, {(int)item.SubCategory}"); var selectType = stackalloc AtkValue[] { new() { Type = ValueType.Int, Int = 2 }, @@ -131,7 +130,7 @@ partial class DeliverooPlugin uint itemId = addonExchange->AtkValues[317 + i].UInt; if (itemId == item.ItemId) { - PluginLog.Information($"Selecting item {itemId}, {i}"); + _pluginLog.Information($"Selecting item {itemId}, {i}"); long toBuy = (GetCurrentSealCount() - _configuration.ReservedSealCount) / item.SealCost; toBuy = Math.Min(toBuy, item.EffectiveLimit - GetItemCount(item.ItemId)); @@ -140,7 +139,7 @@ partial class DeliverooPlugin if (toBuy <= 0) { - PluginLog.Information($"Items to buy = {toBuy}"); + _pluginLog.Information($"Items to buy = {toBuy}"); return false; } @@ -162,7 +161,7 @@ partial class DeliverooPlugin } } - PluginLog.Warning("Could not find selected reward item"); + _pluginLog.Warning("Could not find selected reward item"); return false; } diff --git a/Deliveroo/DeliverooPlugin.GameFunctions.cs b/Deliveroo/DeliverooPlugin.GameFunctions.cs index 562cd26..3f6ac53 100644 --- a/Deliveroo/DeliverooPlugin.GameFunctions.cs +++ b/Deliveroo/DeliverooPlugin.GameFunctions.cs @@ -4,7 +4,6 @@ using System.Linq; using System.Runtime.InteropServices; using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Types; -using Dalamud.Logging; using Dalamud.Memory; using Deliveroo.GameData; using FFXIVClientStructs.FFXIV.Client.Game; @@ -21,7 +20,7 @@ partial class DeliverooPlugin { private unsafe void InteractWithTarget(GameObject obj) { - PluginLog.Information($"Setting target to {obj}"); + _pluginLog.Information($"Setting target to {obj}"); if (_targetManager.Target == null || _targetManager.Target != obj) { _targetManager.Target = obj; @@ -165,12 +164,9 @@ partial class DeliverooPlugin var unitManagers = &AtkStage.GetSingleton()->RaptureAtkUnitManager->AtkUnitManager.DepthLayerOneList; for (var i = 0; i < 18; i++) { - var unitManager = &unitManagers[i]; - var unitBaseArray = &(unitManager->AtkUnitEntries); - for (var j = 0; j < unitManager->Count; j++) + foreach (AtkUnitBase* unitBase in unitManagers[i].EntriesSpan) { - var unitBase = unitBaseArray[j]; - if (unitBase->ID == id) + if (unitBase != null && unitBase->ID == id) { return unitBase; } @@ -219,7 +215,7 @@ partial class DeliverooPlugin IsAddonReady(&addonSelectYesno->AtkUnitBase) && predicate(MemoryHelper.ReadSeString(&addonSelectYesno->PromptText->NodeText).ToString())) { - PluginLog.Information( + _pluginLog.Information( $"Selecting choice={choice} for '{MemoryHelper.ReadSeString(&addonSelectYesno->PromptText->NodeText)}'"); addonSelectYesno->AtkUnitBase.FireCallbackInt(choice); diff --git a/Deliveroo/DeliverooPlugin.Supply.cs b/Deliveroo/DeliverooPlugin.Supply.cs index baf3623..b42cd0b 100644 --- a/Deliveroo/DeliverooPlugin.Supply.cs +++ b/Deliveroo/DeliverooPlugin.Supply.cs @@ -1,9 +1,6 @@ using System; using System.Collections.Generic; -using System.Linq; using Dalamud.Game.ClientState.Objects.Types; -using Dalamud.Logging; -using Dalamud.Memory; using Deliveroo.GameData; using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Client.UI.Agent; @@ -46,12 +43,12 @@ partial class DeliverooPlugin var addonGc = (AddonGrandCompanySupplyList*)addon; if (addonGc->SelectedTab == 2) { - PluginLog.Information("Tab already selected, probably due to haseltweaks"); + _pluginLog.Information("Tab already selected, probably due to haseltweaks"); CurrentStage = Stage.SelectItemToTurnIn; return; } - PluginLog.Information("Switching to expert deliveries"); + _pluginLog.Information("Switching to expert deliveries"); var selectExpertDeliveryTab = stackalloc AtkValue[] { new() { Type = ValueType.Int, Int = 0 }, diff --git a/Deliveroo/DeliverooPlugin.cs b/Deliveroo/DeliverooPlugin.cs index b3f0ccf..0d98f2e 100644 --- a/Deliveroo/DeliverooPlugin.cs +++ b/Deliveroo/DeliverooPlugin.cs @@ -1,24 +1,19 @@ using System; using System.Collections.Generic; using System.Linq; -using Dalamud.Data; -using Dalamud.Game; -using Dalamud.Game.ClientState; using Dalamud.Game.ClientState.Conditions; using Dalamud.Game.ClientState.Objects; using Dalamud.Game.ClientState.Objects.Types; using Dalamud.Game.Command; -using Dalamud.Game.Gui; using Dalamud.Interface.Windowing; -using Dalamud.Logging; using Dalamud.Plugin; +using Dalamud.Plugin.Services; using Deliveroo.External; using Deliveroo.GameData; using Deliveroo.Windows; using FFXIVClientStructs.FFXIV.Client.UI; using FFXIVClientStructs.FFXIV.Component.GUI; using Lumina.Excel.GeneratedSheets; -using Condition = Dalamud.Game.ClientState.Conditions.Condition; namespace Deliveroo; @@ -27,14 +22,15 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin private readonly WindowSystem _windowSystem = new(typeof(DeliverooPlugin).AssemblyQualifiedName); private readonly DalamudPluginInterface _pluginInterface; - private readonly ChatGui _chatGui; - private readonly GameGui _gameGui; - private readonly Framework _framework; - private readonly ClientState _clientState; - private readonly ObjectTable _objectTable; - private readonly TargetManager _targetManager; - private readonly Condition _condition; - private readonly CommandManager _commandManager; + private readonly IChatGui _chatGui; + private readonly IGameGui _gameGui; + private readonly IFramework _framework; + private readonly IClientState _clientState; + private readonly IObjectTable _objectTable; + private readonly ITargetManager _targetManager; + private readonly ICondition _condition; + private readonly ICommandManager _commandManager; + private readonly IPluginLog _pluginLog; // ReSharper disable once PrivateFieldCanBeConvertedToLocalVariable private readonly Configuration _configuration; @@ -53,9 +49,9 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin private List _itemsToPurchaseNow = new(); private (bool Saved, bool? PreviousState) _yesAlreadyState = (false, null); - public DeliverooPlugin(DalamudPluginInterface pluginInterface, ChatGui chatGui, GameGui gameGui, - Framework framework, ClientState clientState, ObjectTable objectTable, TargetManager targetManager, - DataManager dataManager, Condition condition, CommandManager commandManager) + public DeliverooPlugin(DalamudPluginInterface pluginInterface, IChatGui chatGui, IGameGui gameGui, + IFramework framework, IClientState clientState, IObjectTable objectTable, ITargetManager targetManager, + IDataManager dataManager, ICondition condition, ICommandManager commandManager, IPluginLog pluginLog) { _pluginInterface = pluginInterface; _chatGui = chatGui; @@ -66,12 +62,13 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin _targetManager = targetManager; _condition = condition; _commandManager = commandManager; + _pluginLog = pluginLog; - var dalamudReflector = new DalamudReflector(_pluginInterface, _framework); + var dalamudReflector = new DalamudReflector(_pluginInterface, _framework, _pluginLog); _yesAlreadyIpc = new YesAlreadyIpc(dalamudReflector); _configuration = (Configuration?)_pluginInterface.GetPluginConfig() ?? new Configuration(); _gcRewardsCache = new GcRewardsCache(dataManager); - _configWindow = new ConfigWindow(_pluginInterface, this, _configuration, _gcRewardsCache, _clientState); + _configWindow = new ConfigWindow(_pluginInterface, this, _configuration, _gcRewardsCache, _clientState, _pluginLog); _windowSystem.AddWindow(_configWindow); _turnInWindow = new TurnInWindow(this, _pluginInterface, _configuration, _gcRewardsCache, _configWindow); _windowSystem.AddWindow(_turnInWindow); @@ -89,7 +86,7 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin }); if (_clientState.IsLoggedIn) - Login(this, EventArgs.Empty); + Login(); if (_configuration.AddVentureIfNoItemToPurchaseSelected()) _pluginInterface.SavePluginConfig(_configuration); @@ -107,13 +104,13 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin { if (_currentStageInternal != value) { - PluginLog.Information($"Changing stage from {_currentStageInternal} to {value}"); + _pluginLog.Information($"Changing stage from {_currentStageInternal} to {value}"); _currentStageInternal = value; } } } - private void Login(object? sender, EventArgs e) + private void Login() { try { @@ -131,27 +128,27 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin CharacterConfiguration.Save(_pluginInterface); } - PluginLog.Information($"Loaded character-specific information for {_clientState.LocalContentId}"); + _pluginLog.Information($"Loaded character-specific information for {_clientState.LocalContentId}"); } else { - PluginLog.Verbose( + _pluginLog.Verbose( $"No character-specific information for {_clientState.LocalContentId}"); } } catch (Exception ex) { - PluginLog.Error(ex, "Unable to load character configuration"); + _pluginLog.Error(ex, "Unable to load character configuration"); CharacterConfiguration = null; } } - private void Logout(object? sender, EventArgs e) + private void Logout() { CharacterConfiguration = null; } - private unsafe void FrameworkUpdate(Framework f) + private unsafe void FrameworkUpdate(IFramework f) { _turnInWindow.Error = string.Empty; if (!_clientState.IsLoggedIn || @@ -191,12 +188,12 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin _itemsToPurchaseNow = _turnInWindow.SelectedItems; if (_itemsToPurchaseNow.Count > 0) { - PluginLog.Information("Items to purchase:"); + _pluginLog.Information("Items to purchase:"); foreach (var item in _itemsToPurchaseNow) - PluginLog.Information($" {item.Name} (limit = {item.EffectiveLimit})"); + _pluginLog.Information($" {item.Name} (limit = {item.EffectiveLimit})"); } else - PluginLog.Information("No items to purchase configured or available"); + _pluginLog.Information("No items to purchase configured or available"); var nextItem = GetNextItemToPurchase(); @@ -282,7 +279,7 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin break; default: - PluginLog.Warning($"Unknown stage {CurrentStage}"); + _pluginLog.Warning($"Unknown stage {CurrentStage}"); break; } } @@ -307,19 +304,19 @@ public sealed partial class DeliverooPlugin : IDalamudPlugin { if (_yesAlreadyState.Saved) { - PluginLog.Information("Not overwriting yesalready state"); + _pluginLog.Information("Not overwriting yesalready state"); return; } _yesAlreadyState = (true, _yesAlreadyIpc.DisableIfNecessary()); - PluginLog.Information($"Previous yesalready state: {_yesAlreadyState.PreviousState}"); + _pluginLog.Information($"Previous yesalready state: {_yesAlreadyState.PreviousState}"); } private void RestoreYesAlready() { if (_yesAlreadyState.Saved) { - PluginLog.Information($"Restoring previous yesalready state: {_yesAlreadyState.PreviousState}"); + _pluginLog.Information($"Restoring previous yesalready state: {_yesAlreadyState.PreviousState}"); if (_yesAlreadyState.PreviousState == true) _yesAlreadyIpc.Enable(); } diff --git a/Deliveroo/External/DalamudReflector.cs b/Deliveroo/External/DalamudReflector.cs index a147ff5..e1a0df2 100644 --- a/Deliveroo/External/DalamudReflector.cs +++ b/Deliveroo/External/DalamudReflector.cs @@ -6,6 +6,7 @@ using Dalamud.Plugin; using System; using System.Collections.Generic; using System.Reflection; +using Dalamud.Plugin.Services; namespace Deliveroo.External; @@ -17,14 +18,16 @@ namespace Deliveroo.External; internal sealed class DalamudReflector : IDisposable { private readonly DalamudPluginInterface _pluginInterface; - private readonly Framework _framework; + private readonly IFramework _framework; + private readonly IPluginLog _pluginLog; private readonly Dictionary _pluginCache = new(); private bool _pluginsChanged = false; - public DalamudReflector(DalamudPluginInterface pluginInterface, Framework framework) + public DalamudReflector(DalamudPluginInterface pluginInterface, IFramework framework, IPluginLog pluginLog) { _pluginInterface = pluginInterface; _framework = framework; + _pluginLog = pluginLog; var pm = GetPluginManager(); pm.GetType().GetEvent("OnInstalledPluginsChanged")!.AddEventHandler(pm, OnInstalledPluginsChanged); @@ -39,7 +42,7 @@ internal sealed class DalamudReflector : IDisposable pm.GetType().GetEvent("OnInstalledPluginsChanged")!.RemoveEventHandler(pm, OnInstalledPluginsChanged); } - private void FrameworkUpdate(Framework framework) + private void FrameworkUpdate(IFramework framework) { if (_pluginsChanged) { @@ -80,7 +83,7 @@ internal sealed class DalamudReflector : IDisposable .GetField("instance", BindingFlags.NonPublic | BindingFlags.Instance)!.GetValue(t); if (plugin == null) { - PluginLog.Warning($"[DalamudReflector] Found requested plugin {internalName} but it was null"); + _pluginLog.Warning($"[DalamudReflector] Found requested plugin {internalName} but it was null"); } else { @@ -98,7 +101,7 @@ internal sealed class DalamudReflector : IDisposable { if (!suppressErrors) { - PluginLog.Error(e, $"Can't find {internalName} plugin: {e.Message}"); + _pluginLog.Error(e, $"Can't find {internalName} plugin: {e.Message}"); } instance = null; @@ -108,7 +111,7 @@ internal sealed class DalamudReflector : IDisposable private void OnInstalledPluginsChanged() { - PluginLog.Verbose("Installed plugins changed event fired"); + _pluginLog.Verbose("Installed plugins changed event fired"); _pluginsChanged = true; } } diff --git a/Deliveroo/GameData/GcRewardsCache.cs b/Deliveroo/GameData/GcRewardsCache.cs index 591ea0f..714be45 100644 --- a/Deliveroo/GameData/GcRewardsCache.cs +++ b/Deliveroo/GameData/GcRewardsCache.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; using System.Linq; -using Dalamud.Data; +using Dalamud.Plugin.Services; using Lumina.Excel.GeneratedSheets; using GrandCompany = FFXIVClientStructs.FFXIV.Client.UI.Agent.GrandCompany; @@ -8,7 +8,7 @@ namespace Deliveroo.GameData; internal sealed class GcRewardsCache { - public GcRewardsCache(DataManager dataManager) + public GcRewardsCache(IDataManager dataManager) { var categories = dataManager.GetExcelSheet()! .Where(x => x.RowId > 0) diff --git a/Deliveroo/Windows/ConfigWindow.cs b/Deliveroo/Windows/ConfigWindow.cs index 1029edb..dd729c4 100644 --- a/Deliveroo/Windows/ConfigWindow.cs +++ b/Deliveroo/Windows/ConfigWindow.cs @@ -2,12 +2,12 @@ using System.Collections.Generic; using System.Linq; using System.Numerics; -using Dalamud.Game.ClientState; using Dalamud.Interface; using Dalamud.Interface.Components; +using Dalamud.Interface.Utility; using Dalamud.Interface.Windowing; -using Dalamud.Logging; using Dalamud.Plugin; +using Dalamud.Plugin.Services; using Deliveroo.GameData; using FFXIVClientStructs.FFXIV.Client.UI.Agent; using ImGuiNET; @@ -20,13 +20,14 @@ internal sealed class ConfigWindow : Window private readonly DeliverooPlugin _plugin; private readonly Configuration _configuration; private readonly GcRewardsCache _gcRewardsCache; - private readonly ClientState _clientState; + private readonly IClientState _clientState; + private readonly IPluginLog _pluginLog; private readonly Dictionary _itemLookup; private uint _dragDropSource = 0; public ConfigWindow(DalamudPluginInterface pluginInterface, DeliverooPlugin plugin, Configuration configuration, - GcRewardsCache gcRewardsCache, ClientState clientState) + GcRewardsCache gcRewardsCache, IClientState clientState, IPluginLog pluginLog) : base("Deliveroo - Configuration###DeliverooConfig") { _pluginInterface = pluginInterface; @@ -34,6 +35,7 @@ internal sealed class ConfigWindow : Window _configuration = configuration; _gcRewardsCache = gcRewardsCache; _clientState = clientState; + _pluginLog = pluginLog; _itemLookup = _gcRewardsCache.Rewards.Values .SelectMany(x => x) @@ -251,7 +253,7 @@ internal sealed class ConfigWindow : Window CachedWorldName = currentWorldName, }; _plugin.CharacterConfiguration.Save(_pluginInterface); - PluginLog.Information( + _pluginLog.Information( $"Created character-specific configuration for {_clientState.LocalContentId}"); } } diff --git a/Deliveroo/Windows/TurnInWindow.cs b/Deliveroo/Windows/TurnInWindow.cs index a7a568d..cb6f4ef 100644 --- a/Deliveroo/Windows/TurnInWindow.cs +++ b/Deliveroo/Windows/TurnInWindow.cs @@ -5,6 +5,7 @@ using System.Numerics; using Dalamud.Interface; using Dalamud.Interface.Colors; using Dalamud.Interface.Components; +using Dalamud.Interface.Utility; using Dalamud.Interface.Windowing; using Dalamud.Plugin; using Deliveroo.GameData; diff --git a/Deliveroo/packages.lock.json b/Deliveroo/packages.lock.json index 467f0f2..6cf1c73 100644 --- a/Deliveroo/packages.lock.json +++ b/Deliveroo/packages.lock.json @@ -4,9 +4,9 @@ "net7.0-windows7.0": { "DalamudPackager": { "type": "Direct", - "requested": "[2.1.11, )", - "resolved": "2.1.11", - "contentHash": "9qlAWoRRTiL/geAvuwR/g6Bcbrd/bJJgVnB/RurBiyKs6srsP0bvpoo8IK+Eg8EA6jWeM6/YJWs66w4FIAzqPw==" + "requested": "[2.1.12, )", + "resolved": "2.1.12", + "contentHash": "Sc0PVxvgg4NQjcI8n10/VfUQBAS4O+Fw2pZrAqBdRMbthYGeogzu5+xmIGCGmsEZ/ukMOBuAqiNiB5qA3MRalg==" } } }