Skip to content

Commit 8a3e0f7

Browse files
4.0.1
1 parent 33e4510 commit 8a3e0f7

12 files changed

Lines changed: 154 additions & 63 deletions

AllaganMarket/AllaganMarket.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
<PackageReference Include="AllaganLib.Interface" Version="2.2.0" />
1111
<PackageReference Include="AllaganLib.Shared" Version="2.2.0" />
1212
<PackageReference Include="AllaganLib.Universalis" Version="2.2.0" />
13-
<PackageReference Include="DalaMock.Host" Version="5.1.0" />
14-
<PackageReference Include="DalaMock.Shared" Version="5.1.0" />
13+
<PackageReference Include="DalaMock.Host" Version="6.0.0" />
14+
<PackageReference Include="DalaMock.Shared" Version="6.0.0" />
1515
<PackageReference Include="Humanizer" Version="3.0.1" />
1616
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
1717
<PrivateAssets>all</PrivateAssets>
@@ -39,4 +39,4 @@
3939
<ItemGroup>
4040
<Content Include="CHANGELOG.md" />
4141
</ItemGroup>
42-
</Project>
42+
</Project>

AllaganMarket/AllaganMarketPlugin.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using System.Net.Http;
66
using System.Net.WebSockets;
77
using System.Reflection;
8+
using System.Threading;
9+
using System.Threading.Tasks;
810

