SetUpView.cs 7.8 KB

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