This commit is contained in:
2025-08-09 12:43:58 +03:00
parent 5bec99dd48
commit 28fa041cba
31 changed files with 90 additions and 50 deletions

View File

@@ -19,7 +19,7 @@ public sealed class ReverseSearchDictBNpc(IDalamudPluginInterface pluginInterfac
var sheet = gameData.GetExcelSheet<BNpcName>(gameData.Language)!; var sheet = gameData.GetExcelSheet<BNpcName>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count); var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var n in sheet.Where(n => n.Singular.ByteLength > 0)) foreach (var n in sheet.Where(n => n.Singular.ByteLength > 0))
dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, n.Article), n.RowId); dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, (Dalamud.Game.ClientLanguage)n.Article), n.RowId);
return dict.ToFrozenDictionary(); return dict.ToFrozenDictionary();
} }

View File

@@ -19,7 +19,7 @@ public sealed class ReverseSearchDictCompanion(IDalamudPluginInterface pluginInt
var sheet = gameData.GetExcelSheet<Companion>(gameData.Language)!; var sheet = gameData.GetExcelSheet<Companion>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count); var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var c in sheet.Where(c => c.Singular.ByteLength > 0 && c.Order < ushort.MaxValue)) foreach (var c in sheet.Where(c => c.Singular.ByteLength > 0 && c.Order < ushort.MaxValue))
dict.TryAdd(DataUtility.ToTitleCaseExtended(c.Singular, c.Article), c.RowId); dict.TryAdd(DataUtility.ToTitleCaseExtended(c.Singular, (Dalamud.Game.ClientLanguage)c.Article), c.RowId);
return dict.ToFrozenDictionary(); return dict.ToFrozenDictionary();
} }

View File

@@ -19,7 +19,7 @@ public sealed class ReverseSearchDictENpc(IDalamudPluginInterface pluginInterfac
var sheet = gameData.GetExcelSheet<ENpcResident>(gameData.Language)!; var sheet = gameData.GetExcelSheet<ENpcResident>(gameData.Language)!;
var dict = new Dictionary<string, uint>((int)sheet.Count); var dict = new Dictionary<string, uint>((int)sheet.Count);
foreach (var n in sheet.Where(e => e.Singular.ByteLength > 0)) foreach (var n in sheet.Where(e => e.Singular.ByteLength > 0))
dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, n.Article), n.RowId); dict.TryAdd(DataUtility.ToTitleCaseExtended(n.Singular, (Dalamud.Game.ClientLanguage)n.Article), n.RowId);
return dict.ToFrozenDictionary(); return dict.ToFrozenDictionary();
} }

View File

