using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BoxLevel : MonoBehaviour { [SerializeField] Transform boxLevelArrowWeightSelects; [SerializeField] Transform boxLevelShootLevelSelects; [SerializeField] Transform boxLevelCrossHairSelects; [SerializeField] Transform boxLevelBowCameraFixed; [SerializeField] Transform boxLevelTrainMode; [SerializeField] Transform boxLevelBowAndArrow; readonly static float[] ArrowWeights = { 20f, 27f, 30.5f }; readonly static int[] ShootLevels = { 0, 1, 2 }; readonly string[] ShootLevelStrs = { "Easy", "Normal", "Hard" }; readonly static int[] buttons = { 0, 1 }; readonly string[] buttonStrs = { "Yes", "No" }; [SerializeField] Slider calibrationSlider; [SerializeField] Text calibrationTimeText; [SerializeField] InputField calibrationInput; void OnEnable() { float arrowWeight = UserSettings.ins.actualArrowWeight; if (System.Array.IndexOf(ArrowWeights, arrowWeight) < 0) arrowWeight = ArrowWeights[0]; RenderArrowWeight(arrowWeight); int shootLevel = UserSettings.ins.shootLevel; if (System.Array.IndexOf(ShootLevels, shootLevel) < 0) shootLevel = ShootLevels[0]; RenderShootLevel(shootLevel); //准心 bool openCrossHair = UserSettings.ins.openCrossHair; RenderButtos(openCrossHair ? 0 : 1, boxLevelCrossHairSelects); //固定背景 bool bowCameraFixed = UserSettings.ins.bowCameraFixed; RenderButtos(bowCameraFixed ? 0 : 1, boxLevelBowCameraFixed); //训练模式 bool trainMode = UserSettings.ins.trainMode; RenderButtos(trainMode ? 0 : 1, boxLevelTrainMode); //场景里面的弓箭手臂显示 bool openBowAndArrow = UserSettings.ins.openBowAndArrow; RenderButtos(openBowAndArrow ? 0 : 1, boxLevelBowAndArrow); //视角归位视角设置 calibrationSlider.maxValue = 20; calibrationSlider.minValue = 3; InForCalibrationConvert(); } public void OnClick_SelectArrowWeight(Transform target) { float oldValue = UserSettings.ins.actualArrowWeight; int index = target.GetSiblingIndex(); float newValue = ArrowWeights[index]; RenderArrowWeight(newValue); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.actualArrowWeight = newValue; UserSettings.ins.Save(); } } public void OnClick_SelectShootLevel(Transform target) { int oldValue = UserSettings.ins.shootLevel; int index = target.GetSiblingIndex(); int newValue = ShootLevels[index]; RenderShootLevel(newValue); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.shootLevel = newValue; UserSettings.ins.Save(); } } public void OnClick_CrossHairs(Transform target) { int oldValue = UserSettings.ins.openCrossHair?0:1; int index = target.GetSiblingIndex(); int newValue = buttons[index]; RenderButtos(newValue, boxLevelCrossHairSelects); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.openCrossHair = newValue == 0?true:false; UserSettings.ins.Save(); } } public void OnClick_BowCameraFixed(Transform target) { int oldValue = UserSettings.ins.bowCameraFixed ? 0 : 1; int index = target.GetSiblingIndex(); int newValue = buttons[index]; RenderButtos(newValue, boxLevelBowCameraFixed); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.bowCameraFixed = newValue == 0 ? true : false; UserSettings.ins.Save(); } } public void OnClick_TrainMode(Transform target) { int oldValue = UserSettings.ins.trainMode ? 0 : 1; int index = target.GetSiblingIndex(); int newValue = buttons[index]; RenderButtos(newValue, boxLevelTrainMode); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.trainMode = newValue == 0 ? true : false; UserSettings.ins.Save(); } } //弓箭手臂 public void OnClick_BowAndArrow(Transform target) { int oldValue = UserSettings.ins.openBowAndArrow ? 0 : 1; int index = target.GetSiblingIndex(); int newValue = buttons[index]; RenderButtos(newValue, boxLevelBowAndArrow); if (oldValue != newValue) { AudioMgr.ins.PlayBtn(); UserSettings.ins.openBowAndArrow = newValue == 0 ? true : false; UserSettings.ins.Save(); //如果打开图标并且存在 hideInfraredBowAndArrow key时候,设置为0 if (UserSettings.ins.openBowAndArrow && PlayerPrefs.HasKey("hideInfraredBowAndArrow") && PlayerPrefs.GetInt("hideInfraredBowAndArrow") == 2 //armbow 设置 hideInfraredBowAndArrow = 2 状态下 操作面板才会 解开 红外的openBowAndArrow ) { PlayerPrefs.SetInt("hideInfraredBowAndArrow", 0); } } } void RenderArrowWeight(float value) { for (int i = 0; i < ArrowWeights.Length; i++) { var itemValue = ArrowWeights[i]; var item = boxLevelArrowWeightSelects.GetChild(i); var text = item.GetComponentInChildren(); if (itemValue == value) { item.GetComponent().color = Color.black; text.color = Color.white; } else { item.GetComponent().color = new Color(1, 1, 1, 0); text.color = Color.black; } text.text = itemValue + "Grams"; } } void RenderShootLevel(int value) { for (int i = 0; i < ShootLevels.Length; i++) { var itemValue = ShootLevels[i]; var item = boxLevelShootLevelSelects.GetChild(i); var text = item.GetComponentInChildren(); if (itemValue == value) { item.GetComponent().color = Color.black; text.color = Color.white; } else { item.GetComponent().color = new Color(1, 1, 1, 0); text.color = Color.black; } text.text = ShootLevelStrs[i]; } } void RenderButtos(int value,Transform target) { for (int i = 0; i < buttons.Length; i++) { var itemValue = buttons[i]; var item = target.GetChild(i); var text = item.GetComponentInChildren(); if (itemValue == value) { item.GetComponent().color = Color.black; text.color = Color.white; } else { item.GetComponent().color = new Color(1, 1, 1, 0); text.color = Color.black; } text.text = buttonStrs[i]; } } void InForCalibrationConvert() { UnityEngine.Events.UnityAction onEndEdit_inputSize = (string str) => { calibrationInput.SetTextWithoutNotify(""); float v = (float)System.Math.Round(double.Parse(str), 2); if (v < 3 || v > 20) { PopupMgr.ins.ShowTip(TextAutoLanguage2.GetTextByCNKey("输入值不在常规范围内")); return; } SetCalibrationTime(v); //save UserSettings.ins.calibrationTime = v; UserSettings.ins.Save(); }; calibrationInput.onEndEdit.AddListener(onEndEdit_inputSize); SetCalibrationTime(UserSettings.ins.calibrationTime); } void SetCalibrationTime(float v) { string vStr = v.ToString("#0"); calibrationTimeText.text = vStr + "s"; } }