mirror of
https://github.com/D1GQ/BetterAmongUs.git
synced 2026-10-20 01:46:19 +00:00
Support parent settings
This commit is contained in:
1 parent
4e3ae4d99a
commit
d8391b28e7
10 files changed
+111
-48
No files matched your search
@@ -4,7 +4,6 @@ namespace BetterAmongUs;
|
||||
|
||||
public class BetterOptionCheckboxItem : BetterOptionItem
|
||||
{
|
||||
public BetterOptionItem? ThisParent;
|
||||
private ToggleOption? ThisOption;
|
||||
private bool? IsChecked;
|
||||
|
||||
@@ -24,7 +23,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
|
||||
}
|
||||
|
||||
ToggleOption optionBehaviour = UnityEngine.Object.Instantiate<ToggleOption>(gameOptionsMenu.checkboxOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f, -2f);
|
||||
SetUp(optionBehaviour);
|
||||
optionBehaviour.OnValueChanged = new Action<OptionBehaviour>((option) => ValueChanged(id, option));
|
||||
|
||||
@@ -45,6 +44,7 @@ public class BetterOptionCheckboxItem : BetterOptionItem
|
||||
Load(DefaultValue);
|
||||
|
||||
BetterOptionItems.Add(this);
|
||||
obj = optionBehaviour.gameObject;
|
||||
|
||||
if (Parent != null)
|
||||
{
|
||||
@@ -53,10 +53,6 @@ public class BetterOptionCheckboxItem : BetterOptionItem
|
||||
ThisParent = Parent;
|
||||
Parent.ChildrenList.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
SpacingNum += StaticSpacingNumPlus;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -102,5 +98,15 @@ public class BetterOptionCheckboxItem : BetterOptionItem
|
||||
{
|
||||
IsChecked = !IsChecked;
|
||||
BetterDataManager.SaveSetting(Id, IsChecked.ToString());
|
||||
|
||||
if (IsParent)
|
||||
{
|
||||
bool Bool = ShowChildrenCondition();
|
||||
foreach (var item in ChildrenList)
|
||||
{
|
||||
item.obj.SetActive(Bool);
|
||||
}
|
||||
UpdatePositions();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,7 +5,6 @@ namespace BetterAmongUs;
|
||||
|
||||
public class BetterOptionFloatItem : BetterOptionItem
|
||||
{
|
||||
public BetterOptionItem? ThisParent;
|
||||
private NumberOption? ThisOption;
|
||||
public float CurrentValue;
|
||||
public FloatRange floatRange = new(0f, 180f);
|
||||
@@ -33,7 +32,7 @@ public class BetterOptionFloatItem : BetterOptionItem
|
||||
if (values.Length is < 3 or > 3) return null;
|
||||
|
||||
NumberOption optionBehaviour = UnityEngine.Object.Instantiate<NumberOption>(gameOptionsMenu.numberOptionOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f, -2f);
|
||||
SetUp(optionBehaviour);
|
||||
optionBehaviour.OnValueChanged = new Action<OptionBehaviour>((option) => ValueChanged(id, option));
|
||||
|
||||
@@ -69,6 +68,7 @@ public class BetterOptionFloatItem : BetterOptionItem
|
||||
AdjustButtonsActiveState();
|
||||
|
||||
BetterOptionItems.Add(this);
|
||||
obj = optionBehaviour.gameObject;
|
||||
|
||||
if (Parent != null)
|
||||
{
|
||||
@@ -77,10 +77,6 @@ public class BetterOptionFloatItem : BetterOptionItem
|
||||
ThisParent = Parent;
|
||||
Parent.ChildrenList.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
SpacingNum += StaticSpacingNumPlus;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -197,5 +193,14 @@ public class BetterOptionFloatItem : BetterOptionItem
|
||||
|
||||
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
|
||||
{
|
||||
if (IsParent)
|
||||
{
|
||||
bool Bool = ShowChildrenCondition();
|
||||
foreach (var item in ChildrenList)
|
||||
{
|
||||
item.obj.SetActive(Bool);
|
||||
}
|
||||
UpdatePositions();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,6 @@ namespace BetterAmongUs;
|
||||
|
||||
public class BetterOptionIntItem : BetterOptionItem
|
||||
{
|
||||
public BetterOptionItem? ThisParent;
|
||||
private NumberOption? ThisOption;
|
||||
public int CurrentValue;
|
||||
public IntRange intRange = new(0, 180);
|
||||
@@ -32,7 +31,7 @@ public class BetterOptionIntItem : BetterOptionItem
|
||||
if (values.Length is < 3 or > 3) return null;
|
||||
|
||||
NumberOption optionBehaviour = UnityEngine.Object.Instantiate<NumberOption>(gameOptionsMenu.numberOptionOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f, -2f);
|
||||
SetUp(optionBehaviour);
|
||||
optionBehaviour.OnValueChanged = new Action<OptionBehaviour>((option) => ValueChanged(id, option));
|
||||
|
||||
@@ -68,6 +67,7 @@ public class BetterOptionIntItem : BetterOptionItem
|
||||
AdjustButtonsActiveState();
|
||||
|
||||
BetterOptionItems.Add(this);
|
||||
obj = optionBehaviour.gameObject;
|
||||
|
||||
if (Parent != null)
|
||||
{
|
||||
@@ -76,10 +76,6 @@ public class BetterOptionIntItem : BetterOptionItem
|
||||
ThisParent = Parent;
|
||||
Parent.ChildrenList.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
SpacingNum += StaticSpacingNumPlus;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -196,5 +192,14 @@ public class BetterOptionIntItem : BetterOptionItem
|
||||
|
||||
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
|
||||
{
|
||||
if (IsParent)
|
||||
{
|
||||
bool Bool = ShowChildrenCondition();
|
||||
foreach (var item in ChildrenList)
|
||||
{
|
||||
item.obj.SetActive(Bool);
|
||||
}
|
||||
UpdatePositions();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using TMPro;
|
||||
using BetterAmongUs.Patches;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
|
||||
namespace BetterAmongUs;
|
||||
@@ -16,11 +17,48 @@ public class BetterOptionItem
|
||||
public OptionBehaviour? Option;
|
||||
public string? Name = "None";
|
||||
public TextMeshPro? TitleText;
|
||||
public GameObject? obj;
|
||||
|
||||
public BetterOptionItem? ThisParent;
|
||||
public bool IsParent => ChildrenList.Count > 0;
|
||||
public List<BetterOptionItem> ChildrenList = [];
|
||||
public virtual bool ShowChildrenCondition() => false;
|
||||
|
||||
public static void UpdatePositions()
|
||||
{
|
||||
SpacingNum = 0f;
|
||||
|
||||
foreach (var item in BetterOptionItems)
|
||||
{
|
||||
try
|
||||
{
|
||||
item.obj.transform.SetLocalY(2f);
|
||||
|
||||
SpacingNum += item switch
|
||||
{
|
||||
BetterOptionHeaderItem => 0.1f,
|
||||
BetterOptionDividerItem => 0.15f,
|
||||
_ => 0f,
|
||||
};
|
||||
|
||||
item.obj.transform.SetLocalY(2f - 1f * SpacingNum);
|
||||
|
||||
if (item.obj.active == false) continue;
|
||||
|
||||
SpacingNum += item switch
|
||||
{
|
||||
BetterOptionHeaderItem => 0.75f,
|
||||
BetterOptionDividerItem => 0.45f,
|
||||
_ => 0.45f,
|
||||
};
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
GameSettingMenuPatch.BetterSettingsTab.scrollBar.SetYBoundsMax(1.25f * SpacingNum / 2);
|
||||
GameSettingMenuPatch.BetterSettingsTab.scrollBar.ScrollRelative(new(0f, 0f));
|
||||
}
|
||||
|
||||
public void SetUp(OptionBehaviour optionBehaviour)
|
||||
{
|
||||
SetData(optionBehaviour);
|
||||
|
||||
@@ -4,7 +4,6 @@ namespace BetterAmongUs;
|
||||
|
||||
public class BetterOptionStringItem : BetterOptionItem
|
||||
{
|
||||
public BetterOptionItem? ThisParent;
|
||||
private StringOption? ThisOption;
|
||||
public string[] Values = [];
|
||||
public int CurrentValue;
|
||||
@@ -28,7 +27,7 @@ public class BetterOptionStringItem : BetterOptionItem
|
||||
}
|
||||
|
||||
StringOption optionBehaviour = UnityEngine.Object.Instantiate<StringOption>(gameOptionsMenu.stringOptionOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f, -2f);
|
||||
SetUp(optionBehaviour);
|
||||
optionBehaviour.OnValueChanged = new Action<OptionBehaviour>((option) => ValueChanged(id, option));
|
||||
|
||||
@@ -60,6 +59,7 @@ public class BetterOptionStringItem : BetterOptionItem
|
||||
AdjustButtonsActiveState();
|
||||
|
||||
BetterOptionItems.Add(this);
|
||||
obj = optionBehaviour.gameObject;
|
||||
|
||||
if (Parent != null)
|
||||
{
|
||||
@@ -68,10 +68,6 @@ public class BetterOptionStringItem : BetterOptionItem
|
||||
ThisParent = Parent;
|
||||
Parent.ChildrenList.Add(this);
|
||||
}
|
||||
else
|
||||
{
|
||||
SpacingNum += StaticSpacingNumPlus;
|
||||
}
|
||||
|
||||
return this;
|
||||
}
|
||||
@@ -165,5 +161,14 @@ public class BetterOptionStringItem : BetterOptionItem
|
||||
|
||||
public override void ValueChanged(int id, OptionBehaviour optionBehaviour)
|
||||
{
|
||||
if (IsParent)
|
||||
{
|
||||
bool Bool = ShowChildrenCondition();
|
||||
foreach (var item in ChildrenList)
|
||||
{
|
||||
item.obj.SetActive(Bool);
|
||||
}
|
||||
UpdatePositions();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11,13 +11,11 @@ public class BetterOptionDividerItem : BetterOptionItem
|
||||
return this;
|
||||
}
|
||||
|
||||
SpacingNum += 0.15f;
|
||||
|
||||
Tab = gameOptionsMenu;
|
||||
Name = "Divider";
|
||||
CategoryHeaderMasked categoryHeaderMasked = UnityEngine.Object.Instantiate<CategoryHeaderMasked>(gameOptionsMenu.categoryHeaderOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
categoryHeaderMasked.transform.localScale = Vector3.one * 0.63f;
|
||||
categoryHeaderMasked.transform.localPosition = new Vector3(-0.903f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
categoryHeaderMasked.transform.localPosition = new Vector3(-0.903f, 2f, -2f);
|
||||
UnityEngine.Object.Destroy(categoryHeaderMasked.Background.gameObject);
|
||||
UnityEngine.Object.Destroy(categoryHeaderMasked.Title.gameObject);
|
||||
if (categoryHeaderMasked.Divider != null)
|
||||
@@ -25,7 +23,8 @@ public class BetterOptionDividerItem : BetterOptionItem
|
||||
categoryHeaderMasked.Divider.material.SetInt(PlayerMaterial.MaskLayer, maskLayer);
|
||||
}
|
||||
|
||||
SpacingNum += 0.45f;
|
||||
BetterOptionItems.Add(this);
|
||||
obj = categoryHeaderMasked.gameObject;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -11,13 +11,11 @@ public class BetterOptionHeaderItem : BetterOptionItem
|
||||
return this;
|
||||
}
|
||||
|
||||
SpacingNum += 0.1f;
|
||||
|
||||
Tab = gameOptionsMenu;
|
||||
Name = name;
|
||||
CategoryHeaderMasked categoryHeaderMasked = UnityEngine.Object.Instantiate<CategoryHeaderMasked>(gameOptionsMenu.categoryHeaderOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
categoryHeaderMasked.transform.localScale = Vector3.one * 0.63f;
|
||||
categoryHeaderMasked.transform.localPosition = new Vector3(-0.903f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
categoryHeaderMasked.transform.localPosition = new Vector3(-0.903f, 2f, -2f);
|
||||
categoryHeaderMasked.Title.text = name;
|
||||
categoryHeaderMasked.Background.material.SetInt(PlayerMaterial.MaskLayer, maskLayer);
|
||||
if (categoryHeaderMasked.Divider != null)
|
||||
@@ -27,7 +25,8 @@ public class BetterOptionHeaderItem : BetterOptionItem
|
||||
categoryHeaderMasked.Title.fontMaterial.SetFloat("_StencilComp", 3f);
|
||||
categoryHeaderMasked.Title.fontMaterial.SetFloat("_Stencil", maskLayer);
|
||||
|
||||
SpacingNum += 0.75f;
|
||||
BetterOptionItems.Add(this);
|
||||
obj = categoryHeaderMasked.gameObject;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -12,9 +12,8 @@ public class BetterOptionTitleItem : BetterOptionItem
|
||||
}
|
||||
|
||||
ToggleOption optionBehaviour = UnityEngine.Object.Instantiate<ToggleOption>(gameOptionsMenu.checkboxOrigin, Vector3.zero, Quaternion.identity, gameOptionsMenu.settingsContainer);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f - StaticSpacingNum * SpacingNum, -2f);
|
||||
optionBehaviour.transform.localPosition = new Vector3(0.952f, 2f, -2f);
|
||||
SetUp(optionBehaviour);
|
||||
SpacingNum += StaticSpacingNumPlus;
|
||||
|
||||
UnityEngine.Object.Destroy(optionBehaviour.CheckMark.transform.parent.gameObject);
|
||||
UnityEngine.Object.Destroy(optionBehaviour.GetComponent<ToggleOption>());
|
||||
@@ -40,6 +39,8 @@ public class BetterOptionTitleItem : BetterOptionItem
|
||||
TitleText = optionBehaviour.TitleText;
|
||||
|
||||
BetterOptionItems.Add(this);
|
||||
obj = optionBehaviour.gameObject;
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,6 @@ static class GameSettingMenuPatch
|
||||
|
||||
public static void SetupSettings(bool IsPreload = false)
|
||||
{
|
||||
BetterOptionItem.SpacingNum = 0;
|
||||
BetterOptionItem.BetterOptionItems.Clear();
|
||||
TitleList.Clear();
|
||||
|
||||
@@ -56,6 +55,10 @@ static class GameSettingMenuPatch
|
||||
TitleList.Add(new BetterOptionDividerItem().Create(BetterSettingsTab));
|
||||
TitleList.Add(new BetterOptionTitleItem().Create(BetterSettingsTab, $"<color=#f20>Experimental</color>"));
|
||||
BetterGameSettings.ExperimentalDetectInvalidSabotage = new BetterOptionCheckboxItem().Create(100000, BetterSettingsTab, "Detect Invalid Sabotages", false);
|
||||
new BetterOptionCheckboxItem().Create(10000, BetterSettingsTab, "CheckBox Test", true, BetterGameSettings.ExperimentalDetectInvalidSabotage);
|
||||
new BetterOptionStringItem().Create(10001, BetterSettingsTab, "String Test", ["Test 1", "Test 2", "Test 3"], 0, BetterGameSettings.ExperimentalDetectInvalidSabotage);
|
||||
new BetterOptionFloatItem().Create(10002, BetterSettingsTab, "Float Test 1", [0f, 180f, 2.5f], 0f, "", "", BetterGameSettings.ExperimentalDetectInvalidSabotage);
|
||||
new BetterOptionIntItem().Create(10003, BetterSettingsTab, "Int Test", [0, 5, 1], 0, "", "", BetterGameSettings.ExperimentalDetectInvalidSabotage);
|
||||
}
|
||||
|
||||
// Gameplay Settings
|
||||
@@ -76,18 +79,12 @@ static class GameSettingMenuPatch
|
||||
}
|
||||
|
||||
/*
|
||||
new BetterOptionCheckboxItem().Create(0, BetterSettingsTab, "CheckBox Test", true);
|
||||
new BetterOptionStringItem().Create(1, BetterSettingsTab, "String Test", ["Test 1", "Test 2", "Test 3"]);
|
||||
new BetterOptionFloatItem().Create(2, BetterSettingsTab, "Float Test 1", [0f, 180f, 2.5f], 0f, "");
|
||||
new BetterOptionIntItem().Create(5, BetterSettingsTab, "Int Test", [0, 5, 1], 0, "");
|
||||
new BetterOptionCheckboxItem().Create(10000, BetterSettingsTab, "CheckBox Test", true);
|
||||
new BetterOptionStringItem().Create(10001, BetterSettingsTab, "String Test", ["Test 1", "Test 2", "Test 3"], 0);
|
||||
new BetterOptionFloatItem().Create(10002, BetterSettingsTab, "Float Test 1", [0f, 180f, 2.5f], 0f, "", "");
|
||||
new BetterOptionIntItem().Create(10003, BetterSettingsTab, "Int Test", [0, 5, 1], 0, "", "");
|
||||
new BetterOptionHeaderItem().Create(BetterSettingsTab, "<color=#4f92ff>Test Settings 2</color>");
|
||||
*/
|
||||
|
||||
if (BetterSettingsTab != null)
|
||||
{
|
||||
BetterSettingsTab.scrollBar.SetYBoundsMax(1.25f * BetterOptionItem.SpacingNum / 2);
|
||||
BetterSettingsTab.InitializeControllerNavigation();
|
||||
}
|
||||
}
|
||||
|
||||
private static void Initialize()
|
||||
@@ -102,8 +99,15 @@ static class GameSettingMenuPatch
|
||||
{
|
||||
item.TitleText.text = item.Name;
|
||||
}
|
||||
|
||||
if (item.ThisParent != null)
|
||||
{
|
||||
item.obj.SetActive(item.ThisParent.ShowChildrenCondition());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
BetterOptionItem.UpdatePositions();
|
||||
}, 0.005f, shoudLog: false);
|
||||
}
|
||||
|
||||
@@ -156,6 +160,7 @@ static class GameSettingMenuPatch
|
||||
BetterSettingsButton.OnClick.AddListener(new Action(() =>
|
||||
{
|
||||
__instance.ChangeTab(3, false);
|
||||
BetterOptionItem.UpdatePositions();
|
||||
}));
|
||||
|
||||
BetterSettingsTab = UnityEngine.Object.Instantiate(__instance.GameSettingsTab, __instance.GameSettingsTab.transform.parent);
|
||||
|
||||
@@ -27,8 +27,8 @@ public class Main : BasePlugin
|
||||
public const string HotfixNum = "0";
|
||||
public const bool IsHotFix = false;
|
||||
public const string PluginGuid = "com.d1gq.betteramongus";
|
||||
public const string PluginVersion = "1.1.0";
|
||||
public const string ReleaseDate = "08.24.2024"; // mm/dd/yyyy
|
||||
public const string PluginVersion = "1.1.1";
|
||||
public const string ReleaseDate = "08.25.2024"; // mm/dd/yyyy
|
||||
public const string Github = "https://github.com/D1GQ/BetterAmongUs-Public";
|
||||
public const string Discord = "https://discord.gg/vjYrXpzNAn";
|
||||
|
||||
|
||||
Reference in new issue
Block a user