DeviceView.cs 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.UI;
  5. public class DeviceView : MonoBehaviour
  6. {
  7. Transform scrollContent;
  8. Transform itemPrefab;
  9. GameObject bowOptions;
  10. GameObject arrowOptions;
  11. List<DeviceInfo> deviceList;
  12. void Start()
  13. {
  14. scrollContent = this.transform.Find("ScrollView/Viewport/Content");
  15. itemPrefab = scrollContent.GetChild(0);
  16. itemPrefab.gameObject.SetActive(false);
  17. bowOptions = this.transform.Find("ItemInfo/BowOptions").gameObject;
  18. arrowOptions = this.transform.Find("ItemInfo/ArrowOptions").gameObject;
  19. deviceList = DeviceMgr.ins.GetMyDeviceList();
  20. //初始化设备列表-并默认点开第一个设备
  21. foreach (DeviceInfo deviceInfo in deviceList)
  22. {
  23. DeviceConfig deviceConfig = deviceInfo.config;
  24. GameObject item = GameObject.Instantiate(itemPrefab.gameObject, scrollContent);
  25. Image modelImage = item.transform.Find("ModelBG/Model").GetComponent<Image>();
  26. modelImage.sprite = Resources.Load<Sprite>("Textures/Device/" + deviceConfig.model);
  27. modelImage.SetNativeSize();
  28. item.transform.Find("TextBG/Text").GetComponent<TextAutoLanguage>().SetText(deviceConfig.name);
  29. item.gameObject.SetActive(true);
  30. item.GetComponent<Button>().onClick.AddListener(delegate() {
  31. AudioMgr.ins.PlayBtn();
  32. SelectItem(deviceInfo);
  33. });
  34. }
  35. SelectItem(deviceList[0]);
  36. //初始化弓的校准按钮
  37. Button[] bowOptionBtns = bowOptions.GetComponentsInChildren<Button>();
  38. for (int i = 0; i < bowOptionBtns.Length; i++)
  39. {
  40. int optionID = i;
  41. bowOptionBtns[i].onClick.AddListener(delegate() {
  42. AudioMgr.ins.PlayBtn();
  43. if (optionID == 0) {
  44. DeviceCalibrateView.Create(DeviceCalibrateItem.Gyr);
  45. } else if (optionID == 1) {
  46. DeviceCalibrateView.Create(DeviceCalibrateItem.Mag);
  47. } else if (optionID == 2) {
  48. AimHandler.ins.DoIdentity();
  49. }
  50. });
  51. }
  52. //初始化箭的加速计按钮选项
  53. Button[] arrowOptionBtns = arrowOptions.GetComponentsInChildren<Button>();
  54. for (int i = 0; i < arrowOptionBtns.Length; i++)
  55. {
  56. int optionID = i;
  57. arrowOptionBtns[i].onClick.AddListener(delegate() {
  58. AudioMgr.ins.PlayBtn();
  59. //select
  60. float acc = 16;
  61. if (optionID == 1) {
  62. acc = 64;
  63. }
  64. SelectAccForArrow(acc);
  65. //save
  66. LoginMgr.myUserInfo.deviceAccValue = acc;
  67. LoginMgr.myUserInfo.Save();
  68. });
  69. }
  70. SelectAccForArrow(LoginMgr.myUserInfo.deviceAccValue);
  71. }
  72. void SelectAccForArrow(float acc)
  73. {
  74. for (int i = 0; i < arrowOptions.transform.childCount; i++)
  75. {
  76. Transform t = arrowOptions.transform.GetChild(i);
  77. t.GetComponent<Button>().enabled = true;
  78. t.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGray");
  79. t.GetComponentInChildren<Text>().color = Color.gray;
  80. }
  81. Transform optionTransform;
  82. Color outColor;
  83. if (acc == 16)
  84. {
  85. optionTransform = arrowOptions.transform.GetChild(0);
  86. optionTransform.GetComponent<Button>().enabled = false;
  87. ColorUtility.TryParseHtmlString("#3D6B03", out outColor);
  88. optionTransform.GetComponentInChildren<Text>().color = outColor;
  89. optionTransform.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonGreen");
  90. }
  91. else if (acc == 64)
  92. {
  93. optionTransform = arrowOptions.transform.GetChild(1);
  94. optionTransform.GetComponent<Button>().enabled = false;
  95. ColorUtility.TryParseHtmlString("#B65A00", out outColor);
  96. optionTransform.GetComponentInChildren<Text>().color = outColor;
  97. optionTransform.GetComponent<Image>().sprite = Resources.Load<Sprite>("Textures/Common/ButtonYellow");
  98. }
  99. }
  100. DeviceInfo currentDeviceInfo;
  101. void SelectItem(DeviceInfo deviceInfo)
  102. {
  103. currentDeviceInfo = deviceInfo;
  104. Image modelImage = this.transform.Find("ItemShow/Model").GetComponent<Image>();
  105. modelImage.sprite = Resources.Load<Sprite>("Textures/Device/" + deviceInfo.config.model);
  106. modelImage.SetNativeSize();
  107. this.transform.Find("ItemInfo/Name").GetComponent<TextAutoLanguage>().SetText(deviceInfo.config.name);
  108. this.transform.Find("ItemInfo/Detail").GetComponent<TextAutoLanguage>().SetText(deviceInfo.config.detail);
  109. Transform stars = this.transform.Find("ItemInfo/Stars");
  110. Image starLight = stars.GetChild(0).GetComponent<Image>();
  111. Image starDark = stars.GetChild(1).GetComponent<Image>();
  112. starLight.gameObject.SetActive(false);
  113. starDark.gameObject.SetActive(false);
  114. for (int i = 1; i <= 5; i++) {
  115. stars.GetChild(i + 2).GetComponent<Image>().sprite =
  116. i <= deviceInfo.config.difficulty ? starLight.sprite : starDark.sprite;
  117. }
  118. bowOptions.SetActive(deviceInfo.config.type == 1);
  119. arrowOptions.SetActive(deviceInfo.config.type == 2);
  120. }
  121. public void LeftPointer()
  122. {
  123. AudioMgr.ins.PlayBtn();
  124. int index = deviceList.IndexOf(currentDeviceInfo) - 1;
  125. if (index < 0) {
  126. index = deviceList.Count - 1;
  127. }
  128. SelectItem(deviceList[index]);
  129. }
  130. public void RightPointer()
  131. {
  132. AudioMgr.ins.PlayBtn();
  133. int index = deviceList.IndexOf(currentDeviceInfo) + 1;
  134. if (index >= deviceList.Count) {
  135. index = 0;
  136. }
  137. SelectItem(deviceList[index]);
  138. }
  139. public void Back() {
  140. AudioMgr.ins.PlayBtn();
  141. Destroy(this.gameObject);
  142. }
  143. }