911
using AllaganLib.Data.Service;
1012
using AllaganLib.Interface.FormFields;
@@ -55,8 +57,6 @@ public AllaganMarketPlugin(
5557
: base(
5658
pluginInterface)
5759
{
58-
this.CreateHost();
59-
this.Start();
6060
}
6161

6262
private List<Type> HostedServices { get; } = new()
@@ -81,6 +81,7 @@ public AllaganMarketPlugin(
8181
typeof(LaunchButtonService),
8282
typeof(DtrService),
8383
typeof(HighlightingService),
84+
typeof(RetainerService),
8485
};
8586

8687
public List<Type> GetHostedServices()
@@ -161,16 +162,13 @@ public override void ConfigureContainer(ContainerBuilder containerBuilder)
161162
containerBuilder.RegisterTransientSelfAndInterfaces<BackgroundTaskQueue>();
162163
containerBuilder.RegisterType<SettingTypeConfiguration>().SingleInstance();
163164
containerBuilder.RegisterType<ImGuiMenus>().SingleInstance();
164-
containerBuilder.RegisterType<RetainerService>().As<IRetainerService>().SingleInstance();
165165
containerBuilder.RegisterType<CsvLoaderService>().SingleInstance();
166166
containerBuilder.RegisterType<ImGuiService>().AsSelf().As<AllaganLib.Interface.Services.ImGuiService>()
167167
.SingleInstance();
168168
containerBuilder.RegisterType<SaleItemTable>().SingleInstance();
169169
containerBuilder.RegisterType<SoldItemTable>().SingleInstance();
170170
containerBuilder.RegisterType<SaleSummaryTable>().SingleInstance();
171171
containerBuilder.RegisterType<SearchResultConfiguration>();
172-
containerBuilder.RegisterType<FileDialogManager>().SingleInstance();
173-
containerBuilder.RegisterType<DalamudFileDialogManager>().As<IFileDialogManager>().SingleInstance();
174172
containerBuilder.RegisterType<AtkOrderService>().As<IAtkOrderService>().SingleInstance();
175173
containerBuilder.RegisterType<GameInterfaceService>().As<IGameInterfaceService>().SingleInstance();
176174

@@ -209,7 +207,6 @@ public override void ConfigureContainer(ContainerBuilder containerBuilder)
209207
.SingleInstance();
210208
containerBuilder.RegisterType<ConfigurationWizardService<Configuration>>().AsSelf().AsImplementedInterfaces()
211209
.SingleInstance();
212-
containerBuilder.RegisterType<Font>().As<IFont>().SingleInstance();
213210
containerBuilder.RegisterType<TimeSpanHumanizerCache>();
214211

215212
// Sheets

AllaganMarket/CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ Instead the changelog reader and automation surrounding plugin PRs will add the
88
The format is based on [Keep a Changelog](https://keepachangelog.com/en/0/),
99
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.html).
1010

11+
## [4.0.1] - 2026-05-06
12+
13+
### Changed
14+
- Fix a potential crash
15+
1116
## [4.0.0] - 2026-05-02
1217

1318
### Changed
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
using System.Globalization;
2+
3+
using AllaganLib.Shared.Interfaces;
4+
5+
using AllaganMarket.Services.Interfaces;
6+
7+
using Dalamud.Bindings.ImGui;
8+
using Dalamud.Interface.Utility.Raii;
9+
10+
namespace AllaganMarket.Debugging;
11+
12+
public class RetainerServiceDebuggerPane : IDebugPane
13+
{
14+
private readonly IRetainerService retainerService;
15+
16+
public RetainerServiceDebuggerPane(IRetainerService retainerService)
17+
{
18+
this.retainerService = retainerService;
19+
}
20+
21+
public string Name => "Retainer Service Debugger";
22+
23+
public void Draw()
24+
{
25+
using var child = ImRaii.Child("RetainerServiceDebuggerPaneChild", new System.Numerics.Vector2(0, 0), true);
26+
27+
if (!child.Success)
28+
{
29+
return;
30+
}
31+
32+
ImGui.Text("RetainerService State");
33+
ImGui.Separator();
34+
35+
using var table = ImRaii.Table(
36+
"RetainerServiceTable",
37+
2,
38+
ImGuiTableFlags.RowBg | ImGuiTableFlags.Borders | ImGuiTableFlags.SizingStretchProp);
39+
40+
if (!table.Success)
41+
{
42+
return;
43+
}
44+
45+
ImGui.TableSetupColumn("Property");
46+
ImGui.TableSetupColumn("Value");
47+
ImGui.TableHeadersRow();
48+
49+
DrawRow("Retainer Id", this.retainerService.RetainerId == 0 ? "(none)" : this.retainerService.RetainerId.ToString(CultureInfo.InvariantCulture));
50+
DrawRow("Retainer World Id", this.retainerService.RetainerWorldId == 0 ? "(none)" : this.retainerService.RetainerWorldId.ToString(CultureInfo.InvariantCulture));
51+
DrawRow("Retainer Gil", this.retainerService.RetainerGil.ToString("N0", CultureInfo.InvariantCulture));
52+
}
53+
54+
private static void DrawRow(string label, string value)
55+
{
56+
ImGui.TableNextRow();
57+
ImGui.TableNextColumn();
58+
ImGui.Text(label);
59+
ImGui.TableNextColumn();
60+
ImGui.Text(value);
61+
}
62+
}
Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,44 @@
1+
using AllaganLib.Shared.Services;
2+
13
using AllaganMarket.Services.Interfaces;
24

35
using Dalamud.Plugin.Services;
46

57
using FFXIVClientStructs.FFXIV.Client.Game;
68
using FFXIVClientStructs.FFXIV.Client.System.Framework;
79

10+
using Microsoft.Extensions.Logging;
11+
812
namespace AllaganMarket.Services;
913

1014
/// <summary>
1115
/// Wrapper for the item order module's retainer ID.
1216
/// </summary>
13-
public class RetainerService(IObjectTable objectTable) : IRetainerService
17+
public class RetainerService(ILogger<RetainerService> logger, IFramework framework, IObjectTable objectTable) : HostedFrameworkService(logger, framework), IRetainerService
1418
{
19+
private ulong retainerId;
1520
public uint RetainerWorldId => objectTable.LocalPlayer?.HomeWorld.RowId ?? 0;
1621

17-
public ulong RetainerId
22+
public ulong RetainerId => this.retainerId;
23+
24+
public unsafe uint RetainerGil => this.RetainerId == 0 ? 0 : InventoryManager.Instance()->GetRetainerGil();
25+
26+
public override unsafe void FrameworkOnUpdate(IFramework framework)
1827
{
19-
get
28+
var uiModule = FFXIVClientStructs.FFXIV.Client.System.Framework.Framework.Instance()->UIModule;
29+
if (uiModule == null)
2030
{
21-
unsafe
22-
{
23-
var clientInterfaceUiModule = Framework.Instance()->UIModule->GetItemOrderModule();
24-
var module = clientInterfaceUiModule;
25-
return module != null ? module->ActiveRetainerId : 0;
26-
}
31+
this.retainerId = 0;
32+
return;
2733
}
28-
}
2934

30-
public unsafe uint RetainerGil => this.RetainerId == 0 ? 0 : InventoryManager.Instance()->GetRetainerGil();
35+
var module = uiModule->GetItemOrderModule();
36+
if (module == null)
37+
{
38+
this.retainerId = 0;
39+
return;
40+
}
41+
42+
this.retainerId = module->ActiveRetainerId;
43+
}
3144
}

