OptEquip.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityCommon;
  5. using System;
  6. using GFMain;
  7. using System.Linq;
  8. namespace DTYJ
  9. {
  10. public class OptEquip : MonoBehaviour
  11. {
  12. private OptEquipItem[] optEquipItems;
  13. private void Awake()
  14. {
  15. for (int i = 0; i < transform.childCount; i++)
  16. {
  17. if (transform.GetChild(i).name.EndsWith("View"))
  18. {
  19. var tfView = transform.GetChild(i);
  20. Obj3DMouseActionTrigger.AddTrigger(tfView.gameObject, OnMouseActionView);
  21. }
  22. }
  23. var items = transform.GetComponentsInChildren<OptEquipItem>();
  24. optEquipItems = items;
  25. for (int i = 0; i < items.Length; i++)
  26. {
  27. var item = items[i];
  28. Obj3DMouseActionTrigger.AddTrigger(item.gameObject, OnMouseActionItem);
  29. }
  30. }
  31. float timeDealt = 0;
  32. private void Update()
  33. {
  34. timeDealt += Time.deltaTime;
  35. if (timeDealt > 2)
  36. timeDealt = 0;
  37. else
  38. return;
  39. if (Camera.main != null)
  40. {
  41. for (int i = 0; i < optEquipItems.Length; i++)
  42. {
  43. if (Vector3.Distance(Camera.main.transform.position, optEquipItems[i].transform.position) < 4)
  44. {
  45. HighlighterController.Instance.HighlightOn(optEquipItems[i].gameObject);
  46. }
  47. else
  48. {
  49. HighlighterController.Instance.HighlightOff(optEquipItems[i].gameObject);
  50. }
  51. }
  52. }
  53. }
  54. readonly float maxDistance = 12;
  55. private void OnMouseActionItem(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2)
  56. {
  57. if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit)
  58. {
  59. var oeis = arg1.GetComponent<OptEquipItem>();
  60. var gos = oeis.GetAnimGoes();
  61. gos.ForEach(g => HighlighterController.Instance.HighlightOff_const(g));
  62. }
  63. else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter)
  64. {
  65. if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
  66. var oeis = arg1.GetComponent<OptEquipItem>();
  67. var gos = oeis.GetAnimGoes();
  68. gos.ForEach(g => HighlighterController.Instance.HighlightOn_const(g));
  69. }
  70. if (arg2 != Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton) return;
  71. if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
  72. var equipitem = arg1.GetComponent<OptEquipItem>();
  73. if (equipitem != null)
  74. {
  75. var qei = equipitem.GetComponent<OptEquipItem>();
  76. if (!string.IsNullOrEmpty(qei.needTool) && UIToolPanel.instance != null)
  77. {
  78. if (qei.needTool == UIToolPanel.instance.nowSelected)
  79. {
  80. }
  81. else
  82. {
  83. MainEntry.CommonUI.messageBox.ShowMessage("需要钥匙:" + qei.needTool);
  84. return;
  85. }
  86. }
  87. if (equipitem.操作方式 != null && equipitem.操作方式.Length > 0)
  88. {
  89. Main.Instance.uiMainMenu.ShowFloatMenu(equipitem.equipName + equipitem.id, equipitem.操作方式, (v) =>
  90. {
  91. qei.Exe(v);
  92. Debug.Log("执行方法:" + v);
  93. });
  94. }
  95. else
  96. {
  97. qei.Exe();
  98. Debug.Log("直接执行");
  99. }
  100. }
  101. }
  102. private void OnMouseActionView(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2)
  103. {
  104. if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit)
  105. {
  106. var oeis = arg1.GetComponentsInChildren<OptEquipItem>();
  107. foreach (var item in oeis)
  108. {
  109. var gos = item.GetAnimGoes();
  110. gos.ForEach(g => HighlighterController.Instance.HighlightOff(g));
  111. }
  112. }
  113. else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter)
  114. {
  115. if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
  116. var oeis = arg1.GetComponentsInChildren<OptEquipItem>();
  117. foreach (var item in oeis)
  118. {
  119. var gos = item.GetAnimGoes();
  120. gos.ForEach(g => HighlighterController.Instance.HighlightOn(g));
  121. }
  122. }
  123. else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton)
  124. {
  125. if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
  126. var state = MainEntry.CameraCtrl.ToMotionless(arg1.transform);
  127. state.onExit = () => { arg1.gameObject.GetComponent<Collider>().enabled = true; };
  128. arg1.gameObject.GetComponent<Collider>().enabled = false;
  129. }
  130. }
  131. }
  132. }