mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
87 lines
2.5 KiB
C#
87 lines
2.5 KiB
C#
using BetterAmongUs.Helpers;
|
|
using UnityEngine;
|
|
|
|
namespace BetterAmongUs.Items.OptionItems;
|
|
|
|
internal class OptionCheckboxItem : OptionItem<bool>
|
|
{
|
|
internal override bool ShowChildren => base.ShowChildren && Value;
|
|
|
|
internal static OptionCheckboxItem Create(int id, OptionTab tab, string tranStr, bool defaultValue, OptionItem parent = null)
|
|
{
|
|
if (GetOptionById(id) is OptionCheckboxItem checkboxItem)
|
|
{
|
|
checkboxItem.CreateBehavior();
|
|
return checkboxItem;
|
|
}
|
|
|
|
OptionCheckboxItem Item = new();
|
|
AllTBROptions.Add(Item);
|
|
Item._id = id;
|
|
Item.Tab = tab;
|
|
Item.Translation = tranStr;
|
|
Item.DefaultValue = defaultValue;
|
|
|
|
if (parent != null)
|
|
{
|
|
Item.Parent = parent;
|
|
parent.Children.Add(Item);
|
|
}
|
|
|
|
Item.CreateBehavior();
|
|
return Item;
|
|
}
|
|
|
|
protected override void CreateBehavior()
|
|
{
|
|
TryLoad();
|
|
if (!GameSettingMenu.Instance) return;
|
|
AllTBROptionsTemp.Add(this);
|
|
var ToggleOption = UnityEngine.Object.Instantiate(Tab.AUTab.checkboxOrigin, Tab.AUTab.settingsContainer);
|
|
Option = ToggleOption;
|
|
Obj = Option.gameObject;
|
|
Option.enabled = false;
|
|
Tab.Children.Add(this);
|
|
TitleTMP = ToggleOption.TitleText;
|
|
SetupText(ToggleOption.TitleText);
|
|
SetupOptionBehavior();
|
|
SetOptionVisuals();
|
|
}
|
|
|
|
protected override void SetupOptionBehavior()
|
|
{
|
|
if (Option is ToggleOption toggleOption)
|
|
{
|
|
SetupAUOption(Option);
|
|
toggleOption.DestroyTextTranslators();
|
|
toggleOption.TitleText.text = Name;
|
|
var button = toggleOption.buttons[0];
|
|
button.OnClick = new();
|
|
button.OnClick.AddListener((Action)(() => SetValue(!Value)));
|
|
}
|
|
}
|
|
|
|
internal override void UpdateVisuals(bool updateTabVisuals = true)
|
|
{
|
|
if (Option is ToggleOption toggleOption)
|
|
{
|
|
toggleOption.CheckMark.enabled = Value;
|
|
}
|
|
|
|
if (updateTabVisuals)
|
|
{
|
|
Tab.UpdateVisuals();
|
|
}
|
|
}
|
|
|
|
internal override string ValueAsString()
|
|
{
|
|
Color color = Value ? Color.green : Color.red;
|
|
string @bool = Value ? "On" : "Off";
|
|
return $"<color={Colors.Color32ToHex(color)}>{@bool}</color>";
|
|
}
|
|
|
|
internal override bool GetBool() => GetValue();
|
|
internal override bool Is(bool @bool) => @bool == GetBool();
|
|
}
|