@@ -29,7 +29,7 @@ public sealed class ReverseSearchDictMount(IDalamudPluginInterface pluginInterfa
{ {
if (m.Singular.ByteLength > 0 && m.Order >= 0) if (m.Singular.ByteLength > 0 && m.Order >= 0)
{ {
dict.TryAdd(DataUtility.ToTitleCaseExtended(m.Singular, m.Article), m.RowId); dict.TryAdd(DataUtility.ToTitleCaseExtended(m.Singular, (Dalamud.Game.ClientLanguage)m.Article), m.RowId);
} }
else if (m.Unknown1.ByteLength > 0) else if (m.Unknown1.ByteLength > 0)
{ {

View File

@@ -1,7 +1,7 @@
using System; using System;
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Utility; using Dalamud.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace CustomizePlus.Core.Helpers; namespace CustomizePlus.Core.Helpers;
@@ -66,8 +66,8 @@ public static class CtrlHelper
} }
public static bool ArrowToggle(string label, ref bool value) public static bool ArrowToggle(string label, ref bool value)
{ {//ImGuiNative.ArrowButton(label, value ? ImGuiDir.Down : ImGuiDir.Right);
var toggled = ImGui.ArrowButton(label, value ? ImGuiDir.Down : ImGuiDir.Right); var toggled = false;
if (toggled) if (toggled)
{ {

View File

@@ -25,6 +25,7 @@ using CustomizePlus.UI.Windows.MainWindow.Tabs.Debug;
using CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles; using CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles;
using CustomizePlus.UI.Windows.MainWindow.Tabs.Templates; using CustomizePlus.UI.Windows.MainWindow.Tabs.Templates;
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Services;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Log; using OtterGui.Log;
@@ -58,10 +59,10 @@ public static class ServiceManagerBuilder
.AddApi(); .AddApi();
DalamudServices.AddServices(services, pi); DalamudServices.AddServices(services, pi);
services.AddDalamudService<ISeStringEvaluator>(pi);
services.AddIServices(typeof(EquipItem).Assembly); services.AddIServices(typeof(EquipItem).Assembly);
services.AddIServices(typeof(Plugin).Assembly); services.AddIServices(typeof(Plugin).Assembly);
services.AddIServices(typeof(CutsceneService).Assembly); services.AddIServices(typeof(CutsceneService).Assembly);
services.AddIServices(typeof(ImRaii).Assembly); services.AddIServices(typeof(ImRaii).Assembly);
services.CreateProvider(); services.CreateProvider();

View File

@@ -92,25 +92,25 @@ public class HookingService : IDisposable
_logger.Debug("Render hook established"); _logger.Debug("Render hook established");
} }
if (_gameObjectMovementHook == null) /*if (_gameObjectMovementHook == null)
{ {
var movementAddress = _sigScanner.ScanText(Constants.MovementHookAddress); var movementAddress = _sigScanner.ScanText(Constants.MovementHookAddress);
_gameObjectMovementHook = _hooker.HookFromAddress<GameObjectMovementDelegate>(movementAddress, OnGameObjectMove); _gameObjectMovementHook = _hooker.HookFromAddress<GameObjectMovementDelegate>(movementAddress, OnGameObjectMove);
_logger.Debug("Movement hook established"); _logger.Debug("Movement hook established");
} }*/
_logger.Debug("Hooking render manager"); _logger.Debug("Hooking render manager");
_renderManagerHook.Enable(); _renderManagerHook.Enable();
_logger.Debug("Hooking movement functions"); // _logger.Debug("Hooking movement functions");
_gameObjectMovementHook.Enable(); // _gameObjectMovementHook.Enable();
} }
else else
{ {
_logger.Debug("Unhooking..."); _logger.Debug("Unhooking...");
_renderManagerHook?.Disable(); _renderManagerHook?.Disable();
_gameObjectMovementHook?.Disable(); // _gameObjectMovementHook?.Disable();
} }
} }
catch (Exception e) catch (Exception e)

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Dalamud.NET.Sdk/12.0.2"> <Project Sdk="Dalamud.NET.Sdk/13.0.0">
<PropertyGroup> <PropertyGroup>
<AssemblyTitle>CustomizePlus</AssemblyTitle> <AssemblyTitle>CustomizePlus</AssemblyTitle>
<Version>2.0.0.0</Version> <Version>2.0.0.1</Version>
<Description>Customize+</Description> <Description>Customize+</Description>
<Copyright></Copyright> <Copyright></Copyright>
<PackageProjectUrl>https://github.com/Aether-Tools/CustomizePlus</PackageProjectUrl> <PackageProjectUrl>https://github.com/Aether-Tools/CustomizePlus</PackageProjectUrl>
@@ -36,6 +36,10 @@
<ProjectReference Include="..\CustomizePlus.GameData\CustomizePlus.GameData.csproj" /> <ProjectReference Include="..\CustomizePlus.GameData\CustomizePlus.GameData.csproj" />
<ProjectReference Include="..\submodules\ECommonsLite\ECommonsLite\ECommonsLite.csproj" /> <ProjectReference Include="..\submodules\ECommonsLite\ECommonsLite\ECommonsLite.csproj" />
<ProjectReference Include="..\submodules\OtterGui\OtterGui.csproj" /> <ProjectReference Include="..\submodules\OtterGui\OtterGui.csproj" />
<Reference Include="Dalamud.Bindings.ImGui">
<Private>false</Private>
<HintPath>$(DalamudLibPath)\Dalamud.Bindings.ImGui.dll</HintPath>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
@@ -44,6 +48,10 @@
</None> </None>
</ItemGroup> </ItemGroup>
<ItemGroup>
<PackageReference Update="DalamudPackager" Version="13.0.0" />
</ItemGroup>
<!--<PropertyGroup Condition="'$(Configuration)'=='Debug'"> <!--<PropertyGroup Condition="'$(Configuration)'=='Debug'">
<DefineConstants>INCOGNIFY_STRINGS</DefineConstants> <DefineConstants>INCOGNIFY_STRINGS</DefineConstants>
</PropertyGroup>--> </PropertyGroup>-->

View File

@@ -5,9 +5,9 @@
"Description": "A plugin that allows you to customize your character beyond FFXIV limitations by directly editing bone parameters.", "Description": "A plugin that allows you to customize your character beyond FFXIV limitations by directly editing bone parameters.",
"InternalName": "CustomizePlus", "InternalName": "CustomizePlus",
"ApplicableVersion": "any", "ApplicableVersion": "any",
"AssemblyVersion": "2.0.0.0", "AssemblyVersion": "2.0.0.1",
"DalamudApiLevel": 12, "DalamudApiLevel": 13,
"TestingDalamudApiLevel": 12, "TestingDalamudApiLevel": 13,
"Tags": [ "Tags": [
"Anamnesis", "Anamnesis",
"Customization", "Customization",

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;

View File

@@ -2,7 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using Dalamud.Game.ClientState.Objects.Enums; using Dalamud.Game.ClientState.Objects.Enums;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui.Custom; using OtterGui.Custom;
using Penumbra.GameData.Actors; using Penumbra.GameData.Actors;
using Penumbra.GameData.DataContainers; using Penumbra.GameData.DataContainers;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface; using Dalamud.Interface;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using System.Numerics; using System.Numerics;
using CustomizePlus.Core.Services; using CustomizePlus.Core.Services;
using CustomizePlus.Game.Services; using CustomizePlus.Game.Services;

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Log; using OtterGui.Log;
using OtterGui.Widgets; using OtterGui.Widgets;
@@ -14,6 +14,7 @@ using CustomizePlus.Profiles;
using CustomizePlus.Profiles.Data; using CustomizePlus.Profiles.Data;
using CustomizePlus.Templates.Events; using CustomizePlus.Templates.Events;
using CustomizePlus.Templates.Data; using CustomizePlus.Templates.Data;
using OtterGui.Extensions;
namespace CustomizePlus.UI.Windows.Controls; namespace CustomizePlus.UI.Windows.Controls;
@@ -51,7 +52,7 @@ public abstract class TemplateComboBase : FilterComboCache<Tuple<Template, strin
if (path.Length > 0 && design.Name != path) if (path.Length > 0 && design.Name != path)
{ {
var start = ImGui.GetItemRectMin(); var start = ImGui.GetItemRectMin();
var pos = start.X + ImGui.CalcTextSize(design.Name).X; var pos = start.X + ImGui.CalcTextSize((Dalamud.Bindings.ImGui.ImU8String)design.Name).X;
var maxSize = ImGui.GetWindowPos().X + ImGui.GetWindowContentRegionMax().X; var maxSize = ImGui.GetWindowPos().X + ImGui.GetWindowContentRegionMax().X;
var remainingSpace = maxSize - pos; var remainingSpace = maxSize - pos;
var requiredSize = ImGui.CalcTextSize(path).X + ImGui.GetStyle().ItemInnerSpacing.X; var requiredSize = ImGui.CalcTextSize(path).X + ImGui.GetStyle().ItemInnerSpacing.X;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface.Windowing; using Dalamud.Interface.Windowing;
using Dalamud.Plugin; using Dalamud.Plugin;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui.Raii; using OtterGui.Raii;
using System; using System;
using System.Numerics; using System.Numerics;

View File

@@ -2,7 +2,7 @@
using Dalamud.Plugin; using Dalamud.Plugin;
using Dalamud.Plugin.Ipc; using Dalamud.Plugin.Ipc;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using Newtonsoft.Json; using Newtonsoft.Json;
using OtterGui.Raii; using OtterGui.Raii;
using System.Linq; using System.Linq;

View File

@@ -1,4 +1,4 @@
using ImGuiNET; using Dalamud.Bindings.ImGui;
using System.Linq; using System.Linq;
using System; using System;
using CustomizePlus.Armatures.Data; using CustomizePlus.Armatures.Data;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using Dalamud.Interface; using Dalamud.Interface;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui; using OtterGui;
using System; using System;
using System.Linq; using System.Linq;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.FileSystem.Selector; using OtterGui.FileSystem.Selector;
using OtterGui.Filesystem; using OtterGui.Filesystem;
@@ -18,6 +18,7 @@ using CustomizePlus.Game.Services;
using CustomizePlus.Profiles.Events; using CustomizePlus.Profiles.Events;
using CustomizePlus.GameData.Extensions; using CustomizePlus.GameData.Extensions;
using System.Linq; using System.Linq;
using OtterGui.Text;
namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles; namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles;
@@ -47,6 +48,20 @@ public class ProfileFileSystemSelector : FileSystemSelector<Profile, ProfileStat
public ColorId Color; public ColorId Color;
} }
protected override float MinimumAbsoluteRemainder
=> 670 * ImUtf8.GlobalScale;
protected override void SetSize(Vector2 size)
{
base.SetSize(size);
var adaptedSize = MathF.Round(size.X / ImUtf8.GlobalScale);
}
public ProfileFileSystemSelector( public ProfileFileSystemSelector(
ProfileFileSystem fileSystem, ProfileFileSystem fileSystem,
IKeyState keyState, IKeyState keyState,

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui; using OtterGui;
using OtterGui.Raii; using OtterGui.Raii;
using System; using System;
@@ -19,6 +19,8 @@ using static FFXIVClientStructs.FFXIV.Client.LayoutEngine.ILayoutInstance;
using CustomizePlus.GameData.Extensions; using CustomizePlus.GameData.Extensions;
using CustomizePlus.Core.Extensions; using CustomizePlus.Core.Extensions;
using Dalamud.Interface.Components; using Dalamud.Interface.Components;
using OtterGui.Extensions;
using OtterGui.Text;
namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles; namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles;
@@ -66,7 +68,7 @@ public class ProfilePanel
public void Draw() public void Draw()
{ {
using var group = ImRaii.Group(); using var group = ImUtf8.Group();
if (_selector.SelectedPaths.Count > 1) if (_selector.SelectedPaths.Count > 1)
{ {
DrawMultiSelection(); DrawMultiSelection();
@@ -192,7 +194,7 @@ public class ProfilePanel
{ {
using (var table = ImRaii.Table("BasicSettings", 2)) using (var table = ImRaii.Table("BasicSettings", 2))
{ {
ImGui.TableSetupColumn("BasicCol1", ImGuiTableColumnFlags.WidthFixed, ImGui.CalcTextSize("lorem ipsum dolor").X); ImGui.TableSetupColumn("BasicCol1", ImGuiTableColumnFlags.WidthFixed, 200);
ImGui.TableSetupColumn("BasicCol2", ImGuiTableColumnFlags.WidthStretch); ImGui.TableSetupColumn("BasicCol2", ImGuiTableColumnFlags.WidthStretch);
ImGuiUtil.DrawFrameColumn("Profile Name"); ImGuiUtil.DrawFrameColumn("Profile Name");
@@ -504,7 +506,7 @@ public class ProfilePanel
if (source) if (source)
{ {
ImGui.TextUnformatted($"Moving template #{index + 1:D2}..."); ImGui.TextUnformatted($"Moving template #{index + 1:D2}...");
if (ImGui.SetDragDropPayload(dragDropLabel, nint.Zero, 0)) if (ImGui.SetDragDropPayload(dragDropLabel, ReadOnlySpan<byte>.Empty, 0))
{ {
_dragIndex = index; _dragIndex = index;
} }

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles; namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Profiles;
@@ -16,7 +16,7 @@ public class ProfilesTab
public void Draw() public void Draw()
{ {
_selector.Draw(200f * ImGuiHelpers.GlobalScale); _selector.Draw();
ImGui.SameLine(); ImGui.SameLine();
_panel.Draw(); _panel.Draw();
} }

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui; using OtterGui;
using OtterGui.Raii; using OtterGui.Raii;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface.Components; using Dalamud.Interface.Components;
using Dalamud.Interface; using Dalamud.Interface;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;

View File

@@ -1,6 +1,6 @@
using Dalamud.Interface; using Dalamud.Interface;
using Dalamud.Plugin.Services; using Dalamud.Plugin.Services;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui; using OtterGui;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Filesystem; using OtterGui.Filesystem;
@@ -27,6 +27,7 @@ using CustomizePlus.Configuration.Helpers;
using CustomizePlus.Configuration.Data.Version3; using CustomizePlus.Configuration.Data.Version3;
using CustomizePlus.Configuration.Data.Version2; using CustomizePlus.Configuration.Data.Version2;
using Dalamud.Interface.ImGuiNotification; using Dalamud.Interface.ImGuiNotification;
using OtterGui.Text;
namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Templates; namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Templates;
@@ -65,6 +66,18 @@ public class TemplateFileSystemSelector : FileSystemSelector<Template, TemplateS
public ColorId Color; public ColorId Color;
} }
protected override float MinimumAbsoluteRemainder
=> 670 * ImUtf8.GlobalScale;
protected override void SetSize(Vector2 size)
{
base.SetSize(size);
var adaptedSize = MathF.Round(size.X / ImUtf8.GlobalScale);
}
public TemplateFileSystemSelector( public TemplateFileSystemSelector(
TemplateFileSystem fileSystem, TemplateFileSystem fileSystem,
IKeyState keyState, IKeyState keyState,

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface; using Dalamud.Interface;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui; using OtterGui;
using OtterGui.Classes; using OtterGui.Classes;
using OtterGui.Raii; using OtterGui.Raii;

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Templates; namespace CustomizePlus.UI.Windows.MainWindow.Tabs.Templates;
@@ -16,7 +16,7 @@ public class TemplatesTab
public void Draw() public void Draw()
{ {
_selector.Draw(200f * ImGuiHelpers.GlobalScale); _selector.Draw();
ImGui.SameLine(); ImGui.SameLine();
_panel.Draw(); _panel.Draw();
} }

View File

@@ -1,5 +1,5 @@
using Dalamud.Interface.Utility; using Dalamud.Interface.Utility;
using ImGuiNET; using Dalamud.Bindings.ImGui;
using OtterGui; using OtterGui;
using OtterGui.Log; using OtterGui.Log;
using OtterGui.Raii; using OtterGui.Raii;

View File

@@ -4,9 +4,9 @@
"net9.0-windows7.0": { "net9.0-windows7.0": {
"DalamudPackager": { "DalamudPackager": {
"type": "Direct", "type": "Direct",
"requested": "[12.0.0, )", "requested": "[13.0.0, )",
"resolved": "12.0.0", "resolved": "13.0.0",
"contentHash": "J5TJLV3f16T/E2H2P17ClWjtfEBPpq3yxvqW46eN36JCm6wR+EaoaYkqG9Rm5sHqs3/nK/vKjWWyvEs/jhKoXw==" "contentHash": "Mb3cUDSK/vDPQ8gQIeuCw03EMYrej1B4J44a1AvIJ9C759p9XeqdU9Hg4WgOmlnlPe0G7ILTD32PKSUpkQNa8w=="
}, },
"DotNet.ReproducibleBuilds": { "DotNet.ReproducibleBuilds": {
"type": "Direct", "type": "Direct",
@@ -90,7 +90,7 @@
"type": "Project", "type": "Project",
"dependencies": { "dependencies": {
"OtterGui": "[1.0.0, )", "OtterGui": "[1.0.0, )",
"Penumbra.Api": "[5.6.1, )", "Penumbra.Api": "[5.10.0, )",
"Penumbra.String": "[1.0.6, )" "Penumbra.String": "[1.0.6, )"
} }
}, },