Some updates.

This commit is contained in:
Ottermandias 2024-07-02 17:08:27 +02:00
parent c2e74ed382
commit 221b18751d
121 changed files with 338 additions and 328 deletions

View file

@ -1,5 +1,5 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Plugin.Services;
using ImGuiNET;
using OtterGui;

View file

@ -1,4 +1,4 @@
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using ImGuiNET;
using OtterGui;
using OtterGui.Classes;

View file

@ -1,5 +1,5 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
using ImGuiNET;
using Newtonsoft.Json.Linq;

View file

@ -287,7 +287,7 @@ public partial class ModEditWindow
{
fixed (ushort* v2 = &v)
{
return ImGui.InputScalar(label, ImGuiDataType.U16, (nint)v2, IntPtr.Zero, IntPtr.Zero, "%04X", flags);
return ImGui.InputScalar(label, ImGuiDataType.U16, (nint)v2, nint.Zero, nint.Zero, "%04X", flags);
}
}

View file

@ -1,5 +1,5 @@
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface;
using Dalamud.Interface.ImGuiNotification;
using ImGuiNET;
using Lumina.Misc;
using OtterGui.Raii;

View file

@ -1,5 +1,6 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal;
using Dalamud.Interface.Textures;
using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Plugin.Services;
using Dalamud.Utility;
using FFXIVClientStructs.FFXIV.Client.Graphics.Scene;
@ -121,7 +122,7 @@ public class ChangedItemDrawer : IDisposable, IUiService
public static Vector2 TypeFilterIconSize
=> new(2 * ImGui.GetTextLineHeight());
public ChangedItemDrawer(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider, CommunicatorService communicator,
public ChangedItemDrawer(IUiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider, CommunicatorService communicator,
Configuration config)
{
_items = gameData.GetExcelSheet<Item>()!;
@ -417,7 +418,7 @@ public class ChangedItemDrawer : IDisposable, IUiService
};
/// <summary> Initialize the icons. </summary>
private bool CreateEquipSlotIcons(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider)
private bool CreateEquipSlotIcons(IUiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider)
{
using var equipTypeIcons = uiBuilder.LoadUld("ui/uld/ArmouryBoard.uld");
@ -441,20 +442,20 @@ public class ChangedItemDrawer : IDisposable, IUiService
Add(ChangedItemIcon.Neck, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 9));
Add(ChangedItemIcon.Wrists, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 10));
Add(ChangedItemIcon.Finger, equipTypeIcons.LoadTexturePart("ui/uld/ArmouryBoard_hr1.tex", 11));
Add(ChangedItemIcon.Monster, textureProvider.GetTextureFromGame("ui/icon/062000/062042_hr1.tex", true));
Add(ChangedItemIcon.Demihuman, textureProvider.GetTextureFromGame("ui/icon/062000/062041_hr1.tex", true));
Add(ChangedItemIcon.Customization, textureProvider.GetTextureFromGame("ui/icon/062000/062043_hr1.tex", true));
Add(ChangedItemIcon.Action, textureProvider.GetTextureFromGame("ui/icon/062000/062001_hr1.tex", true));
Add(ChangedItemIcon.Emote, LoadEmoteTexture(gameData, uiBuilder));
Add(ChangedItemIcon.Unknown, LoadUnknownTexture(gameData, uiBuilder));
Add(AllFlags, textureProvider.GetTextureFromGame("ui/icon/114000/114052_hr1.tex", true));
Add(ChangedItemIcon.Monster, textureProvider.CreateFromTexFile(gameData.GetFile<TexFile>("ui/icon/062000/062042_hr1.tex")!));
Add(ChangedItemIcon.Demihuman, textureProvider.CreateFromTexFile(gameData.GetFile<TexFile>("ui/icon/062000/062041_hr1.tex")!));
Add(ChangedItemIcon.Customization, textureProvider.CreateFromTexFile(gameData.GetFile<TexFile>("ui/icon/062000/062043_hr1.tex")!));
Add(ChangedItemIcon.Action, textureProvider.CreateFromTexFile(gameData.GetFile<TexFile>("ui/icon/062000/062001_hr1.tex")!));
Add(ChangedItemIcon.Emote, LoadEmoteTexture(gameData, textureProvider));
Add(ChangedItemIcon.Unknown, LoadUnknownTexture(gameData, textureProvider));
Add(AllFlags, textureProvider.CreateFromTexFile(gameData.GetFile<TexFile>("ui/icon/114000/114052_hr1.tex")!));
_smallestIconWidth = _icons.Values.Min(i => i.Width);
return true;
}
private static unsafe IDalamudTextureWrap? LoadUnknownTexture(IDataManager gameData, UiBuilder uiBuilder)
private static unsafe IDalamudTextureWrap? LoadUnknownTexture(IDataManager gameData, ITextureProvider textureProvider)
{
var unk = gameData.GetFile<TexFile>("ui/uld/levelup2_hr1.tex");
if (unk == null)
@ -466,10 +467,10 @@ public class ChangedItemDrawer : IDisposable, IUiService
for (var y = 0; y < unk.Header.Height; ++y)
image.AsSpan(4 * y * unk.Header.Width, 4 * unk.Header.Width).CopyTo(bytes.AsSpan(4 * y * unk.Header.Height + diff));
return uiBuilder.LoadImageRaw(bytes, unk.Header.Height, unk.Header.Height, 4);
return textureProvider.CreateFromRaw(RawImageSpecification.Rgba32(unk.Header.Height, unk.Header.Height), bytes, "Penumbra.UnkItemIcon");
}
private static unsafe IDalamudTextureWrap? LoadEmoteTexture(IDataManager gameData, UiBuilder uiBuilder)
private static unsafe IDalamudTextureWrap? LoadEmoteTexture(IDataManager gameData, ITextureProvider textureProvider)
{
var emote = gameData.GetFile<TexFile>("ui/icon/000000/000019_hr1.tex");
if (emote == null)
@ -486,6 +487,6 @@ public class ChangedItemDrawer : IDisposable, IUiService
}
}
return uiBuilder.LoadImageRaw(image2, emote.Header.Width, emote.Header.Height, 4);
return textureProvider.CreateFromRaw(RawImageSpecification.Rgba32(emote.Header.Width, emote.Header.Height), image2, "Penumbra.EmoteItemIcon");
}
}

