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; 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" }; 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); } 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(); } } 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]; } } }