349 lines
12 KiB
C#
349 lines
12 KiB
C#
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
|
|
public class GonerMenu_Settings : MonoBehaviour
|
|
{
|
|
public enum CurrentSettingsMenuState
|
|
{
|
|
NoTabSelected = 0,
|
|
TabSelected = 1,
|
|
OptionSelected = 2
|
|
}
|
|
|
|
public enum SettingsMenuTabs
|
|
{
|
|
GAME = 0,
|
|
AUDIO = 1,
|
|
CONTROLS = 2,
|
|
ACCESSIBILITY = 3
|
|
}
|
|
|
|
public bool SettingsMenuOpen;
|
|
|
|
[Header("-= Main =-")]
|
|
public CurrentSettingsMenuState CurrentMenuState;
|
|
|
|
public SettingsMenuTabs CurrentSelectedTab;
|
|
|
|
[Header("-= References =-")]
|
|
[SerializeField]
|
|
private SettingsMenuTab[] SelectableTabs;
|
|
|
|
[SerializeField]
|
|
private RectTransform Soul;
|
|
|
|
[SerializeField]
|
|
private GonerMenu_SettingsSection[] SettingSections;
|
|
|
|
[SerializeField]
|
|
private GonerMenu GonerMenu;
|
|
|
|
[SerializeField]
|
|
private GameObject NewMainMenu_ConsoleMenu;
|
|
|
|
[SerializeField]
|
|
private GameObject NewMainMenu_SettingsParentGameobject;
|
|
|
|
[Header("Description")]
|
|
[SerializeField]
|
|
private TextMeshProUGUI CurrentSelectedTitle;
|
|
|
|
[SerializeField]
|
|
private TextMeshProUGUI CurrentSelectedDescription;
|
|
|
|
[Header("-= Sounds =-")]
|
|
public AudioSource source;
|
|
|
|
public AudioClip SettingSound_Move;
|
|
|
|
public AudioClip SettingSound_Select;
|
|
|
|
public AudioClip SettingSound_Tick;
|
|
|
|
public AudioClip SettingSound_Blip;
|
|
|
|
public AudioClip SettingSound_BackOut;
|
|
|
|
public AudioClip SettingSound_Explosion;
|
|
|
|
[Header("-= Dyslexic Font Setup -=")]
|
|
[SerializeField]
|
|
private List<TextMeshProUGUI> FontsAffectedByDyslexic = new List<TextMeshProUGUI>();
|
|
|
|
[SerializeField]
|
|
private TMP_FontAsset defaultFont;
|
|
|
|
[SerializeField]
|
|
private TMP_FontAsset dyslexicFont;
|
|
|
|
private int CurrentTabSelected;
|
|
|
|
private int CurrentSettingSelected;
|
|
|
|
private bool hasUpdatedFontsDyslexic;
|
|
|
|
private GonerMenu_SettingsSection CurrentSection;
|
|
|
|
private static GonerMenu_Settings instance;
|
|
|
|
public static GonerMenu_Settings Instance => instance;
|
|
|
|
private void Awake()
|
|
{
|
|
if (GonerMenu != null)
|
|
{
|
|
if (instance != null && instance != this)
|
|
{
|
|
Object.Destroy(base.gameObject);
|
|
}
|
|
else
|
|
{
|
|
instance = this;
|
|
}
|
|
}
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
if (SettingsMenuOpen)
|
|
{
|
|
if (CurrentMenuState == CurrentSettingsMenuState.NoTabSelected)
|
|
{
|
|
NoTabSelectedUpdate();
|
|
}
|
|
else if (CurrentMenuState == CurrentSettingsMenuState.TabSelected)
|
|
{
|
|
TabSelectedUpdate();
|
|
}
|
|
else
|
|
{
|
|
OptionSelectedUpdate();
|
|
}
|
|
if (!hasUpdatedFontsDyslexic)
|
|
{
|
|
hasUpdatedFontsDyslexic = true;
|
|
UpdateSettingFontsDyslexic();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
hasUpdatedFontsDyslexic = false;
|
|
SettingsMenuOffUdpate();
|
|
}
|
|
if (!GonerMenu.Instance.GonerMenuOpen && GonerMenu != null)
|
|
{
|
|
SettingsMenuOpen = false;
|
|
CurrentMenuState = CurrentSettingsMenuState.NoTabSelected;
|
|
}
|
|
if (GonerMenu == null)
|
|
{
|
|
SettingsMenuOpen = true;
|
|
}
|
|
}
|
|
|
|
private void SettingsMenuOffUdpate()
|
|
{
|
|
for (int i = 0; i < SelectableTabs.Length; i++)
|
|
{
|
|
SelectableTabs[i].TabBackground.color = Color.white;
|
|
SelectableTabs[i].TabIcon.color = Color.white;
|
|
SelectableTabs[i].TabText.color = Color.white;
|
|
SelectableTabs[i].Tabs_TargetSize = 0.95f;
|
|
}
|
|
}
|
|
|
|
private void NoTabSelectedUpdate()
|
|
{
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Left))
|
|
{
|
|
CurrentTabSelected--;
|
|
source.PlayOneShot(SettingSound_Move);
|
|
CurrentSettingSelected = 0;
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Right))
|
|
{
|
|
CurrentTabSelected++;
|
|
source.PlayOneShot(SettingSound_Move);
|
|
CurrentSettingSelected = 0;
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Confirm))
|
|
{
|
|
source.PlayOneShot(SettingSound_Select);
|
|
OpenSettingsTab(SelectableTabs[CurrentTabSelected].TabToOpen);
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Down))
|
|
{
|
|
source.PlayOneShot(SettingSound_Move);
|
|
CurrentSettingSelected = 0;
|
|
OpenSettingsTab(SelectableTabs[CurrentTabSelected].TabToOpen);
|
|
}
|
|
if (CurrentTabSelected < 0)
|
|
{
|
|
CurrentTabSelected = SelectableTabs.Length - 1;
|
|
}
|
|
if (CurrentTabSelected > SelectableTabs.Length - 1)
|
|
{
|
|
CurrentTabSelected = 0;
|
|
}
|
|
GonerMenu_SettingsSection[] settingSections = SettingSections;
|
|
for (int i = 0; i < settingSections.Length; i++)
|
|
{
|
|
settingSections[i].gameObject.SetActive(value: false);
|
|
}
|
|
SettingSections[CurrentTabSelected].gameObject.SetActive(value: true);
|
|
for (int j = 0; j < SelectableTabs.Length; j++)
|
|
{
|
|
SelectableTabs[j].TabBackground.color = Color.white;
|
|
SelectableTabs[j].TabIcon.color = Color.white;
|
|
SelectableTabs[j].TabText.color = Color.white;
|
|
SelectableTabs[j].Tabs_TargetSize = 0.95f;
|
|
SelectableTabs[CurrentTabSelected].Tabs_TargetSize = 1.3f;
|
|
if (GonerMenu != null)
|
|
{
|
|
SelectableTabs[j].Tab.transform.localScale = Vector3.Lerp(SelectableTabs[j].Tab.transform.localScale, Vector3.one * SelectableTabs[j].Tabs_TargetSize, 15f * Time.unscaledDeltaTime);
|
|
}
|
|
SelectableTabs[CurrentTabSelected].TabBackground.color = Color.yellow;
|
|
SelectableTabs[CurrentTabSelected].TabIcon.color = Color.yellow;
|
|
SelectableTabs[CurrentTabSelected].TabText.color = Color.yellow;
|
|
}
|
|
if (GonerMenu != null)
|
|
{
|
|
GonerMenu.TargetSoulPosition = new Vector2(-1995f, GonerMenu.TargetSoulPosition.y);
|
|
}
|
|
else
|
|
{
|
|
Soul.position = new Vector2(-1935f, 5000f);
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Cancel))
|
|
{
|
|
if (GonerMenu != null)
|
|
{
|
|
SettingsMenuOpen = false;
|
|
GonerMenu.CurrentMenuState = "Default";
|
|
GonerMenu.CurrentCursorPosition = 1;
|
|
GonerMenu.GonerMenuSource.PlayOneShot(SettingSound_BackOut);
|
|
}
|
|
else
|
|
{
|
|
SettingsMenuOpen = false;
|
|
NewMainMenuManager.instance.MenuSource.PlayOneShot(SettingSound_BackOut);
|
|
NewMainMenu_SettingsParentGameobject.SetActive(value: false);
|
|
NewMainMenu_ConsoleMenu.SetActive(value: true);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void TabSelectedUpdate()
|
|
{
|
|
for (int i = 0; i < SelectableTabs.Length; i++)
|
|
{
|
|
SelectableTabs[i].TabBackground.color = Color.grey;
|
|
SelectableTabs[i].TabIcon.color = Color.grey;
|
|
SelectableTabs[i].TabText.color = Color.grey;
|
|
SelectableTabs[i].Tabs_TargetSize = 0.7f;
|
|
SelectableTabs[CurrentTabSelected].Tabs_TargetSize = 1f;
|
|
if (GonerMenu != null)
|
|
{
|
|
SelectableTabs[i].Tab.transform.localScale = Vector3.Lerp(SelectableTabs[i].Tab.transform.localScale, Vector3.one * SelectableTabs[i].Tabs_TargetSize, 15f * Time.unscaledDeltaTime);
|
|
}
|
|
SelectableTabs[CurrentTabSelected].TabBackground.color = Color.yellow;
|
|
SelectableTabs[CurrentTabSelected].TabIcon.color = Color.yellow;
|
|
SelectableTabs[CurrentTabSelected].TabText.color = Color.yellow;
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Up))
|
|
{
|
|
CurrentSettingSelected--;
|
|
source.PlayOneShot(SettingSound_Move);
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Down))
|
|
{
|
|
CurrentSettingSelected++;
|
|
source.PlayOneShot(SettingSound_Move);
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Confirm))
|
|
{
|
|
CurrentSection.Settings[CurrentSettingSelected].CurrentlySelected = true;
|
|
CurrentMenuState = CurrentSettingsMenuState.OptionSelected;
|
|
source.PlayOneShot(SettingSound_Select);
|
|
}
|
|
if (CurrentSettingSelected < 0)
|
|
{
|
|
CurrentSettingSelected = CurrentSection.Settings.Length - 1;
|
|
}
|
|
if (CurrentSettingSelected > CurrentSection.Settings.Length - 1)
|
|
{
|
|
CurrentSettingSelected = 0;
|
|
}
|
|
if (CurrentSection != null)
|
|
{
|
|
CurrentSelectedTitle.text = CurrentSection.Settings[CurrentSettingSelected].SettingsElementName;
|
|
CurrentSelectedDescription.text = CurrentSection.Settings[CurrentSettingSelected].SettingsDescription;
|
|
}
|
|
if (GonerMenu != null)
|
|
{
|
|
GonerMenu.TargetSoulPosition = new Vector2(-550f, CurrentSection.Settings[CurrentSettingSelected].transform.localPosition.y - 126.5f);
|
|
}
|
|
else
|
|
{
|
|
Soul.localPosition = new Vector2(-550f * base.transform.localScale.x, (CurrentSection.Settings[CurrentSettingSelected].transform.localPosition.y - 126.5f) * base.transform.localScale.x);
|
|
}
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Cancel))
|
|
{
|
|
CurrentMenuState = CurrentSettingsMenuState.NoTabSelected;
|
|
CurrentSection = null;
|
|
CurrentSelectedTitle.text = "";
|
|
CurrentSelectedDescription.text = "";
|
|
source.PlayOneShot(SettingSound_BackOut);
|
|
}
|
|
}
|
|
|
|
private void OptionSelectedUpdate()
|
|
{
|
|
if (Input.GetKeyDown(PlayerInput.Instance.Key_Cancel) && CurrentSection.Settings[CurrentSettingSelected].CanBeCanceled)
|
|
{
|
|
CurrentSection.Settings[CurrentSettingSelected].CurrentlySelected = false;
|
|
CurrentMenuState = CurrentSettingsMenuState.TabSelected;
|
|
source.PlayOneShot(SettingSound_BackOut);
|
|
}
|
|
}
|
|
|
|
public void CancelOutOfCurrentSetting()
|
|
{
|
|
CurrentSection.Settings[CurrentSettingSelected].CurrentlySelected = false;
|
|
CurrentMenuState = CurrentSettingsMenuState.TabSelected;
|
|
source.PlayOneShot(SettingSound_BackOut);
|
|
}
|
|
|
|
private void OpenSettingsTab(SettingsMenuTabs tab)
|
|
{
|
|
CurrentSelectedTab = tab;
|
|
CurrentMenuState = CurrentSettingsMenuState.TabSelected;
|
|
GonerMenu_SettingsSection[] settingSections = SettingSections;
|
|
foreach (GonerMenu_SettingsSection gonerMenu_SettingsSection in settingSections)
|
|
{
|
|
if (gonerMenu_SettingsSection.ThisAssosciatedTab == CurrentSelectedTab)
|
|
{
|
|
CurrentSection = gonerMenu_SettingsSection;
|
|
}
|
|
}
|
|
Soul.localPosition = new Vector2(-760f, 200f);
|
|
}
|
|
|
|
public void UpdateSettingFontsDyslexic()
|
|
{
|
|
bool boolSettingValue = SettingsManager.Instance.GetBoolSettingValue("DyslexicText");
|
|
foreach (TextMeshProUGUI item in FontsAffectedByDyslexic)
|
|
{
|
|
if (boolSettingValue)
|
|
{
|
|
item.font = dyslexicFont;
|
|
}
|
|
else
|
|
{
|
|
item.font = defaultFont;
|
|
}
|
|
}
|
|
}
|
|
}
|