AllaganMarket/packages.lock.json

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,22 +50,22 @@
5050
},
5151
"DalaMock.Host": {
5252
"type": "Direct",
53-
"requested": "[5.1.0, )",
54-
"resolved": "5.1.0",
55-
"contentHash": "x3PnZcrL60K3ShR7x/c+vmatBqyOGKXTpUE+I1ioomEW95R9tzAT/ld4RT9MPpYRDdIZoe+bYkp6yAsQ2tfB1w==",
53+
"requested": "[6.0.0, )",
54+
"resolved": "6.0.0",
55+
"contentHash": "X7HL9toXQwo1rbJ1cvDMSvfXVlQd5f+ZJ2lHuZawszHbKt+jGqEp0xK6bJhv8u2ZElhj+T4A48BSk+0JKq7LxA==",
5656
"dependencies": {
5757
"Autofac.Extensions.DependencyInjection": "10.0.0",
58-
"DalaMock.Shared": "5.1.0",
58+
"DalaMock.Shared": "6.0.0",
5959
"Microsoft.Extensions.Hosting": "10.0.4",
6060
"Microsoft.Extensions.Hosting.Abstractions": "10.0.4",
6161
"Microsoft.Extensions.ObjectPool": "10.0.4"
6262
}
6363
},
6464
"DalaMock.Shared": {
6565
"type": "Direct",
66-
"requested": "[5.1.0, )",
67-
"resolved": "5.1.0",
68-
"contentHash": "rIP9swqGnRnwPeHyGqSAbCc48jLbRV4yOpGHkDzEKErS64KkKaqXM1fFty1eorSYdNsvsrfZ2u02GWlZkY2OFA==",
66+
"requested": "[6.0.0, )",
67+
"resolved": "6.0.0",
68+
"contentHash": "nsnYbWerAceRqkPdaa69nDqFFh6SmyHc95x+p0z+Mg576yQaN+SqlSWY6ovWSrJa1AKo88/F+ffWoR0weGz7AA==",
6969
"dependencies": {
7070
"Autofac": "9.0.0"
7171
}

AllaganMarketMock/AllaganMarketMock.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
<ProjectReference Include="..\AllaganMarket\AllaganMarket.csproj" />
6060
</ItemGroup>
6161
<ItemGroup>
62-
<PackageReference Include="DalaMock.Core" Version="5.0.2" />
62+
<PackageReference Include="DalaMock.Core" Version="6.0.0" />
6363
<PackageReference Include="StyleCop.Analyzers" Version="1.2.0-beta.556">
6464
<PrivateAssets>all</PrivateAssets>
6565
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@@ -113,4 +113,4 @@
113113
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
114114
</Content>
115115
</ItemGroup>
116-
</Project>
116+
</Project>

AllaganMarketMock/AllaganMarketPluginMock.cs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,30 +10,26 @@
1010
using Autofac;
1111

1212
using DalaMock.Core.Mocks;
13-
using DalaMock.Core.Windows;
1413
using DalaMock.Shared.Interfaces;
1514

1615
using Dalamud.Interface.Windowing;
1716
using Dalamud.Plugin;
18-
using Dalamud.Plugin.Services;
19-
20-
using Microsoft.Extensions.DependencyInjection;
2117

2218
namespace AllaganMarketMock;
2319

2420
public class AllaganMarketPluginMock : AllaganMarketPlugin
2521
{
26-
public AllaganMarketPluginMock(IDalamudPluginInterface pluginInterface)
22+
public AllaganMarketPluginMock(MockReplacementContainer mockReplacementContainer, IDalamudPluginInterface pluginInterface)
2723
: base(pluginInterface)
2824
{
25+
this.ReplacementContainer = mockReplacementContainer;
2926
}
3027

28+
public override IReplacementContainer ReplacementContainer { get; }
29+
3130
public override void ConfigureContainer(ContainerBuilder containerBuilder)
3231
{
3332
base.ConfigureContainer(containerBuilder);
34-
containerBuilder.RegisterType<MockWindowSystem>().AsSelf().As<IWindowSystem>().SingleInstance();
35-
containerBuilder.RegisterType<MockFileDialogManager>().AsSelf().As<IFileDialogManager>().SingleInstance();
36-
containerBuilder.RegisterType<MockFont>().AsSelf().As<IFont>().SingleInstance();
3733
containerBuilder.RegisterType<MockRetainerService>().AsSelf().As<IRetainerService>().SingleInstance();
3834
containerBuilder.RegisterType<MockWindow>().AsSelf().As<Window>().SingleInstance();
3935
containerBuilder.RegisterType<MockCharacterWindow>().AsSelf().As<Window>().SingleInstance();
@@ -49,5 +45,6 @@ public override void ReplaceHostedServices(Dictionary<Type, Type> replacements)
4945
replacements.Add(typeof(InventoryService), typeof(MockInventoryService));
5046
replacements.Add(typeof(GameInterfaceService), typeof(MockGameInterfaceService));
5147
replacements.Add(typeof(RetainerMarketService), typeof(MockRetainerMarketService));
48+
replacements.Add(typeof(RetainerService), typeof(MockRetainerService));
5249
}
5350
}

AllaganMarketMock/MockCharacterWindow.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using AllaganMarket.Windows;
55

66
using DalaMock.Core.Mocks;
7+
using DalaMock.Core.Mocks.DalamudServices;
78
using DalaMock.Host.Mediator;
89

910
using Dalamud.Interface.Utility.Raii;

AllaganMarketMock/MockWindow.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using AllaganMarket.Windows;
1010

1111
using DalaMock.Core.Mocks;
12+
using DalaMock.Core.Mocks.DalamudServices;
1213
using DalaMock.Host.Mediator;
1314

1415
using Dalamud.Interface.Utility.Raii;

0 commit comments

Comments
 (0)