View file

@ -2,7 +2,7 @@ using Dalamud.Game.ClientState.Objects;
using Dalamud.Interface;
using Dalamud.Interface.Components;
using Dalamud.Interface.GameFonts;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.ManagedFontAtlas;
using Dalamud.Interface.Utility;
using Dalamud.Plugin;
@ -21,7 +21,7 @@ using Penumbra.UI.Classes;
namespace Penumbra.UI.CollectionTab;
public sealed class CollectionPanel(
DalamudPluginInterface pi,
IDalamudPluginInterface pi,
CommunicatorService communicator,
CollectionManager manager,
CollectionSelector selector,
@ -318,7 +318,7 @@ public sealed class CollectionPanel(
var button = ImGui.Button(text, width) || ImGui.IsItemClicked(ImGuiMouseButton.Right);
var hovered = redundancy.Length > 0 && ImGui.IsItemHovered();
DrawIndividualDragSource(text, id);
DrawIndividualDragTarget(text, id);
DrawIndividualDragTarget(id);
if (!invalid)
{
selector.DragTargetAssignment(type, id);
@ -349,7 +349,7 @@ public sealed class CollectionPanel(
_draggedIndividualAssignment = _active.Individuals.Index(id);
}
private void DrawIndividualDragTarget(string text, ActorIdentifier id)
private void DrawIndividualDragTarget(ActorIdentifier id)
{
if (!id.IsValid)
return;

View file

@ -16,7 +16,7 @@ namespace Penumbra.UI;
public sealed class ConfigWindow : Window, IUiService
{
private readonly DalamudPluginInterface _pluginInterface;
private readonly IDalamudPluginInterface _pluginInterface;
private readonly Configuration _config;
private readonly PerformanceTracker _tracker;
private readonly ValidityChecker _validityChecker;
@ -24,7 +24,7 @@ public sealed class ConfigWindow : Window, IUiService
private ConfigTabBar _configTabs = null!;
private string? _lastException;
public ConfigWindow(PerformanceTracker tracker, DalamudPluginInterface pi, Configuration config, ValidityChecker checker,
public ConfigWindow(PerformanceTracker tracker, IDalamudPluginInterface pi, Configuration config, ValidityChecker checker,
TutorialService tutorial)
: base(GetLabel(checker))
{

View file

@ -1,5 +1,5 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal;
using Dalamud.Interface.Textures.TextureWraps;
using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using OtterGui.Services;
@ -13,23 +13,25 @@ namespace Penumbra.UI;
public class LaunchButton : IDisposable, IUiService
{
private readonly ConfigWindow _configWindow;
private readonly UiBuilder _uiBuilder;
private readonly IUiBuilder _uiBuilder;
private readonly ITitleScreenMenu _title;
private readonly string _fileName;
private readonly ITextureProvider _textureProvider;
private IDalamudTextureWrap? _icon;
private TitleScreenMenuEntry? _entry;
private IDalamudTextureWrap? _icon;
private IReadOnlyTitleScreenMenuEntry? _entry;
/// <summary>
/// Register the launch button to be created on the next draw event.
/// </summary>
public LaunchButton(DalamudPluginInterface pi, ITitleScreenMenu title, ConfigWindow ui)
public LaunchButton(IDalamudPluginInterface pi, ITitleScreenMenu title, ConfigWindow ui, ITextureProvider textureProvider)
{
_uiBuilder = pi.UiBuilder;
_configWindow = ui;
_title = title;
_icon = null;
_entry = null;
_uiBuilder = pi.UiBuilder;
_configWindow = ui;
_textureProvider = textureProvider;
_title = title;
_icon = null;
_entry = null;
_fileName = Path.Combine(pi.AssemblyLocation.DirectoryName!, "tsmLogo.png");
_uiBuilder.Draw += CreateEntry;
@ -49,7 +51,8 @@ public class LaunchButton : IDisposable, IUiService
{
try
{
_icon = _uiBuilder.LoadImage(_fileName);
// TODO: update when API updated.
_icon = _textureProvider.GetFromFile(_fileName).RentAsync().Result;
if (_icon != null)
_entry = _title.AddEntry("Manage Penumbra", _icon, OnTriggered);

View file

@ -1,5 +1,5 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using ImGuiNET;
using OtterGui;
using OtterGui.Classes;

View file

@ -1,6 +1,6 @@
using Dalamud.Interface;
using Dalamud.Interface.DragDrop;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Plugin.Services;
using ImGuiNET;
using OtterGui;

View file

@ -17,7 +17,7 @@ public class ModPanel : IDisposable, IUiService
private readonly ModPanelTabBar _tabs;
private bool _resetCursor;
public ModPanel(DalamudPluginInterface pi, ModFileSystemSelector selector, ModEditWindow editWindow, ModPanelTabBar tabs,
public ModPanel(IDalamudPluginInterface pi, ModFileSystemSelector selector, ModEditWindow editWindow, ModPanelTabBar tabs,
MultiModPanel multiModPanel, CommunicatorService communicator)
{
_selector = selector;

View file

@ -1,6 +1,6 @@
using Dalamud.Interface;
using Dalamud.Interface.Components;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using ImGuiNET;
using OtterGui;
using OtterGui.Raii;

View file

@ -20,7 +20,7 @@ public class ModPanelHeader : IDisposable
private readonly CommunicatorService _communicator;
private float _lastPreSettingsHeight = 0;
public ModPanelHeader(DalamudPluginInterface pi, CommunicatorService communicator)
public ModPanelHeader(IDalamudPluginInterface pi, CommunicatorService communicator)
{
_communicator = communicator;
_nameFont = pi.UiBuilder.FontAtlas.NewGameFontHandle(new GameFontStyle(GameFontFamilyAndSize.Jupiter23));

View file

@ -1,5 +1,5 @@
using Dalamud.Interface;
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using ImGuiNET;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

View file

@ -271,7 +271,7 @@ public sealed class ResourceWatcher : IDisposable, ITab, IUiService
public unsafe string Name(ResolveData resolve, string none = "")
{
if (resolve.AssociatedGameObject == IntPtr.Zero || !_actors.Awaiter.IsCompletedSuccessfully)
if (resolve.AssociatedGameObject == nint.Zero || !_actors.Awaiter.IsCompletedSuccessfully)
return none;
try

View file

@ -38,7 +38,7 @@ public sealed class CollectionsTab : IDisposable, ITab, IUiService
}
}
public CollectionsTab(DalamudPluginInterface pi, Configuration configuration, CommunicatorService communicator, IncognitoService incognito,
public CollectionsTab(IDalamudPluginInterface pi, Configuration configuration, CommunicatorService communicator, IncognitoService incognito,
CollectionManager collectionManager, ModStorage modStorage, ActorManager actors, ITargetManager targets, TutorialService tutorial, SaveService saveService)
{
_config = configuration.Ephemeral;

View file

@ -37,7 +37,6 @@ using Penumbra.Util;
using static OtterGui.Raii.ImRaii;
using CharacterBase = FFXIVClientStructs.FFXIV.Client.Graphics.Scene.CharacterBase;
using CharacterUtility = Penumbra.Interop.Services.CharacterUtility;
using ObjectKind = Dalamud.Game.ClientState.Objects.Enums.ObjectKind;
using ResidentResourceManager = Penumbra.Interop.Services.ResidentResourceManager;
using ImGuiClip = OtterGui.ImGuiClip;
using Penumbra.Api.IpcTester;
@ -437,8 +436,8 @@ public class DebugTab : Window, ITab, IUiService
: $"0x{(nint)((Character*)obj.Address)->GameObject.GetDrawObject():X}");
var identifier = _actors.FromObject(obj, out _, false, true, false);
ImGuiUtil.DrawTableColumn(_actors.ToString(identifier));
var id = obj.AsObject->ObjectKind == (byte)ObjectKind.BattleNpc
? $"{identifier.DataId} | {obj.AsObject->DataID}"
var id = obj.AsObject->ObjectKind is ObjectKind.BattleNpc
? $"{identifier.DataId} | {obj.AsObject->BaseId}"
: identifier.DataId.ToString();
ImGuiUtil.DrawTableColumn(id);
}
@ -587,11 +586,11 @@ public class DebugTab : Window, ITab, IUiService
if (table)
{
ImGuiUtil.DrawTableColumn("Group Members");
ImGuiUtil.DrawTableColumn(GroupManager.Instance()->MemberCount.ToString());
ImGuiUtil.DrawTableColumn(GroupManager.Instance()->MainGroup.MemberCount.ToString());
for (var i = 0; i < 8; ++i)
{
ImGuiUtil.DrawTableColumn($"Member #{i}");
var member = GroupManager.Instance()->GetPartyMemberByIndex(i);
var member = GroupManager.Instance()->MainGroup.GetPartyMemberByIndex(i);
ImGuiUtil.DrawTableColumn(member == null ? "NULL" : new ByteString(member->Name).ToString());
}
}
@ -612,7 +611,7 @@ public class DebugTab : Window, ITab, IUiService
if (table)
for (var i = 0; i < 8; ++i)
{
ref var c = ref agent->Data->CharacterArraySpan[i];
ref var c = ref agent->Data->Characters[i];
ImGuiUtil.DrawTableColumn($"Character {i}");
var name = c.Name1.ToString();
ImGuiUtil.DrawTableColumn(name.Length == 0 ? "NULL" : $"{name} ({c.WorldId})");

View file

@ -5,7 +5,7 @@ using OtterGui.Raii;
using Penumbra.UI.Classes;
using Dalamud.Interface;
using Dalamud.Plugin.Services;
using FFXIVClientStructs.FFXIV.Client.Game.Housing;
using FFXIVClientStructs.FFXIV.Client.Game;
using OtterGui.Services;
using OtterGui.Widgets;
using Penumbra.Api.Enums;

View file

@ -121,7 +121,7 @@ public class ResourceTab(Configuration config, ResourceManagerService resourceMa
}
/// <summary> Obtain a label for an extension node. </summary>
private static string GetNodeLabel(uint label, uint type, ulong count)
private static string GetNodeLabel(uint label, uint type, int count)
{
var (lowest, mid1, mid2, highest) = Functions.SplitBytes(type);
return highest == 0

View file

@ -41,7 +41,7 @@ public class SettingsTab : ITab, IUiService
private readonly DalamudSubstitutionProvider _dalamudSubstitutionProvider;
private readonly FileCompactor _compactor;
private readonly DalamudConfigService _dalamudConfig;
private readonly DalamudPluginInterface _pluginInterface;
private readonly IDalamudPluginInterface _pluginInterface;
private readonly IDataManager _gameData;
private readonly PredefinedTagManager _predefinedTagManager;
private readonly CrashHandlerService _crashService;
@ -51,7 +51,7 @@ public class SettingsTab : ITab, IUiService
private readonly TagButtons _sharedTags = new();
public SettingsTab(DalamudPluginInterface pluginInterface, Configuration config, FontReloader fontReloader, TutorialService tutorial,
public SettingsTab(IDalamudPluginInterface pluginInterface, Configuration config, FontReloader fontReloader, TutorialService tutorial,
Penumbra penumbra, FileDialogService fileDialog, ModManager modManager, ModFileSystemSelector selector,
CharacterUtility characterUtility, ResidentResourceManager residentResources, ModExportManager modExportManager, HttpApi httpApi,
DalamudSubstitutionProvider dalamudSubstitutionProvider, FileCompactor compactor, DalamudConfigService dalamudConfig,

View file

@ -1,4 +1,4 @@
using Dalamud.Interface.Internal.Notifications;
using Dalamud.Interface.ImGuiNotification;
using Dalamud.Interface.Utility;
using ImGuiNET;
using OtterGui;

View file

@ -9,13 +9,13 @@ namespace Penumbra.UI;
public class PenumbraWindowSystem : IDisposable, IUiService
{
private readonly UiBuilder _uiBuilder;
private readonly IUiBuilder _uiBuilder;
private readonly WindowSystem _windowSystem;
private readonly FileDialogService _fileDialog;
public readonly ConfigWindow Window;
public readonly PenumbraChangelog Changelog;
public PenumbraWindowSystem(DalamudPluginInterface pi, Configuration config, PenumbraChangelog changelog, ConfigWindow window,
public PenumbraWindowSystem(IDalamudPluginInterface pi, Configuration config, PenumbraChangelog changelog, ConfigWindow window,
LaunchButton _, ModEditWindow editWindow, FileDialogService fileDialog, ImportPopup importPopup, DebugTab debugTab)
{
_uiBuilder = pi.UiBuilder;