| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- using UnityCommon;
- using System;
- using GFMain;
- using System.Linq;
- namespace DTYJ
- {
- public class OptEquip : MonoBehaviour
- {
- private OptEquipItem[] optEquipItems;
- private void Awake()
- {
- for (int i = 0; i < transform.childCount; i++)
- {
- if (transform.GetChild(i).name.EndsWith("View"))
- {
- var tfView = transform.GetChild(i);
- Obj3DMouseActionTrigger.AddTrigger(tfView.gameObject, OnMouseActionView);
- }
- }
- var items = transform.GetComponentsInChildren<OptEquipItem>();
- optEquipItems = items;
- for (int i = 0; i < items.Length; i++)
- {
- var item = items[i];
- Obj3DMouseActionTrigger.AddTrigger(item.gameObject, OnMouseActionItem);
- }
- }
- float timeDealt = 0;
- private void Update()
- {
- timeDealt += Time.deltaTime;
- if (timeDealt > 2)
- timeDealt = 0;
- else
- return;
- if (Camera.main != null)
- {
- for (int i = 0; i < optEquipItems.Length; i++)
- {
- if (Vector3.Distance(Camera.main.transform.position, optEquipItems[i].transform.position) < 4)
- {
- HighlighterController.Instance.HighlightOn(optEquipItems[i].gameObject);
- }
- else
- {
- HighlighterController.Instance.HighlightOff(optEquipItems[i].gameObject);
- }
- }
- }
- }
- readonly float maxDistance = 12;
- private void OnMouseActionItem(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2)
- {
- if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit)
- {
- var oeis = arg1.GetComponent<OptEquipItem>();
- var gos = oeis.GetAnimGoes();
- gos.ForEach(g => HighlighterController.Instance.HighlightOff_const(g));
- }
- else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter)
- {
- if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
- var oeis = arg1.GetComponent<OptEquipItem>();
- var gos = oeis.GetAnimGoes();
- gos.ForEach(g => HighlighterController.Instance.HighlightOn_const(g));
- }
- if (arg2 != Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton) return;
- if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
- var equipitem = arg1.GetComponent<OptEquipItem>();
- if (equipitem != null)
- {
- var qei = equipitem.GetComponent<OptEquipItem>();
- if (!string.IsNullOrEmpty(qei.needTool) && UIToolPanel.instance != null)
- {
- if (qei.needTool == UIToolPanel.instance.nowSelected)
- {
- }
- else
- {
- MainEntry.CommonUI.messageBox.ShowMessage("需要钥匙:" + qei.needTool);
- return;
- }
- }
- if (equipitem.操作方式 != null && equipitem.操作方式.Length > 0)
- {
- Main.Instance.uiMainMenu.ShowFloatMenu(equipitem.equipName + equipitem.id, equipitem.操作方式, (v) =>
- {
- qei.Exe(v);
- Debug.Log("执行方法:" + v);
- });
- }
- else
- {
- qei.Exe();
- Debug.Log("直接执行");
- }
- }
- }
- private void OnMouseActionView(GameObject arg1, Obj3DMouseActionTrigger.ActionType arg2)
- {
- if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseExit)
- {
- var oeis = arg1.GetComponentsInChildren<OptEquipItem>();
- foreach (var item in oeis)
- {
- var gos = item.GetAnimGoes();
- gos.ForEach(g => HighlighterController.Instance.HighlightOff(g));
- }
- }
- else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseEnter)
- {
- if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
- var oeis = arg1.GetComponentsInChildren<OptEquipItem>();
- foreach (var item in oeis)
- {
- var gos = item.GetAnimGoes();
- gos.ForEach(g => HighlighterController.Instance.HighlightOn(g));
- }
- }
- else if (arg2 == Obj3DMouseActionTrigger.ActionType.OnMouseUpAsButton)
- {
- if (Vector3.Distance(arg1.transform.position, Camera.main.transform.position) > maxDistance) return;
- var state = MainEntry.CameraCtrl.ToMotionless(arg1.transform);
- state.onExit = () => { arg1.gameObject.GetComponent<Collider>().enabled = true; };
- arg1.gameObject.GetComponent<Collider>().enabled = false;
- }
- }
- }
- }
|