From 7afd899e567bfa317f83227c864460b80ccb44ae Mon Sep 17 00:00:00 2001 From: Atony <75191600+AtonyGit@users.noreply.github.com> Date: Fri, 17 Jul 2026 15:47:53 -0500 Subject: [PATCH] Improve example options --- .../Options/Roles/TeleporterOptions.cs | 2 +- MiraAPI/GameOptions/AbstractOptionGroup.cs | 33 +++++++++++++++++-- 2 files changed, 31 insertions(+), 4 deletions(-) diff --git a/MiraAPI.Example/Options/Roles/TeleporterOptions.cs b/MiraAPI.Example/Options/Roles/TeleporterOptions.cs index b6d02a4..d05569b 100644 --- a/MiraAPI.Example/Options/Roles/TeleporterOptions.cs +++ b/MiraAPI.Example/Options/Roles/TeleporterOptions.cs @@ -6,7 +6,7 @@ using MiraAPI.Utilities; namespace MiraAPI.Example.Options.Roles; -public class TeleporterOptions : AbstractOptionGroup +public class TeleporterOptions : AbstractRoleOptionGroup { public override string GroupName => "Teleporter"; diff --git a/MiraAPI/GameOptions/AbstractOptionGroup.cs b/MiraAPI/GameOptions/AbstractOptionGroup.cs index 07d008a..8be08c6 100644 --- a/MiraAPI/GameOptions/AbstractOptionGroup.cs +++ b/MiraAPI/GameOptions/AbstractOptionGroup.cs @@ -1,8 +1,10 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; +using System.Linq; using Il2CppInterop.Runtime.Attributes; using MiraAPI.Modifiers; +using MiraAPI.Roles; using TMPro; using UnityEngine; @@ -79,9 +81,7 @@ public abstract class AbstractOptionGroup : AbstractOptionGroup where T : IOp /// public override Type OptionableType => typeof(T); - /// - /// Gets a value indicating which menu the group is in. - /// + /// public override MenuCategory ParentMenu { get @@ -100,6 +100,33 @@ public abstract class AbstractOptionGroup : AbstractOptionGroup where T : IOp } } +/// +/// Base class for option groups. An option group is a collection of options that are displayed together in the options menu. +/// +/// The custom role that the group is for. +public abstract class AbstractRoleOptionGroup() : AbstractOptionGroup where T : ICustomRole +{ + /// + public override Type OptionableType => typeof(T); + + /// + public override MenuCategory ParentMenu => MenuCategory.Roles; + + /// + public override OptionNotifConfiguration Configuration + { + get + { + var role = CustomRoleManager.CustomMiraRoles.FirstOrDefault(x => x.GetType() == OptionableType); + if (role == null) + { + return new(new Color(0.7333f, 0.7333f, 0.7333f, 1)); + } + return new(role.RoleColor, role.Configuration.IconTmp); + } + } +} + /// /// Menu categories for option groups. ///