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.Unity.IL2CPP;
using HarmonyLib;
using MiraAPI.Patches;
using MiraAPI.Patches.Roles;
using MiraAPI.PluginLoading;
using MiraAPI.Translation;
@@ -63,9 +64,30 @@ public partial class MiraApiPlugin : BasePlugin, IMiraPlugin
private static MiraPluginManager? PluginManager { get; set; }
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 />
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();
RoleOptionsCollectionPatch.PatchRoleMethods(Harmony);
UiResetEvents.Initialize();
+88 -42
View File
@@ -346,6 +346,10 @@ public static class RoleGuidePatches
return;
}
_sortFilter = MiraApiPlugin.WikiSortingFilter.Value;
_sortMethod = MiraApiPlugin.WikiSortingMethod.Value;
_sortGrouping = MiraApiPlugin.WikiSortingGroup.Value;
if (_populate != null)
{
Coroutines.Stop(_populate);
@@ -368,8 +372,8 @@ public static class RoleGuidePatches
SearchSortingOrderButton,
"SearchSortingOrderButton",
SwitchMethod,
MiraAssets.SortingAzIdleSprite,
MiraAssets.SortingAzHoverSprite,
GetSortMethodSprite(_sortMethod, false),
GetSortMethodSprite(_sortMethod, true),
new Vector3(2.4f, 0.765f, -0.1f),
out _searchSortingOrderIdle,
out _searchSortingOrderHover);
@@ -383,8 +387,8 @@ public static class RoleGuidePatches
SearchSortingGroupButton,
"SearchSortingGroupButton",
SwitchGrouping,
MiraAssets.GroupNoneIdleSprite,
MiraAssets.GroupNoneHoverSprite,
GetSortGroupSprite(_sortGrouping, false),
GetSortGroupSprite(_sortGrouping, true),
new Vector3(1.7f, 0.765f, -0.1f),
out _searchSortingGroupIdle,
out _searchSortingGroupHover);
@@ -398,8 +402,8 @@ public static class RoleGuidePatches
SearchSortingFilterButton,
"SearchSortingFilterButton",
SwitchFilter,
MiraAssets.VisibleOnIdleSprite,
MiraAssets.VisibleOnHoverSprite,
GetSortFilterSprite(_sortFilter, false),
GetSortFilterSprite(_sortFilter, true),
new Vector3(1f, 0.765f, -0.1f),
out _searchSortingFilterIdle,
out _searchSortingFilterHover);
@@ -1042,25 +1046,40 @@ public static class RoleGuidePatches
_sortFilter = SortingFilter.EnabledOnly;
}
switch (_sortFilter)
{
case SortingFilter.AllRoles:
_searchSortingFilterIdle.sprite = MiraAssets.VisibleAllIdleSprite;
_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;
}
MiraApiPlugin.WikiSortingFilter.Value = _sortFilter;
_searchSortingFilterIdle.sprite = GetSortFilterSprite(_sortFilter, false);
_searchSortingFilterHover.sprite = GetSortFilterSprite(_sortFilter, true);
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()
{
var stepUp = (SortingMethod)((int)_sortMethod + 1);
@@ -1073,16 +1092,28 @@ public static class RoleGuidePatches
_sortMethod = SortingMethod.Alphabetical;
}
_searchSortingOrderIdle.sprite = _sortMethod is SortingMethod.Alphabetical
? MiraAssets.SortingAzIdleSprite
: MiraAssets.SortingZaIdleSprite;
_searchSortingOrderHover.sprite = _sortMethod is SortingMethod.Alphabetical
? MiraAssets.SortingAzHoverSprite
: MiraAssets.SortingZaHoverSprite;
MiraApiPlugin.WikiSortingMethod.Value = _sortMethod;
_searchSortingOrderIdle.sprite = GetSortMethodSprite(_sortMethod, false);
_searchSortingOrderHover.sprite = GetSortMethodSprite(_sortMethod, true);
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()
{
var stepUp = (SortingGroups)((int)_sortGrouping + 1);
@@ -1095,25 +1126,40 @@ public static class RoleGuidePatches
_sortGrouping = SortingGroups.Ungrouped;
}
switch (_sortGrouping)
{
case SortingGroups.Faction:
_searchSortingGroupIdle.sprite = MiraAssets.GroupFactionIdleSprite;
_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;
}
MiraApiPlugin.WikiSortingGroup.Value = _sortGrouping;
_searchSortingGroupIdle.sprite = GetSortGroupSprite(_sortGrouping, false);
_searchSortingGroupHover.sprite = GetSortGroupSprite(_sortGrouping, true);
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)
{
target.font = source.font;