improve ui performance, don't show other side paused pairs in online list
This commit is contained in:
@@ -530,22 +530,23 @@ public class CompactUi : WindowMediatorSubscriberBase, IDisposable
|
|||||||
var ySize = TransferPartHeight == 0
|
var ySize = TransferPartHeight == 0
|
||||||
? 1
|
? 1
|
||||||
: (ImGui.GetWindowContentRegionMax().Y - ImGui.GetWindowContentRegionMin().Y) - TransferPartHeight - ImGui.GetCursorPosY();
|
: (ImGui.GetWindowContentRegionMax().Y - ImGui.GetWindowContentRegionMin().Y) - TransferPartHeight - ImGui.GetCursorPosY();
|
||||||
var users = GetFilteredUsers();
|
var users = GetFilteredUsers()
|
||||||
|
.OrderBy(
|
||||||
ImGui.BeginChild("list", new Vector2(WindowContentWidth, ySize), border: false);
|
u => _configService.Current.ShowCharacterNameInsteadOfNotesForVisible && !string.IsNullOrEmpty(u.PlayerName)
|
||||||
var visibleUsers = users.Where(u => u.IsVisible && u.UserPair!.OtherPermissions.IsPaired()).OrderBy(u => _configService.Current.ShowCharacterNameInsteadOfNotesForVisible ?
|
? u.PlayerName
|
||||||
u.PlayerName : (u.GetNote() ?? u.UserData.AliasOrUID), StringComparer.OrdinalIgnoreCase).ToList();
|
: (u.GetNote() ?? u.UserData.AliasOrUID), StringComparer.OrdinalIgnoreCase).ToList();
|
||||||
var onlineUsers = users.Where(u => u.IsOnline || (u.UserPair.OwnPermissions.IsPaused() || u.UserPair.OtherPermissions.IsPaused())).OrderBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase).ToList();
|
|
||||||
var offlineUsers = users.Where(u => (!u.IsOnline && !u.IsVisible || !u.UserPair!.OtherPermissions.IsPaired()) && !(u.UserPair.OwnPermissions.IsPaused() || u.UserPair.OtherPermissions.IsPaused()))
|
|
||||||
.OrderBy(u => u.GetNote() ?? u.UserData.AliasOrUID, StringComparer.OrdinalIgnoreCase).ToList();
|
|
||||||
|
|
||||||
if (_configService.Current.ReverseUserSort)
|
if (_configService.Current.ReverseUserSort)
|
||||||
{
|
{
|
||||||
visibleUsers.Reverse();
|
users.Reverse();
|
||||||
onlineUsers.Reverse();
|
|
||||||
offlineUsers.Reverse();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var onlineUsers = users.Where(u => u.IsOnline || u.UserPair.OwnPermissions.IsPaused()).ToList();
|
||||||
|
var visibleUsers = onlineUsers.Where(u => u.IsVisible).ToList();
|
||||||
|
var offlineUsers = users.Except(onlineUsers).ToList();
|
||||||
|
|
||||||
|
ImGui.BeginChild("list", new Vector2(WindowContentWidth, ySize), border: false);
|
||||||
|
|
||||||
_pairGroupsUi.Draw(visibleUsers, onlineUsers, offlineUsers);
|
_pairGroupsUi.Draw(visibleUsers, onlineUsers, offlineUsers);
|
||||||
|
|
||||||
ImGui.EndChild();
|
ImGui.EndChild();
|
||||||
@@ -557,7 +558,8 @@ public class CompactUi : WindowMediatorSubscriberBase, IDisposable
|
|||||||
{
|
{
|
||||||
if (_characterOrCommentFilter.IsNullOrEmpty()) return true;
|
if (_characterOrCommentFilter.IsNullOrEmpty()) return true;
|
||||||
return p.UserData.AliasOrUID.Contains(_characterOrCommentFilter, StringComparison.OrdinalIgnoreCase) ||
|
return p.UserData.AliasOrUID.Contains(_characterOrCommentFilter, StringComparison.OrdinalIgnoreCase) ||
|
||||||
(p.GetNote()?.Contains(_characterOrCommentFilter, StringComparison.OrdinalIgnoreCase) ?? false);
|
(p.GetNote()?.Contains(_characterOrCommentFilter, StringComparison.OrdinalIgnoreCase) ?? false) ||
|
||||||
|
(p.PlayerName?.Contains(_characterOrCommentFilter) ?? false);
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,13 +14,14 @@ using MareSynchronos.Localization;
|
|||||||
using MareSynchronos.Managers;
|
using MareSynchronos.Managers;
|
||||||
using MareSynchronos.MareConfiguration;
|
using MareSynchronos.MareConfiguration;
|
||||||
using MareSynchronos.MareConfiguration.Models;
|
using MareSynchronos.MareConfiguration.Models;
|
||||||
|
using MareSynchronos.Mediator;
|
||||||
using MareSynchronos.Models;
|
using MareSynchronos.Models;
|
||||||
using MareSynchronos.Utils;
|
using MareSynchronos.Utils;
|
||||||
using MareSynchronos.WebAPI;
|
using MareSynchronos.WebAPI;
|
||||||
|
|
||||||
namespace MareSynchronos.UI;
|
namespace MareSynchronos.UI;
|
||||||
|
|
||||||
public partial class UiShared : IDisposable
|
public partial class UiShared : MediatorSubscriberBase
|
||||||
{
|
{
|
||||||
[LibraryImport("user32")]
|
[LibraryImport("user32")]
|
||||||
internal static partial short GetKeyState(int nVirtKey);
|
internal static partial short GetKeyState(int nVirtKey);
|
||||||
@@ -52,10 +53,15 @@ public partial class UiShared : IDisposable
|
|||||||
ImGuiWindowFlags.NoScrollWithMouse;
|
ImGuiWindowFlags.NoScrollWithMouse;
|
||||||
|
|
||||||
public ApiController ApiController => _apiController;
|
public ApiController ApiController => _apiController;
|
||||||
|
private bool _penumbraExists = false;
|
||||||
|
private bool _glamourerExists = false;
|
||||||
|
private bool _customizePlusExists = false;
|
||||||
|
private bool _heelsExists = false;
|
||||||
|
private bool _palettePlusExists = false;
|
||||||
|
|
||||||
public UiShared(IpcManager ipcManager, ApiController apiController, PeriodicFileScanner cacheScanner, FileDialogManager fileDialogManager,
|
public UiShared(IpcManager ipcManager, ApiController apiController, PeriodicFileScanner cacheScanner, FileDialogManager fileDialogManager,
|
||||||
MareConfigService configService, DalamudUtil dalamudUtil, DalamudPluginInterface pluginInterface, Dalamud.Localization localization,
|
MareConfigService configService, DalamudUtil dalamudUtil, DalamudPluginInterface pluginInterface, Dalamud.Localization localization,
|
||||||
ServerConfigurationManager serverManager)
|
ServerConfigurationManager serverManager, MareMediator mediator) : base(mediator)
|
||||||
{
|
{
|
||||||
_ipcManager = ipcManager;
|
_ipcManager = ipcManager;
|
||||||
_apiController = apiController;
|
_apiController = apiController;
|
||||||
@@ -70,6 +76,15 @@ public partial class UiShared : IDisposable
|
|||||||
|
|
||||||
_pluginInterface.UiBuilder.BuildFonts += BuildFont;
|
_pluginInterface.UiBuilder.BuildFonts += BuildFont;
|
||||||
_pluginInterface.UiBuilder.RebuildFonts();
|
_pluginInterface.UiBuilder.RebuildFonts();
|
||||||
|
|
||||||
|
Mediator.Subscribe<DelayedFrameworkUpdateMessage>(this, (_) =>
|
||||||
|
{
|
||||||
|
_penumbraExists = _ipcManager.CheckPenumbraApi();
|
||||||
|
_glamourerExists = ipcManager.CheckGlamourerApi();
|
||||||
|
_customizePlusExists = _ipcManager.CheckCustomizePlusApi();
|
||||||
|
_heelsExists = _ipcManager.CheckHeelsApi();
|
||||||
|
_palettePlusExists = _ipcManager.CheckPalettePlusApi();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public static float GetWindowContentRegionWidth()
|
public static float GetWindowContentRegionWidth()
|
||||||
@@ -162,39 +177,33 @@ public partial class UiShared : IDisposable
|
|||||||
|
|
||||||
public bool DrawOtherPluginState()
|
public bool DrawOtherPluginState()
|
||||||
{
|
{
|
||||||
var penumbraExists = _ipcManager.CheckPenumbraApi();
|
var penumbraColor = _penumbraExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
||||||
var glamourerExists = _ipcManager.CheckGlamourerApi();
|
var glamourerColor = _glamourerExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
||||||
var heelsExists = _ipcManager.CheckHeelsApi();
|
var heelsColor = _heelsExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
||||||
var customizeExists = _ipcManager.CheckCustomizePlusApi();
|
var customizeColor = _customizePlusExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
||||||
var paletteExists = _ipcManager.CheckPalettePlusApi();
|
var paletteColor = _palettePlusExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
||||||
|
|
||||||
var penumbraColor = penumbraExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
|
||||||
var glamourerColor = glamourerExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
|
||||||
var heelsColor = heelsExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
|
||||||
var customizeColor = customizeExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
|
||||||
var paletteColor = paletteExists ? ImGuiColors.ParsedGreen : ImGuiColors.DalamudRed;
|
|
||||||
ImGui.Text("Penumbra:");
|
ImGui.Text("Penumbra:");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(penumbraColor, penumbraExists ? "Available" : "Unavailable");
|
ImGui.TextColored(penumbraColor, _penumbraExists ? "Available" : "Unavailable");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.Text("Glamourer:");
|
ImGui.Text("Glamourer:");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(glamourerColor, glamourerExists ? "Available" : "Unavailable");
|
ImGui.TextColored(glamourerColor, _glamourerExists ? "Available" : "Unavailable");
|
||||||
ImGui.Text("Optional Addons");
|
ImGui.Text("Optional Addons");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.Text("Heels:");
|
ImGui.Text("Heels:");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(heelsColor, heelsExists ? "Available" : "Unavailable");
|
ImGui.TextColored(heelsColor, _heelsExists ? "Available" : "Unavailable");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.Text("Customize+:");
|
ImGui.Text("Customize+:");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(customizeColor, customizeExists ? "Available" : "Unavailable");
|
ImGui.TextColored(customizeColor, _customizePlusExists ? "Available" : "Unavailable");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.Text("Palette+:");
|
ImGui.Text("Palette+:");
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.TextColored(paletteColor, paletteExists ? "Available" : "Unavailable");
|
ImGui.TextColored(paletteColor, _palettePlusExists ? "Available" : "Unavailable");
|
||||||
|
|
||||||
if (!penumbraExists || !glamourerExists)
|
if (!_penumbraExists || !_glamourerExists)
|
||||||
{
|
{
|
||||||
ImGui.TextColored(ImGuiColors.DalamudRed, "You need to install both Penumbra and Glamourer and keep them up to date to use Mare Synchronos.");
|
ImGui.TextColored(ImGuiColors.DalamudRed, "You need to install both Penumbra and Glamourer and keep them up to date to use Mare Synchronos.");
|
||||||
return false;
|
return false;
|
||||||
@@ -653,9 +662,9 @@ public partial class UiShared : IDisposable
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public override void Dispose()
|
||||||
{
|
{
|
||||||
Logger.Verbose($"Disposing {GetType()}");
|
base.Dispose();
|
||||||
_pluginInterface.UiBuilder.BuildFonts -= BuildFont;
|
_pluginInterface.UiBuilder.BuildFonts -= BuildFont;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user