diff --git a/BetterPartyFinder/BetterPartyFinder.csproj b/BetterPartyFinder/BetterPartyFinder.csproj
index 33d954a..60b8f8e 100755
--- a/BetterPartyFinder/BetterPartyFinder.csproj
+++ b/BetterPartyFinder/BetterPartyFinder.csproj
@@ -1,10 +1,13 @@
- net48
+ net5-windows
1.2.0
latest
enable
+ false
+ true
+ true
@@ -12,6 +15,10 @@
$(AppData)\XIVLauncher\addon\Hooks\dev\Dalamud.dll
False
+
+ $(AppData)\XIVLauncher\addon\Hooks\dev\FFXIVClientStructs.dll
+ False
+
$(AppData)\XIVLauncher\addon\Hooks\dev\ImGui.NET.dll
False
@@ -28,17 +35,15 @@
$(AppData)\XIVLauncher\addon\Hooks\dev\Lumina.Excel.dll
False
-
- $(AppData)\XIVLauncher\addon\Hooks\dev\System.Memory.dll
- False
-
-
-
-
-
+
+
+
+
+
+
diff --git a/BetterPartyFinder/BetterPartyFinder.yaml b/BetterPartyFinder/BetterPartyFinder.yaml
index 8418f93..55b5519 100755
--- a/BetterPartyFinder/BetterPartyFinder.yaml
+++ b/BetterPartyFinder/BetterPartyFinder.yaml
@@ -1,5 +1,6 @@
author: ascclemens
name: Better Party Finder
+punchline: Use advanced Party Finder filter presets.
description: |-
Filter the party finder better.
diff --git a/BetterPartyFinder/Commands.cs b/BetterPartyFinder/Commands.cs
index e162ba4..4e854a4 100755
--- a/BetterPartyFinder/Commands.cs
+++ b/BetterPartyFinder/Commands.cs
@@ -14,16 +14,16 @@ namespace BetterPartyFinder {
internal Commands(Plugin plugin) {
this.Plugin = plugin;
- foreach (var name in CommandNames) {
- this.Plugin.Interface.CommandManager.AddHandler(name.Key, new CommandInfo(this.OnCommand) {
- HelpMessage = name.Value,
+ foreach (var (name, help) in CommandNames) {
+ this.Plugin.CommandManager.AddHandler(name, new CommandInfo(this.OnCommand) {
+ HelpMessage = help,
});
}
}
public void Dispose() {
foreach (var name in CommandNames.Keys) {
- this.Plugin.Interface.CommandManager.RemoveHandler(name);
+ this.Plugin.CommandManager.RemoveHandler(name);
}
}
diff --git a/BetterPartyFinder/Configuration.cs b/BetterPartyFinder/Configuration.cs
index 969c4e8..aa2db2e 100755
--- a/BetterPartyFinder/Configuration.cs
+++ b/BetterPartyFinder/Configuration.cs
@@ -2,7 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using Dalamud.Configuration;
-using Dalamud.Game.Internal.Gui.Structs;
+using Dalamud.Game.Gui.PartyFinder.Types;
namespace BetterPartyFinder {
public class Configuration : IPluginConfiguration {
@@ -120,7 +120,7 @@ namespace BetterPartyFinder {
Conditions = this.Conditions,
Duties = duties,
Jobs = jobs,
- Name = string.Copy(this.Name),
+ Name = new string(this.Name),
Objectives = this.Objectives,
DutiesMode = this.DutiesMode,
LootRule = this.LootRule,
diff --git a/BetterPartyFinder/Filter.cs b/BetterPartyFinder/Filter.cs
index 610e341..3c09e40 100755
--- a/BetterPartyFinder/Filter.cs
+++ b/BetterPartyFinder/Filter.cs
@@ -1,8 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
-using Dalamud.Game.Internal.Gui;
-using Dalamud.Game.Internal.Gui.Structs;
+using Dalamud.Game.Gui.PartyFinder.Types;
namespace BetterPartyFinder {
public class Filter : IDisposable {
@@ -11,11 +10,11 @@ namespace BetterPartyFinder {
internal Filter(Plugin plugin) {
this.Plugin = plugin;
- this.Plugin.Interface.Framework.Gui.PartyFinder.ReceiveListing += this.ReceiveListing;
+ this.Plugin.PartyFinderGui.ReceiveListing += this.ReceiveListing;
}
public void Dispose() {
- this.Plugin.Interface.Framework.Gui.PartyFinder.ReceiveListing -= this.ReceiveListing;
+ this.Plugin.PartyFinderGui.ReceiveListing -= this.ReceiveListing;
}
private void ReceiveListing(PartyFinderListing listing, PartyFinderListingEventArgs args) {
@@ -77,7 +76,7 @@ namespace BetterPartyFinder {
}
// filter based on category (slow)
- if (!filter.Categories.Any(category => category.ListingMatches(this.Plugin.Interface.Data, listing))) {
+ if (!filter.Categories.Any(category => category.ListingMatches(this.Plugin.DataManager, listing))) {
return false;
}
@@ -109,7 +108,7 @@ namespace BetterPartyFinder {
continue;
}
- var job = possibleJob.ClassJob(this.Plugin.Interface.Data);
+ var job = possibleJob.ClassJob(this.Plugin.DataManager);
if (present.Contains((byte) job.RowId)) {
continue;
}
diff --git a/BetterPartyFinder/FodyWeavers.xml b/BetterPartyFinder/FodyWeavers.xml
deleted file mode 100755
index 2dfb1f4..0000000
--- a/BetterPartyFinder/FodyWeavers.xml
+++ /dev/null
@@ -1,3 +0,0 @@
-
-
-
diff --git a/BetterPartyFinder/JoinHandler.cs b/BetterPartyFinder/JoinHandler.cs
index f2135a8..58ad9d9 100755
--- a/BetterPartyFinder/JoinHandler.cs
+++ b/BetterPartyFinder/JoinHandler.cs
@@ -1,5 +1,5 @@
using System;
-using Dalamud.Game.Internal.Gui.Structs;
+using Dalamud.Game.Gui.PartyFinder.Types;
using Dalamud.Game.Text;
using Dalamud.Game.Text.SeStringHandling;
@@ -25,10 +25,10 @@ namespace BetterPartyFinder {
SeString msg = "Party description: ";
msg.Payloads.AddRange(listing.Description.Payloads);
- this.Plugin.Interface.Framework.Gui.Chat.PrintChat(new XivChatEntry {
+ this.Plugin.ChatGui.PrintChat(new XivChatEntry {
Name = "Better Party Finder",
Type = XivChatType.SystemMessage,
- MessageBytes = msg.Encode(),
+ Message = msg,
});
}
}
diff --git a/BetterPartyFinder/Plugin.cs b/BetterPartyFinder/Plugin.cs
index 9911025..4d83326 100755
--- a/BetterPartyFinder/Plugin.cs
+++ b/BetterPartyFinder/Plugin.cs
@@ -1,4 +1,11 @@
-using Dalamud.Plugin;
+using Dalamud.Data;
+using Dalamud.Game.ClientState;
+using Dalamud.Game.Command;
+using Dalamud.Game.Gui;
+using Dalamud.Game.Gui.PartyFinder;
+using Dalamud.Game.Text.SeStringHandling;
+using Dalamud.IoC;
+using Dalamud.Plugin;
using XivCommon;
namespace BetterPartyFinder {
@@ -6,28 +13,49 @@ namespace BetterPartyFinder {
public class Plugin : IDalamudPlugin {
public string Name => "Better Party Finder";
- internal DalamudPluginInterface Interface { get; private set; } = null!;
- internal Configuration Config { get; private set; } = null!;
- private Filter Filter { get; set; } = null!;
- internal PluginUi Ui { get; private set; } = null!;
- private Commands Commands { get; set; } = null!;
- internal XivCommonBase Common { get; private set; } = null!;
- private JoinHandler JoinHandler { get; set; } = null!;
+ [PluginService]
+ internal DalamudPluginInterface Interface { get; init; } = null!;
- public void Initialize(DalamudPluginInterface pluginInterface) {
- this.Interface = pluginInterface;
+ [PluginService]
+ internal ChatGui ChatGui { get; init; } = null!;
+ [PluginService]
+ internal ClientState ClientState { get; init; } = null!;
+
+ [PluginService]
+ internal CommandManager CommandManager { get; init; } = null!;
+
+ [PluginService]
+ internal DataManager DataManager { get; init; } = null!;
+
+ [PluginService]
+ internal GameGui GameGui { get; init; } = null!;
+
+ [PluginService]
+ internal PartyFinderGui PartyFinderGui { get; init; } = null!;
+
+ [PluginService]
+ internal SeStringManager SeStringManager { get; init; } = null!;
+
+ internal Configuration Config { get; }
+ private Filter Filter { get; }
+ internal PluginUi Ui { get; }
+ private Commands Commands { get; }
+ internal XivCommonBase Common { get; }
+ private JoinHandler JoinHandler { get; }
+
+ public Plugin() {
this.Config = Configuration.Load(this) ?? new Configuration();
this.Config.Initialise(this);
- this.Common = new XivCommonBase(this.Interface, Hooks.PartyFinder);
+ this.Common = new XivCommonBase(Hooks.PartyFinder);
this.Filter = new Filter(this);
this.JoinHandler = new JoinHandler(this);
this.Ui = new PluginUi(this);
this.Commands = new Commands(this);
// start task to determine maximum item level (based on max chestpiece)
- Util.CalculateMaxItemLevel(this.Interface.Data);
+ Util.CalculateMaxItemLevel(this.DataManager);
}
public void Dispose() {
diff --git a/BetterPartyFinder/PluginUi.cs b/BetterPartyFinder/PluginUi.cs
index 8e1910c..63e1f9e 100755
--- a/BetterPartyFinder/PluginUi.cs
+++ b/BetterPartyFinder/PluginUi.cs
@@ -3,12 +3,12 @@ using System.Collections.Generic;
using System.Linq;
using System.Numerics;
using Dalamud.Data;
-using Dalamud.Game.Internal.Gui.Structs;
+using Dalamud.Game.Gui.PartyFinder.Types;
using Dalamud.Interface;
+using FFXIVClientStructs.FFXIV.Component.GUI;
using ImGuiNET;
using Lumina.Excel.GeneratedSheets;
using Addon = Lumina.Excel.GeneratedSheets.Addon;
-using GameAddon = Dalamud.Game.Internal.Gui.Addon.Addon;
namespace BetterPartyFinder {
public class PluginUi : IDisposable {
@@ -47,16 +47,16 @@ namespace BetterPartyFinder {
internal PluginUi(Plugin plugin) {
this.Plugin = plugin;
- this.Plugin.Interface.UiBuilder.OnBuildUi += this.Draw;
- this.Plugin.Interface.UiBuilder.OnOpenConfigUi += this.OnOpenConfig;
+ this.Plugin.Interface.UiBuilder.Draw += this.Draw;
+ this.Plugin.Interface.UiBuilder.OpenConfigUi += this.OnOpenConfig;
}
public void Dispose() {
- this.Plugin.Interface.UiBuilder.OnBuildUi -= this.Draw;
- this.Plugin.Interface.UiBuilder.OnOpenConfigUi -= this.OnOpenConfig;
+ this.Plugin.Interface.UiBuilder.Draw -= this.Draw;
+ this.Plugin.Interface.UiBuilder.OpenConfigUi -= this.OnOpenConfig;
}
- private void OnOpenConfig(object sender, EventArgs e) {
+ private void OnOpenConfig() {
this.Visible = !this.Visible;
}
@@ -75,8 +75,8 @@ namespace BetterPartyFinder {
return result;
}
- private GameAddon? PartyFinderAddon() {
- return this.Plugin.Interface.Framework.Gui.GetAddonByName("LookingForGroup", 1);
+ private IntPtr PartyFinderAddon() {
+ return this.Plugin.GameGui.GetAddonByName("LookingForGroup", 1);
}
private void Draw() {
@@ -125,27 +125,30 @@ namespace BetterPartyFinder {
ImGui.End();
}
- private void DrawFiltersWindow() {
+ private unsafe void DrawFiltersWindow() {
ImGui.SetNextWindowSize(new Vector2(550f, 510f), ImGuiCond.FirstUseEver);
- var addon = this.Plugin.Config.ShowWhenPfOpen ? this.PartyFinderAddon() : null;
+ AtkUnitBase* addon = null;
+ var addonPtr = this.PartyFinderAddon();
+ if (this.Plugin.Config.ShowWhenPfOpen && addonPtr != IntPtr.Zero) {
+ addon = (AtkUnitBase*) addonPtr;
+ }
- var showWindow = this.Visible || addon?.Visible == true;
+ var showWindow = this.Visible || addon != null && addon->IsVisible;
if (!showWindow) {
return;
}
if (!ImGui.Begin(this.Plugin.Name, ref this._visible, ImGuiWindowFlags.NoDocking)) {
- if (ImGui.IsWindowCollapsed() && addon is {Visible: true}) {
+ if (ImGui.IsWindowCollapsed() && addon != null && addon->IsVisible) {
// wait until addon is initialised to show
- try {
- _ = addon.Width;
- } catch (NullReferenceException) {
+ var rootNode = addon->RootNode;
+ if (rootNode == null) {
return;
}
- ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon.X, addon.Y - ImGui.GetFrameHeight()));
+ ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon->X, addon->Y - ImGui.GetFrameHeight()));
}
ImGui.End();
@@ -153,10 +156,9 @@ namespace BetterPartyFinder {
}
if (addon != null && this.Plugin.Config.WindowSide == WindowSide.Right) {
- try {
- ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon.X + addon.Width, addon.Y));
- } catch (NullReferenceException) {
- // ignore
+ var rootNode = addon->RootNode;
+ if (rootNode != null) {
+ ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon->X + rootNode->Width, addon->Y));
}
}
@@ -272,13 +274,10 @@ namespace BetterPartyFinder {
}
if (addon != null && this.Plugin.Config.WindowSide == WindowSide.Left) {
- try {
- _ = addon.Width;
- // only continue if width is set, meaning addon is initialised
+ var rootNode = addon->RootNode;
+ if (rootNode != null) {
var currentWidth = ImGui.GetWindowWidth();
- ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon.X - currentWidth, addon.Y));
- } catch (NullReferenceException) {
- // ignore
+ ImGui.SetWindowPos(ImGuiHelpers.MainViewport.Pos + new Vector2(addon->X - currentWidth, addon->Y));
}
}
@@ -312,7 +311,7 @@ namespace BetterPartyFinder {
foreach (var category in (UiCategory[]) Enum.GetValues(typeof(UiCategory))) {
var selected = filter.Categories.Contains(category);
- if (!ImGui.Selectable(category.Name(this.Plugin.Interface.Data), ref selected)) {
+ if (!ImGui.Selectable(category.Name(this.Plugin.DataManager), ref selected)) {
continue;
}
@@ -361,23 +360,23 @@ namespace BetterPartyFinder {
}
if (ImGui.BeginChild("duty-selection", new Vector2(-1f, -1f))) {
- var duties = this.Plugin.Interface.Data.GetExcelSheet()
+ var duties = this.Plugin.DataManager.GetExcelSheet()!
.Where(cf => cf.Unknown29)
.Where(cf => AllowedContentTypes.Contains(cf.ContentType.Row));
var searchQuery = this.DutySearchQuery.Trim();
if (searchQuery.Trim() != "") {
duties = duties.Where(duty => {
- var sestring = this.Plugin.Interface.SeStringManager.Parse(duty.Name.RawData.ToArray());
+ var sestring = this.Plugin.SeStringManager.Parse(duty.Name.RawData.ToArray());
return sestring.TextValue.ContainsIgnoreCase(searchQuery);
});
}
foreach (var cf in duties) {
- var sestring = this.Plugin.Interface.SeStringManager.Parse(cf.Name.RawData.ToArray());
+ var sestring = this.Plugin.SeStringManager.Parse(cf.Name.RawData.ToArray());
var selected = filter.Duties.Contains(cf.RowId);
var name = sestring.TextValue;
- name = char.ToUpperInvariant(name[0]) + name.Substring(1);
+ name = char.ToUpperInvariant(name[0]) + name[1..];
if (!ImGui.Selectable(name, ref selected)) {
continue;
}
@@ -472,7 +471,7 @@ namespace BetterPartyFinder {
foreach (var job in (JobFlags[]) Enum.GetValues(typeof(JobFlags))) {
var selected = (slot & job) > 0;
- if (!ImGui.Selectable(job.ClassJob(this.Plugin.Interface.Data)?.Name ?? "???", ref selected)) {
+ if (!ImGui.Selectable(job.ClassJob(this.Plugin.DataManager)?.Name ?? "???", ref selected)) {
continue;
}
@@ -603,7 +602,7 @@ namespace BetterPartyFinder {
private string _playerName = string.Empty;
private void DrawPlayersTab(ConfigurationFilter filter) {
- var player = this.Plugin.Interface.ClientState.LocalPlayer;
+ var player = this.Plugin.ClientState.LocalPlayer;
if (player == null || !ImGui.BeginTabItem("Players")) {
return;
@@ -615,7 +614,7 @@ namespace BetterPartyFinder {
ImGui.SameLine();
- var worlds = Util.WorldsOnDataCentre(this.Plugin.Interface.Data, player)
+ var worlds = Util.WorldsOnDataCentre(this.Plugin.DataManager, player)
.OrderBy(world => world.Name.RawString)
.ToList();
@@ -642,7 +641,7 @@ namespace BetterPartyFinder {
PlayerInfo? deleting = null;
foreach (var info in filter.Players) {
- var world = this.Plugin.Interface.Data.GetExcelSheet().GetRow(info.World);
+ var world = this.Plugin.DataManager.GetExcelSheet()!.GetRow(info.World);
ImGui.TextUnformatted($"{info.Name}@{world?.Name}");
ImGui.SameLine();
if (IconButton(FontAwesomeIcon.Trash, $"delete-player-{info.GetHashCode()}")) {
@@ -679,54 +678,54 @@ namespace BetterPartyFinder {
internal static class UiCategoryExt {
internal static string? Name(this UiCategory category, DataManager data) {
- var ct = data.GetExcelSheet();
- var addon = data.GetExcelSheet();
+ var ct = data.GetExcelSheet()!;
+ var addon = data.GetExcelSheet()!;
return category switch {
- UiCategory.None => addon.GetRow(1_562).Text.ToString(), // best guess
- UiCategory.DutyRoulette => ct.GetRow((uint) ContentType2.DutyRoulette).Name.ToString(),
- UiCategory.Dungeons => ct.GetRow((uint) ContentType2.Dungeons).Name.ToString(),
- UiCategory.Guildhests => ct.GetRow((uint) ContentType2.Guildhests).Name.ToString(),
- UiCategory.Trials => ct.GetRow((uint) ContentType2.Trials).Name.ToString(),
- UiCategory.Raids => ct.GetRow((uint) ContentType2.Raids).Name.ToString(),
- UiCategory.HighEndDuty => addon.GetRow(10_822).Text.ToString(), // best guess
- UiCategory.Pvp => ct.GetRow((uint) ContentType2.Pvp).Name.ToString(),
- UiCategory.QuestBattles => ct.GetRow((uint) ContentType2.QuestBattles).Name.ToString(),
- UiCategory.Fates => ct.GetRow((uint) ContentType2.Fates).Name.ToString(),
- UiCategory.TreasureHunt => ct.GetRow((uint) ContentType2.TreasureHunt).Name.ToString(),
- UiCategory.TheHunt => addon.GetRow(8_613).Text.ToString(),
- UiCategory.GatheringForays => addon.GetRow(2_306).Text.ToString(),
- UiCategory.DeepDungeons => ct.GetRow((uint) ContentType2.DeepDungeons).Name.ToString(),
- UiCategory.AdventuringForays => addon.GetRow(2_307).Text.ToString(),
+ UiCategory.None => addon.GetRow(1_562)?.Text.ToString(), // best guess
+ UiCategory.DutyRoulette => ct.GetRow((uint) ContentType2.DutyRoulette)?.Name.ToString(),
+ UiCategory.Dungeons => ct.GetRow((uint) ContentType2.Dungeons)?.Name.ToString(),
+ UiCategory.Guildhests => ct.GetRow((uint) ContentType2.Guildhests)?.Name.ToString(),
+ UiCategory.Trials => ct.GetRow((uint) ContentType2.Trials)?.Name.ToString(),
+ UiCategory.Raids => ct.GetRow((uint) ContentType2.Raids)?.Name.ToString(),
+ UiCategory.HighEndDuty => addon.GetRow(10_822)?.Text.ToString(), // best guess
+ UiCategory.Pvp => ct.GetRow((uint) ContentType2.Pvp)?.Name.ToString(),
+ UiCategory.QuestBattles => ct.GetRow((uint) ContentType2.QuestBattles)?.Name.ToString(),
+ UiCategory.Fates => ct.GetRow((uint) ContentType2.Fates)?.Name.ToString(),
+ UiCategory.TreasureHunt => ct.GetRow((uint) ContentType2.TreasureHunt)?.Name.ToString(),
+ UiCategory.TheHunt => addon.GetRow(8_613)?.Text.ToString(),
+ UiCategory.GatheringForays => addon.GetRow(2_306)?.Text.ToString(),
+ UiCategory.DeepDungeons => ct.GetRow((uint) ContentType2.DeepDungeons)?.Name.ToString(),
+ UiCategory.AdventuringForays => addon.GetRow(2_307)?.Text.ToString(),
_ => null,
};
}
internal static bool ListingMatches(this UiCategory category, DataManager data, PartyFinderListing listing) {
- var cr = data.GetExcelSheet();
+ var cr = data.GetExcelSheet()!;
- var isDuty = listing.Category == Category.Duty;
+ var isDuty = listing.Category == DutyCategory.Duty;
var isNormal = listing.DutyType == DutyType.Normal;
var isOther = listing.DutyType == DutyType.Other;
var isNormalDuty = isNormal && isDuty;
return category switch {
UiCategory.None => isOther && isDuty && listing.RawDuty == 0,
- UiCategory.DutyRoulette => listing.DutyType == DutyType.Roulette && isDuty && !cr.GetRow(listing.RawDuty).Unknown10,
+ UiCategory.DutyRoulette => listing.DutyType == DutyType.Roulette && isDuty && (!cr.GetRow(listing.RawDuty)?.Unknown10 ?? false),
UiCategory.Dungeons => isNormalDuty && listing.Duty.Value.ContentType.Row == (uint) ContentType2.Dungeons,
UiCategory.Guildhests => isNormalDuty && listing.Duty.Value.ContentType.Row == (uint) ContentType2.Guildhests,
UiCategory.Trials => isNormalDuty && !listing.Duty.Value.HighEndDuty && listing.Duty.Value.ContentType.Row == (uint) ContentType2.Trials,
UiCategory.Raids => isNormalDuty && !listing.Duty.Value.HighEndDuty && listing.Duty.Value.ContentType.Row == (uint) ContentType2.Raids,
UiCategory.HighEndDuty => isNormalDuty && listing.Duty.Value.HighEndDuty,
- UiCategory.Pvp => listing.DutyType == DutyType.Roulette && isDuty && cr.GetRow(listing.RawDuty).Unknown10
+ UiCategory.Pvp => listing.DutyType == DutyType.Roulette && isDuty && (cr.GetRow(listing.RawDuty)?.Unknown10 ?? false)
|| isNormalDuty && listing.Duty.Value.ContentType.Row == (uint) ContentType2.Pvp,
- UiCategory.QuestBattles => isOther && listing.Category == Category.QuestBattles,
- UiCategory.Fates => isOther && listing.Category == Category.Fates,
- UiCategory.TreasureHunt => isOther && listing.Category == Category.TreasureHunt,
- UiCategory.TheHunt => isOther && listing.Category == Category.TheHunt,
- UiCategory.GatheringForays => isNormal && listing.Category == Category.GatheringForays,
- UiCategory.DeepDungeons => isOther && listing.Category == Category.DeepDungeons,
- UiCategory.AdventuringForays => isNormal && listing.Category == Category.AdventuringForays,
+ UiCategory.QuestBattles => isOther && listing.Category == DutyCategory.QuestBattles,
+ UiCategory.Fates => isOther && listing.Category == DutyCategory.Fates,
+ UiCategory.TreasureHunt => isOther && listing.Category == DutyCategory.TreasureHunt,
+ UiCategory.TheHunt => isOther && listing.Category == DutyCategory.TheHunt,
+ UiCategory.GatheringForays => isNormal && listing.Category == DutyCategory.GatheringForays,
+ UiCategory.DeepDungeons => isOther && listing.Category == DutyCategory.DeepDungeons,
+ UiCategory.AdventuringForays => isNormal && listing.Category == DutyCategory.AdventuringForays,
_ => false,
};
}
diff --git a/BetterPartyFinder/Util.cs b/BetterPartyFinder/Util.cs
index 71948de..031c30e 100755
--- a/BetterPartyFinder/Util.cs
+++ b/BetterPartyFinder/Util.cs
@@ -2,7 +2,7 @@
using System.Globalization;
using System.Linq;
using Dalamud.Data;
-using Dalamud.Game.ClientState.Actors.Types;
+using Dalamud.Game.ClientState.Objects.SubKinds;
using Lumina.Excel.GeneratedSheets;
namespace BetterPartyFinder {
@@ -14,8 +14,8 @@ namespace BetterPartyFinder {
return;
}
- var max = data.GetExcelSheet- ()
- .Where(item => item.EquipSlotCategory.Value.Body != 0)
+ var max = data.GetExcelSheet
- ()!
+ .Where(item => item.EquipSlotCategory.Value!.Body != 0)
.Select(item => item.LevelItem.Value?.RowId)
.Where(level => level != null)
.Cast()
@@ -30,7 +30,7 @@ namespace BetterPartyFinder {
internal static IEnumerable WorldsOnDataCentre(DataManager data, PlayerCharacter character) {
var dcRow = character.HomeWorld.GameData.DataCenter.Row;
- return data.GetExcelSheet()
+ return data.GetExcelSheet()!
.Where(world => world.IsPublic && world.DataCenter.Row == dcRow);
}
}
diff --git a/icon.png b/icon.png
new file mode 100644
index 0000000..afe44a5
Binary files /dev/null and b/icon.png differ
diff --git a/icon.svg b/icon.svg
new file mode 100755
index 0000000..30a859a
--- /dev/null
+++ b/icon.svg
@@ -0,0 +1,94 @@
+
+
+
+