SettingsGameView.cs 8.8 KB

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