SettingsGameView.cs 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. using AppUI.Localization;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System;
  5. using UnityEngine;
  6. using UnityEngine.UI;
  7. using UnityEngine.Events;
  8. using UnityEngine.SceneManagement;
  9. /* 设置界面 */
  10. public class SettingsGameView : JCUnityLib.ViewBase, MenuBackInterface
  11. {
  12. [SerializeField] Image[] crossHairOptionChecks;
  13. InputField inputSize;
  14. // InputField inputDistance;
  15. Text inputDistanceText;
  16. void Start()
  17. {
  18. PersistenHandler.ins?.menuBackCtr.views.Add(this);
  19. this.transform.Find("Items/BGM/Check").gameObject.SetActive(UserSettings.ins.openBGM);
  20. this.transform.Find("Items/Effect/Check").gameObject.SetActive(UserSettings.ins.openEffect);
  21. this.transform.Find("Items/BowCameraFixed/Check").gameObject.SetActive(UserSettings.ins.bowCameraFixed);
  22. this.transform.Find("Items/TrainMode/Check").gameObject.SetActive(UserSettings.ins.trainMode);
  23. RenderSelectCrossHairOption();
  24. RenderShootLevel();
  25. RenderActualArrowWeight();
  26. InitForRotateConvert();
  27. if (CommonConfig.banLanguageChangeSwitch)
  28. {
  29. this.transform.Find("Items/Language").gameObject.SetActive(false);
  30. StartCoroutine(FixMaxRow(this.transform.Find("Items/TrainMode") as RectTransform));
  31. }
  32. }
  33. IEnumerator FixMaxRow(RectTransform rtf)
  34. {
  35. yield return null;
  36. rtf.GetComponentInParent<GridLayoutGroup>().enabled = false;
  37. Vector2 v2 = rtf.sizeDelta;
  38. v2.x = (rtf.parent as RectTransform).rect.width;
  39. rtf.sizeDelta = v2;
  40. }
  41. void OnDestroy()
  42. {
  43. PersistenHandler.ins?.menuBackCtr.views.Remove(this);
  44. }
  45. public bool OnMenuBack() {
  46. ViewMgr.Instance.DestroyView<SettingsGameView>();
  47. return true;
  48. }
  49. void InitForRotateConvert() {
  50. inputSize = transform.Find("RotateConvert/InputSize").GetComponent<InputField>();
  51. // inputDistance = transform.Find("RotateConvert/InputDistance").GetComponent<InputField>();
  52. inputDistanceText = transform.Find("RotateConvert/InputDistance").GetComponentInChildren<Text>();
  53. UnityAction<string> onEndEdit_inputSize = (string str) => {
  54. inputSize.SetTextWithoutNotify("");
  55. float v = (float) System.Math.Round(double.Parse(str), 2);
  56. if (v < 1 || v > 120) {
  57. PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内"));
  58. return;
  59. }
  60. ShowScreenSize(v);
  61. //save
  62. UserSettings.ins.bowRotateConvert.screenSize = v;
  63. UserSettings.ins.Save();
  64. ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance());
  65. // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate());
  66. };
  67. // UnityAction<string> onEndEdit_inputDistance = (string str) => {
  68. // inputDistance.SetTextWithoutNotify("");
  69. // float v = (float) System.Math.Round(double.Parse(str), 2);
  70. // if (v < 0.1 || v > 100) {
  71. // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内"));
  72. // return;
  73. // }
  74. // ShowScreenDistance(v);
  75. // //save
  76. // UserSettings.ins.bowRotateConvert.screenDistance = v;
  77. // UserSettings.ins.Save();
  78. // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate());
  79. // };
  80. inputSize.onEndEdit.AddListener(onEndEdit_inputSize);
  81. // inputDistance.onEndEdit.AddListener(onEndEdit_inputDistance);
  82. // inputDistance.readOnly = true;
  83. ShowScreenSize(UserSettings.ins.bowRotateConvert.screenSize);
  84. // ShowScreenSize(UserSettings.ins.bowRotateConvert.screenDistance);
  85. ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance());
  86. if (CommonConfig.isReleaseVersion) {
  87. inputSize.transform.parent.gameObject.SetActive(false);
  88. transform.Find("Items/BowCameraFixed").gameObject.SetActive(false);
  89. }
  90. }
  91. void ShowScreenSize(float v) {
  92. string vStr = v.ToString("#0.00");
  93. TextAutoLanguage2 textAutoLanguage2 = inputSize.transform.Find("Placeholder").GetComponent<TextAutoLanguage2>();
  94. textAutoLanguage2.textFormatArgs = new object[]{vStr};
  95. textAutoLanguage2.ApplyToText();
  96. }
  97. void ShowScreenDistance(float v) {
  98. // string vStr = v.ToString("#0.00");
  99. // TextAutoLanguage2 textAutoLanguage2 = inputDistance.transform.Find("Placeholder").GetComponent<TextAutoLanguage2>();
  100. // textAutoLanguage2.textFormatArgs = new object[]{vStr};
  101. // textAutoLanguage2.ApplyToText();
  102. // inputDistance.text = string.Format(TextAutoLanguage2.GetTextByKey("setup_screen-distance"), v.ToString("#0.00"));
  103. TextAutoLanguage2 textAutoLanguage2 = inputDistanceText.GetComponent<TextAutoLanguage2>();
  104. textAutoLanguage2.textFormatArgs = new object[]{v.ToString("#0.00")};
  105. textAutoLanguage2.ApplyToText();
  106. }
  107. public void CheckBox(GameObject checkBox) {
  108. AudioMgr.ins.PlayBtn();
  109. checkBox.SetActive(!checkBox.activeSelf);
  110. if (checkBox.transform.parent.gameObject.name.StartsWith("BGM")) {
  111. UserSettings.ins.openBGM = checkBox.activeSelf;
  112. UserSettings.ins.Save();
  113. }
  114. else if (checkBox.transform.parent.gameObject.name.StartsWith("Effect")) {
  115. UserSettings.ins.openEffect = checkBox.activeSelf;
  116. UserSettings.ins.Save();
  117. }
  118. else if (checkBox.transform.parent.gameObject.name.StartsWith("BowCameraFixed")) {
  119. UserSettings.ins.bowCameraFixed = checkBox.activeSelf;
  120. UserSettings.ins.Save();
  121. }
  122. else if (checkBox.transform.parent.gameObject.name.StartsWith("TrainMode")) {
  123. UserSettings.ins.trainMode = checkBox.activeSelf;
  124. UserSettings.ins.Save();
  125. }
  126. }
  127. public void SelectCrossHairOption(bool on)
  128. {
  129. AudioMgr.ins.PlayBtn();
  130. UserSettings.ins.openCrossHair = on;
  131. UserSettings.ins.Save();
  132. RenderSelectCrossHairOption();
  133. }
  134. void RenderSelectCrossHairOption()
  135. {
  136. crossHairOptionChecks[0].enabled = UserSettings.ins.openCrossHair;
  137. crossHairOptionChecks[1].enabled = !UserSettings.ins.openCrossHair;
  138. }
  139. public void ChangeLanguage()
  140. {
  141. AudioMgr.ins.PlayBtn();
  142. if (TextAutoLanguage2.GetLanguage() == LanguageEnum.English)
  143. {
  144. AppUILocalization.ChangeAllLanguages(LanguageEnum.Chinese);
  145. }
  146. else if (TextAutoLanguage2.GetLanguage() == LanguageEnum.Chinese) {
  147. AppUILocalization.ChangeAllLanguages(LanguageEnum.English);
  148. }
  149. }
  150. public void ChangeShootLevel()
  151. {
  152. AudioMgr.ins.PlayBtn();
  153. int currentShootLevel = UserSettings.ins.shootLevel;
  154. if (currentShootLevel < 2) {
  155. currentShootLevel++;
  156. } else {
  157. currentShootLevel = 0;
  158. }
  159. UserSettings.ins.shootLevel = currentShootLevel;
  160. UserSettings.ins.Save();
  161. RenderShootLevel();
  162. }
  163. void RenderShootLevel()
  164. {
  165. int currentShootLevel = UserSettings.ins.shootLevel;
  166. int[] textID = {310, 311, 312};
  167. this.transform.Find("Items/ShootLevel/Value").GetComponent<TextAutoLanguage>().SetText(textID[currentShootLevel]);
  168. }
  169. public void ChangeActualArrowWeight() {
  170. AudioMgr.ins.PlayBtn();
  171. float[] itemValues = {20f, 27f, 30.5f};
  172. float actualArrowWeight = UserSettings.ins.actualArrowWeight;
  173. if (actualArrowWeight == itemValues[itemValues.Length - 1]) {
  174. actualArrowWeight = itemValues[0];
  175. } else {
  176. for (int i = 0; i < itemValues.Length; i++) {
  177. if (itemValues[i] == actualArrowWeight) {
  178. actualArrowWeight = itemValues[i + 1];
  179. break;
  180. }
  181. }
  182. }
  183. UserSettings.ins.actualArrowWeight = actualArrowWeight;
  184. UserSettings.ins.Save();
  185. RenderActualArrowWeight();
  186. }
  187. void RenderActualArrowWeight()
  188. {
  189. TextAutoLanguage textAutoLanguage = this.transform.Find("Items/ActualArrowHeight/Value").GetComponent<TextAutoLanguage>();
  190. textAutoLanguage.textFormatArgs = new string[]{UserSettings.ins.actualArrowWeight.ToString()};
  191. textAutoLanguage.SetText(314);
  192. }
  193. public void Back() {
  194. AudioMgr.ins.PlayBtn();
  195. ViewMgr.Instance.DestroyView<SettingsGameView>();
  196. }
  197. }