Save wiki preferences in config file

This commit is contained in:
Atony committed 2026-10-11 18:52:29 -05:00
1 parent a6dab42df3
commit 5d354eff5e
2 files changed
+110 -42

No files matched your search

+22
View File
@@ -4,6 +4,7 @@ using BepInEx;
using BepInEx.Configuration; using BepInEx.Configuration;
using BepInEx.Unity.IL2CPP; using BepInEx.Unity.IL2CPP;
using HarmonyLib; using HarmonyLib;
using MiraAPI.Patches;
using MiraAPI.Patches.Roles; using MiraAPI.Patches.Roles;
using MiraAPI.PluginLoading; using MiraAPI.PluginLoading;
using MiraAPI.Translation; using MiraAPI.Translation;
@@ -63,9 +64,30 @@ public partial class MiraApiPlugin : BasePlugin, IMiraPlugin
private static MiraPluginManager? PluginManager { get; set; } private static MiraPluginManager? PluginManager { get; set; }
internal Harmony Harmony { get; } = new(Id); internal Harmony Harmony { get; } = new(Id);
public static ConfigEntry<SortingGroups> WikiSortingGroup { get; private set; }
public static ConfigEntry<SortingMethod> WikiSortingMethod { get; private set; }
public static ConfigEntry<SortingFilter> WikiSortingFilter { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
public override void Load() public override void Load()
{ {
WikiSortingGroup = Config.Bind(
"Wiki",
"WikiSortingGroup",
SortingGroups.Ungrouped,
"Determines how clusters of roles / modifiers are grouped together, if at all.");
WikiSortingMethod = Config.Bind(
"Wiki",
"WikiSortingMethod",
SortingMethod.Alphabetical,
"Determines if the list of roles / modifiers are organized in ascending or descending order.");
WikiSortingFilter = Config.Bind(
"Wiki",
"WikiSortingFilter",
SortingFilter.AllRoles,
"Determines what roles / modifiers are displayed at once.");
Harmony.PatchAll(); Harmony.PatchAll();
RoleOptionsCollectionPatch.PatchRoleMethods(Harmony); RoleOptionsCollectionPatch.PatchRoleMethods(Harmony);
UiResetEvents.Initialize(); UiResetEvents.Initialize();
+88 -42
View File
@@ -346,6 +346,10 @@ public static class RoleGuidePatches
return; return;
} }
_sortFilter = MiraApiPlugin.WikiSortingFilter.Value;
_sortMethod = MiraApiPlugin.WikiSortingMethod.Value;
_sortGrouping = MiraApiPlugin.WikiSortingGroup.Value;
if (_populate != null) if (_populate != null)
{ {
Coroutines.Stop(_populate); Coroutines.Stop(_populate);
@@ -368,8 +372,8 @@ public static class RoleGuidePatches
SearchSortingOrderButton, SearchSortingOrderButton,
"SearchSortingOrderButton", "SearchSortingOrderButton",
SwitchMethod, SwitchMethod,
MiraAssets.SortingAzIdleSprite, GetSortMethodSprite(_sortMethod, false),
MiraAssets.SortingAzHoverSprite, GetSortMethodSprite(_sortMethod, true),
new Vector3(2.4f, 0.765f, -0.1f), new Vector3(2.4f, 0.765f, -0.1f),
out _searchSortingOrderIdle, out _searchSortingOrderIdle,
out _searchSortingOrderHover); out _searchSortingOrderHover);
@@ -383,8 +387,8 @@ public static class RoleGuidePatches
SearchSortingGroupButton, SearchSortingGroupButton,
"SearchSortingGroupButton", "SearchSortingGroupButton",
SwitchGrouping, SwitchGrouping,
MiraAssets.GroupNoneIdleSprite, GetSortGroupSprite(_sortGrouping, false),
MiraAssets.GroupNoneHoverSprite, GetSortGroupSprite(_sortGrouping, true),
new Vector3(1.7f, 0.765f, -0.1f), new Vector3(1.7f, 0.765f, -0.1f),
out _searchSortingGroupIdle, out _searchSortingGroupIdle,
out _searchSortingGroupHover); out _searchSortingGroupHover);
@@ -398,8 +402,8 @@ public static class RoleGuidePatches
SearchSortingFilterButton, SearchSortingFilterButton,
"SearchSortingFilterButton", "SearchSortingFilterButton",
SwitchFilter, SwitchFilter,
MiraAssets.VisibleOnIdleSprite, GetSortFilterSprite(_sortFilter, false),
MiraAssets.VisibleOnHoverSprite, GetSortFilterSprite(_sortFilter, true),
new Vector3(1f, 0.765f, -0.1f), new Vector3(1f, 0.765f, -0.1f),
out _searchSortingFilterIdle, out _searchSortingFilterIdle,
out _searchSortingFilterHover); out _searchSortingFilterHover);
@@ -1042,25 +1046,40 @@ public static class RoleGuidePatches
_sortFilter = SortingFilter.EnabledOnly; _sortFilter = SortingFilter.EnabledOnly;
} }
switch (_sortFilter) MiraApiPlugin.WikiSortingFilter.Value = _sortFilter;
{
case SortingFilter.AllRoles: _searchSortingFilterIdle.sprite = GetSortFilterSprite(_sortFilter, false);
_searchSortingFilterIdle.sprite = MiraAssets.VisibleAllIdleSprite; _searchSortingFilterHover.sprite = GetSortFilterSprite(_sortFilter, true);
_searchSortingFilterHover.sprite = MiraAssets.VisibleAllHoverSprite;
break;
case SortingFilter.DisabledOnly:
_searchSortingFilterIdle.sprite = MiraAssets.VisibleOffIdleSprite;
_searchSortingFilterHover.sprite = MiraAssets.VisibleOffHoverSprite;
break;
default:
_searchSortingFilterIdle.sprite = MiraAssets.VisibleOnIdleSprite;
_searchSortingFilterHover.sprite = MiraAssets.VisibleOnHoverSprite;
break;
}
RefreshActiveTab(false); RefreshActiveTab(false);
} }
private static Sprite GetSortFilterSprite(SortingFilter value, bool hover)
{
if (hover)
{
switch (value)
{
case SortingFilter.AllRoles:
return MiraAssets.VisibleAllHoverSprite;
case SortingFilter.DisabledOnly:
return MiraAssets.VisibleOffHoverSprite;
default:
return MiraAssets.VisibleOnHoverSprite;
}
}
switch (value)
{
case SortingFilter.AllRoles:
return MiraAssets.VisibleAllIdleSprite;
case SortingFilter.DisabledOnly:
return MiraAssets.VisibleOffIdleSprite;
default:
return MiraAssets.VisibleOnIdleSprite;
}
}
public static void SwitchMethod() public static void SwitchMethod()
{ {
var stepUp = (SortingMethod)((int)_sortMethod + 1); var stepUp = (SortingMethod)((int)_sortMethod + 1);
@@ -1073,16 +1092,28 @@ public static class RoleGuidePatches
_sortMethod = SortingMethod.Alphabetical; _sortMethod = SortingMethod.Alphabetical;
} }
_searchSortingOrderIdle.sprite = _sortMethod is SortingMethod.Alphabetical MiraApiPlugin.WikiSortingMethod.Value = _sortMethod;
? MiraAssets.SortingAzIdleSprite
: MiraAssets.SortingZaIdleSprite; _searchSortingOrderIdle.sprite = GetSortMethodSprite(_sortMethod, false);
_searchSortingOrderHover.sprite = _sortMethod is SortingMethod.Alphabetical _searchSortingOrderHover.sprite = GetSortMethodSprite(_sortMethod, true);
? MiraAssets.SortingAzHoverSprite
: MiraAssets.SortingZaHoverSprite;
RefreshActiveTab(false); RefreshActiveTab(false);
} }
private static Sprite GetSortMethodSprite(SortingMethod value, bool hover)
{
if (hover)
{
return value is SortingMethod.Alphabetical
? MiraAssets.SortingAzHoverSprite
: MiraAssets.SortingZaHoverSprite;
}
return _sortMethod is SortingMethod.Alphabetical
? MiraAssets.SortingAzIdleSprite
: MiraAssets.SortingZaIdleSprite;
}
public static void SwitchGrouping() public static void SwitchGrouping()
{ {
var stepUp = (SortingGroups)((int)_sortGrouping + 1); var stepUp = (SortingGroups)((int)_sortGrouping + 1);
@@ -1095,25 +1126,40 @@ public static class RoleGuidePatches
_sortGrouping = SortingGroups.Ungrouped; _sortGrouping = SortingGroups.Ungrouped;
} }
switch (_sortGrouping) MiraApiPlugin.WikiSortingGroup.Value = _sortGrouping;
{
case SortingGroups.Faction: _searchSortingGroupIdle.sprite = GetSortGroupSprite(_sortGrouping, false);
_searchSortingGroupIdle.sprite = MiraAssets.GroupFactionIdleSprite; _searchSortingGroupHover.sprite = GetSortGroupSprite(_sortGrouping, true);
_searchSortingGroupHover.sprite = MiraAssets.GroupFactionHoverSprite;
break;
case SortingGroups.AmountChance:
_searchSortingGroupIdle.sprite = MiraAssets.GroupCountIdleSprite;
_searchSortingGroupHover.sprite = MiraAssets.GroupCountHoverSprite;
break;
default:
_searchSortingGroupIdle.sprite = MiraAssets.GroupNoneIdleSprite;
_searchSortingGroupHover.sprite = MiraAssets.GroupNoneHoverSprite;
break;
}
RefreshActiveTab(false); RefreshActiveTab(false);
} }
private static Sprite GetSortGroupSprite(SortingGroups value, bool hover)
{
if (hover)
{
switch (value)
{
case SortingGroups.Faction:
return MiraAssets.GroupFactionHoverSprite;
case SortingGroups.AmountChance:
return MiraAssets.GroupCountHoverSprite;
default:
return MiraAssets.GroupNoneHoverSprite;
}
}
switch (value)
{
case SortingGroups.Faction:
return MiraAssets.GroupFactionIdleSprite;
case SortingGroups.AmountChance:
return MiraAssets.GroupCountIdleSprite;
default:
return MiraAssets.GroupNoneIdleSprite;
}
}
private static void CopyTextLayout(TextMeshPro source, TextMeshPro target) private static void CopyTextLayout(TextMeshPro source, TextMeshPro target)
{ {
target.font = source.font; target.font = source.font;