| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249 |
- 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);
- //红外版本
- if (CommonConfig.bInfraredApp)
- {
- //固定背景隐藏
- boxLevelBowCameraFixed.parent.gameObject.SetActive(false);
- }
- else {
- //固定背景
- 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<Text>();
- if (itemValue == value)
- {
- item.GetComponent<Image>().color = Color.black;
- text.color = Color.white;
- }
- else
- {
- item.GetComponent<Image>().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<Text>();
- if (itemValue == value)
- {
- item.GetComponent<Image>().color = Color.black;
- text.color = Color.white;
- }
- else
- {
- item.GetComponent<Image>().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<Text>();
- if (itemValue == value)
- {
- item.GetComponent<Image>().color = Color.black;
- text.color = Color.white;
- }
- else
- {
- item.GetComponent<Image>().color = new Color(1, 1, 1, 0);
- text.color = Color.black;
- }
- text.text = buttonStrs[i];
- }
- }
- void InForCalibrationConvert() {
- UnityEngine.Events.UnityAction<string> 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";
- }
- }
|