mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-12 18:27:23 +01:00
chore: add data widget for servicecontainer status, remove serveropcode data widget
This commit is contained in:
parent
428e1afefd
commit
ab9b7e1602
4 changed files with 70 additions and 41 deletions
|
|
@ -19,7 +19,7 @@ internal class DataWindow : Window
|
||||||
{
|
{
|
||||||
private readonly IDataWindowWidget[] modules =
|
private readonly IDataWindowWidget[] modules =
|
||||||
{
|
{
|
||||||
new ServerOpcodeWidget(),
|
new ServicesWidget(),
|
||||||
new AddressesWidget(),
|
new AddressesWidget(),
|
||||||
new ObjectTableWidget(),
|
new ObjectTableWidget(),
|
||||||
new FateTableWidget(),
|
new FateTableWidget(),
|
||||||
|
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
||||||
using Dalamud.Data;
|
|
||||||
using ImGuiNET;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Widget to display the currently set server opcodes.
|
|
||||||
/// </summary>
|
|
||||||
internal class ServerOpcodeWidget : IDataWindowWidget
|
|
||||||
{
|
|
||||||
private string? serverOpString;
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public string[]? CommandShortcuts { get; init; } = { "opcode", "serveropcode" };
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public string DisplayName { get; init; } = "Server Opcode";
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public bool Ready { get; set; }
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public void Load()
|
|
||||||
{
|
|
||||||
var dataManager = Service<DataManager>.Get();
|
|
||||||
|
|
||||||
if (dataManager.IsDataReady)
|
|
||||||
{
|
|
||||||
this.serverOpString = JsonConvert.SerializeObject(dataManager.ServerOpCodes, Formatting.Indented);
|
|
||||||
this.Ready = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <inheritdoc/>
|
|
||||||
public void Draw()
|
|
||||||
{
|
|
||||||
ImGui.TextUnformatted(this.serverOpString ?? "serverOpString not initialized");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
using Dalamud.Interface.Colors;
|
||||||
|
using Dalamud.Interface.Utility;
|
||||||
|
using Dalamud.Interface.Utility.Raii;
|
||||||
|
using Dalamud.IoC.Internal;
|
||||||
|
using ImGuiNET;
|
||||||
|
|
||||||
|
namespace Dalamud.Interface.Internal.Windows.Data.Widgets;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Widget for displaying start info.
|
||||||
|
/// </summary>
|
||||||
|
internal class ServicesWidget : IDataWindowWidget
|
||||||
|
{
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public string[]? CommandShortcuts { get; init; } = { "services" };
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public string DisplayName { get; init; } = "Service Container";
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public bool Ready { get; set; }
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public void Load()
|
||||||
|
{
|
||||||
|
this.Ready = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public void Draw()
|
||||||
|
{
|
||||||
|
var container = Service<ServiceContainer>.Get();
|
||||||
|
|
||||||
|
foreach (var instance in container.Instances)
|
||||||
|
{
|
||||||
|
var hasInterface = container.InterfaceToTypeMap.Values.Any(x => x == instance.Key);
|
||||||
|
var isPublic = instance.Key.IsPublic;
|
||||||
|
|
||||||
|
ImGui.BulletText($"{instance.Key.FullName} ({instance.Key.GetServiceKind()})");
|
||||||
|
|
||||||
|
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed, !hasInterface))
|
||||||
|
{
|
||||||
|
ImGui.Text(hasInterface
|
||||||
|
? $"\t => Provided via interface: {container.InterfaceToTypeMap.First(x => x.Value == instance.Key).Key.FullName}"
|
||||||
|
: "\t => NO INTERFACE!!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isPublic)
|
||||||
|
{
|
||||||
|
using var color = ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed);
|
||||||
|
ImGui.Text("\t => PUBLIC!!!");
|
||||||
|
}
|
||||||
|
|
||||||
|
ImGuiHelpers.ScaledDummy(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -30,6 +30,16 @@ internal class ServiceContainer : IServiceProvider, IServiceType
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a dictionary of all registered instances.
|
||||||
|
/// </summary>
|
||||||
|
public IReadOnlyDictionary<Type, ObjectInstance> Instances => this.instances;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets a dictionary mapping interfaces to their implementations.
|
||||||
|
/// </summary>
|
||||||
|
public IReadOnlyDictionary<Type, Type> InterfaceToTypeMap => this.interfaceToTypeMap;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Register a singleton object of any type into the current IOC container.
|
/// Register a singleton object of any type into the current IOC container.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue