BoxCommon.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. using AppUI.Config;
  2. using AppUI.Localization;
  3. using AppUI.Util.Group;
  4. using AppUI.Util.Switch;
  5. using System.Collections.Generic;
  6. using TMPro;
  7. using UnityEngine;
  8. namespace AppUI.View.Home.SettingsView
  9. {
  10. public class BoxCommon : MonoBehaviour
  11. {
  12. [SerializeField] TMP_Dropdown dropdownLanguage;
  13. [SerializeField] BtnGroupSelector crossHairGroup;
  14. [SerializeField]
  15. UISwitchToggle switchBGM;
  16. [SerializeField]
  17. UISwitchToggle switchEffect;
  18. void OnEnable()
  19. {
  20. InitDropdown();
  21. RefreshDropdownValue();
  22. InitCrossHairGroup();
  23. InitBGM();
  24. InitEffect();
  25. }
  26. void InitDropdown()
  27. {
  28. // 清空旧选项
  29. dropdownLanguage.ClearOptions();
  30. // 添加文案
  31. List<string> options = new List<string>(GlobalConfig.LanguageTexts);
  32. dropdownLanguage.AddOptions(options);
  33. // 监听
  34. dropdownLanguage.onValueChanged.RemoveAllListeners();
  35. dropdownLanguage.onValueChanged.AddListener(OnDropdownLanguageChanged);
  36. }
  37. void RefreshDropdownValue()
  38. {
  39. int languageIndex =
  40. System.Array.IndexOf(GlobalConfig.UILanguages, TextAutoLanguage2.GetLanguage());
  41. dropdownLanguage.SetValueWithoutNotify(languageIndex);
  42. dropdownLanguage.RefreshShownValue();
  43. }
  44. void OnDropdownLanguageChanged(int index)
  45. {
  46. if (index < 0 || index >= GlobalConfig.UILanguages.Length)
  47. return;
  48. LanguageEnum languageEnum = GlobalConfig.UILanguages[index];
  49. if (languageEnum != TextAutoLanguage2.GetLanguage())
  50. {
  51. AudioMgr.ins.PlayBtn();
  52. }
  53. AppUILocalization.ChangeAllLanguages(languageEnum);
  54. RefreshDropdownValue();
  55. }
  56. void InitBGM()
  57. {
  58. switchBGM.Init(
  59. UserSettings.ins.openBGM,
  60. (isOn) =>
  61. {
  62. UserSettings.ins.openBGM = isOn;
  63. UserSettings.ins.Save();
  64. });
  65. }
  66. void InitEffect()
  67. {
  68. switchEffect.Init(
  69. UserSettings.ins.openEffect,
  70. (isOn) =>
  71. {
  72. UserSettings.ins.openEffect = isOn;
  73. UserSettings.ins.Save();
  74. });
  75. }
  76. void InitCrossHairGroup()
  77. {
  78. int index = UserSettings.ins.openCrossHair ? 0 : 1;
  79. crossHairGroup.Init(
  80. GlobalConfig.ButtonStrs,
  81. index,
  82. (selectIndex) =>
  83. {
  84. AudioMgr.ins.PlayBtn();
  85. UserSettings.ins.openCrossHair = selectIndex == 0;
  86. UserSettings.ins.Save();
  87. });
  88. }
  89. }
  90. }