using System.Collections; using System.Collections.Generic; using System; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using UnityEngine.SceneManagement; /* 设置界面 */ public class SettingsGameView : JCUnityLib.ViewBase, MenuBackInterface { [SerializeField] Image[] crossHairOptionChecks; InputField inputSize; // InputField inputDistance; Text inputDistanceText; void Start() { PersistenHandler.ins?.menuBackCtr.views.Add(this); this.transform.Find("Items/BGM/Check").gameObject.SetActive(UserSettings.ins.openBGM); this.transform.Find("Items/Effect/Check").gameObject.SetActive(UserSettings.ins.openEffect); this.transform.Find("Items/BowCameraFixed/Check").gameObject.SetActive(UserSettings.ins.bowCameraFixed); this.transform.Find("Items/TrainMode/Check").gameObject.SetActive(UserSettings.ins.trainMode); RenderSelectCrossHairOption(); RenderShootLevel(); RenderActualArrowWeight(); InitForRotateConvert(); if (CommonConfig.banLanguageChangeSwitch) { this.transform.Find("Items/Language").gameObject.SetActive(false); StartCoroutine(FixMaxRow(this.transform.Find("Items/TrainMode") as RectTransform)); } } IEnumerator FixMaxRow(RectTransform rtf) { yield return null; rtf.GetComponentInParent().enabled = false; Vector2 v2 = rtf.sizeDelta; v2.x = (rtf.parent as RectTransform).rect.width; rtf.sizeDelta = v2; } void OnDestroy() { PersistenHandler.ins?.menuBackCtr.views.Remove(this); } public bool OnMenuBack() { ViewMgr.Instance.DestroyView(); return true; } void InitForRotateConvert() { inputSize = transform.Find("RotateConvert/InputSize").GetComponent(); // inputDistance = transform.Find("RotateConvert/InputDistance").GetComponent(); inputDistanceText = transform.Find("RotateConvert/InputDistance").GetComponentInChildren(); UnityAction onEndEdit_inputSize = (string str) => { inputSize.SetTextWithoutNotify(""); float v = (float) System.Math.Round(double.Parse(str), 2); if (v < 1 || v > 120) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内")); return; } ShowScreenSize(v); //save UserSettings.ins.bowRotateConvert.screenSize = v; UserSettings.ins.Save(); ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance()); // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate()); }; // UnityAction onEndEdit_inputDistance = (string str) => { // inputDistance.SetTextWithoutNotify(""); // float v = (float) System.Math.Round(double.Parse(str), 2); // if (v < 0.1 || v > 100) { // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内")); // return; // } // ShowScreenDistance(v); // //save // UserSettings.ins.bowRotateConvert.screenDistance = v; // UserSettings.ins.Save(); // PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("转化比率 = ") + UserSettings.ins.bowRotateConvert.GetRate()); // }; inputSize.onEndEdit.AddListener(onEndEdit_inputSize); // inputDistance.onEndEdit.AddListener(onEndEdit_inputDistance); // inputDistance.readOnly = true; ShowScreenSize(UserSettings.ins.bowRotateConvert.screenSize); // ShowScreenSize(UserSettings.ins.bowRotateConvert.screenDistance); ShowScreenDistance(UserSettings.ins.bowRotateConvert.GetAdviseScreenDistance()); if (CommonConfig.isReleaseVersion) { inputSize.transform.parent.gameObject.SetActive(false); transform.Find("Items/BowCameraFixed").gameObject.SetActive(false); } } void ShowScreenSize(float v) { string vStr = v.ToString("#0.00"); TextAutoLanguage2 textAutoLanguage2 = inputSize.transform.Find("Placeholder").GetComponent(); textAutoLanguage2.textFormatArgs = new object[]{vStr}; textAutoLanguage2.ApplyToText(); } void ShowScreenDistance(float v) { // string vStr = v.ToString("#0.00"); // TextAutoLanguage2 textAutoLanguage2 = inputDistance.transform.Find("Placeholder").GetComponent(); // textAutoLanguage2.textFormatArgs = new object[]{vStr}; // textAutoLanguage2.ApplyToText(); // inputDistance.text = string.Format(TextAutoLanguage2.GetTextByKey("setup_screen-distance"), v.ToString("#0.00")); TextAutoLanguage2 textAutoLanguage2 = inputDistanceText.GetComponent(); textAutoLanguage2.textFormatArgs = new object[]{v.ToString("#0.00")}; textAutoLanguage2.ApplyToText(); } public void CheckBox(GameObject checkBox) { AudioMgr.ins.PlayBtn(); checkBox.SetActive(!checkBox.activeSelf); if (checkBox.transform.parent.gameObject.name.StartsWith("BGM")) { UserSettings.ins.openBGM = checkBox.activeSelf; UserSettings.ins.Save(); } else if (checkBox.transform.parent.gameObject.name.StartsWith("Effect")) { UserSettings.ins.openEffect = checkBox.activeSelf; UserSettings.ins.Save(); } else if (checkBox.transform.parent.gameObject.name.StartsWith("BowCameraFixed")) { UserSettings.ins.bowCameraFixed = checkBox.activeSelf; UserSettings.ins.Save(); } else if (checkBox.transform.parent.gameObject.name.StartsWith("TrainMode")) { UserSettings.ins.trainMode = checkBox.activeSelf; UserSettings.ins.Save(); } } public void SelectCrossHairOption(bool on) { AudioMgr.ins.PlayBtn(); UserSettings.ins.openCrossHair = on; UserSettings.ins.Save(); RenderSelectCrossHairOption(); } void RenderSelectCrossHairOption() { crossHairOptionChecks[0].enabled = UserSettings.ins.openCrossHair; crossHairOptionChecks[1].enabled = !UserSettings.ins.openCrossHair; } public void ChangeLanguage() { AudioMgr.ins.PlayBtn(); if (TextAutoLanguage2.GetLanguage() == LanguageEnum.English) { TextAutoLanguage.ChangeLanguage(LanguageEnum.Chinese); TextAutoLanguage2.ChangeLanguage(LanguageEnum.Chinese); ImageAutoLanguage.ChangeLanguage(LanguageEnum.Chinese); } else if (TextAutoLanguage2.GetLanguage() == LanguageEnum.Chinese) { TextAutoLanguage.ChangeLanguage(LanguageEnum.English); TextAutoLanguage2.ChangeLanguage(LanguageEnum.English); ImageAutoLanguage.ChangeLanguage(LanguageEnum.English); } } public void ChangeShootLevel() { AudioMgr.ins.PlayBtn(); int currentShootLevel = UserSettings.ins.shootLevel; if (currentShootLevel < 2) { currentShootLevel++; } else { currentShootLevel = 0; } UserSettings.ins.shootLevel = currentShootLevel; UserSettings.ins.Save(); RenderShootLevel(); } void RenderShootLevel() { int currentShootLevel = UserSettings.ins.shootLevel; int[] textID = {310, 311, 312}; this.transform.Find("Items/ShootLevel/Value").GetComponent().SetText(textID[currentShootLevel]); } public void ChangeActualArrowWeight() { AudioMgr.ins.PlayBtn(); float[] itemValues = {20f, 27f, 30.5f}; float actualArrowWeight = UserSettings.ins.actualArrowWeight; if (actualArrowWeight == itemValues[itemValues.Length - 1]) { actualArrowWeight = itemValues[0]; } else { for (int i = 0; i < itemValues.Length; i++) { if (itemValues[i] == actualArrowWeight) { actualArrowWeight = itemValues[i + 1]; break; } } } UserSettings.ins.actualArrowWeight = actualArrowWeight; UserSettings.ins.Save(); RenderActualArrowWeight(); } void RenderActualArrowWeight() { TextAutoLanguage textAutoLanguage = this.transform.Find("Items/ActualArrowHeight/Value").GetComponent(); textAutoLanguage.textFormatArgs = new string[]{UserSettings.ins.actualArrowWeight.ToString()}; textAutoLanguage.SetText(314); } public void Back() { AudioMgr.ins.PlayBtn(); ViewMgr.Instance.DestroyView(); } }