| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | using System;using System.Collections;using System.Collections.Generic;using System.Threading.Tasks;using UnityEngine;using UnityEngine.UI;using UnityAsync;using WaitUntil = UnityAsync.WaitUntil;using XCharts.Runtime;public class ZMJKLayer : MonoBehaviour{    public GameObject ZhaZhanItemOri;    public Transform itemContent;    public Text zhaZhanCount;    public GameObject gongChengPanel;    public Button closeButton;    public Text zhaZhanMingCheng;    public Text zhaQianShuiWei;    public Text zhaHouShuiWei;    public Text zhaMenKaiDu;    public Text guoZhaLiuLiang;    public BarChart shuiweiChart;    public InputField _zmSearchInputField;    public List<ZhaZhanItem> currentZMDataList = new List<ZhaZhanItem>();    public GameObject targetObj;    public bool showGongPanel = false;    private Camera _camera;    private void Awake()    {        closeButton.onClick.AddListener(() =>        {            gongChengPanel.SetActive(false);            showGongPanel = false;        });        gongChengPanel.SetActive(false);        showGongPanel = false;    }    private void OnEnable()    {        _camera = CameraManager.instance.mainCamera;        StaticLod.instance.OnFoucusStatic(0);    }    // Start is called before the first frame update    async void Start()    {        InitFloorGateData();        _zmSearchInputField.onValueChanged.AddListener(SearchObsItem);    }    async Task InitFloorGateData() {        await new WaitUntil(() =>        {            return GlobalData.floorGateData.success;        });        float[] byV3 = new float[GlobalData.floorGateData.BuYuan.FloodGates.Length];        for (int i = 0; i < GlobalData.floorGateData.BuYuan.FloodGates.Length; i++)        {            int tempIndex = i;            ZhaZhanItem tempItem = Instantiate(ZhaZhanItemOri, itemContent).GetComponent<ZhaZhanItem>();            tempItem.SetData(GlobalData.floorGateData.BuYuan.FloodGates[tempIndex], $"补元闸门-{tempIndex + 1}");            byV3[tempIndex] = GlobalData.floorGateData.BuYuan.FloodGates[tempIndex].CurrentOpening * 0.01f;            Debug.Log($"补元闸门-{tempIndex + 1}:{byV3[tempIndex]}");            tempItem.gameObject.GetComponent<Button>().onClick.AddListener(() =>            {                StaticLod.instance.OnFoucusStatic($"BY_ZM_{tempIndex+1:00}");                targetObj = StaticLod.instance.GetStaticObj($"BY_ZM_{tempIndex + 1:00}");                gongChengPanel.SetActive(true);                showGongPanel = true;                zhaZhanMingCheng.text = tempItem._name;                zhaMenKaiDu.text = $"{GlobalData.floorGateData.BuYuan.FloodGates[tempIndex].CurrentOpening:0.00}<size=14><color=#A5BFE2>%</color></size>";                guoZhaLiuLiang.text = $"{GlobalData.floorGateData.BuYuan.FloodGates[tempIndex].CurrentFlow}<size=14><color=#A5BFE2>m\u00b3/s</color></size>";                //zhaQianShuiWei.text = $"{GlobalData.floorGateData.BuYuan.FloodGates[tempIndex]} <size=14><color=#A5BFE2>m</color></size>";                //zhaHouShuiWei.text = $"{GlobalData.floorGateData.BuYuan.FloodGates[tempIndex]} <size=14><color=#A5BFE2>m</color></size>";                //shuiweiChart todo            });            currentZMDataList.Add(tempItem);        }        ActionInstance._Instance.ModelAni_On?.Invoke(AniType.buYuan,byV3);                float[] tkV3 = new float[GlobalData.floorGateData.TaoKou.FloodGates.Length];        for (int i = 0; i < GlobalData.floorGateData.TaoKou.FloodGates.Length; i++)        {            int tempIndex = i;            ZhaZhanItem tempItem = Instantiate(ZhaZhanItemOri, itemContent).GetComponent<ZhaZhanItem>();            tempItem.SetData(GlobalData.floorGateData.TaoKou.FloodGates[tempIndex], $"套口闸门-{tempIndex + 1}");            tkV3[tempIndex] = GlobalData.floorGateData.TaoKou.FloodGates[tempIndex].CurrentOpening * 0.01f;            tempItem.gameObject.GetComponent<Button>().onClick.AddListener(() =>            {                StaticLod.instance.OnFoucusStatic($"TK_ZM_{tempIndex+1:00}");                targetObj = StaticLod.instance.GetStaticObj($"TK_ZM_{tempIndex+1:00}");                gongChengPanel.SetActive(true);                showGongPanel = true;                zhaZhanMingCheng.text = tempItem._name;                zhaMenKaiDu.text = $"{GlobalData.floorGateData.TaoKou.FloodGates[tempIndex].CurrentOpening:0.00}<size=14><color=#A5BFE2>%</color></size>";                guoZhaLiuLiang.text = $"{GlobalData.floorGateData.TaoKou.FloodGates[tempIndex].CurrentFlow}<size=14><color=#A5BFE2>m\u00b3/s</color></size>";            });            currentZMDataList.Add(tempItem);        }        ActionInstance._Instance.ModelAni_On?.Invoke(AniType.taoKou,tkV3);        int totalCount = GlobalData.floorGateData.BuYuanTotalGates + GlobalData.floorGateData.TaoKouTotalGates;        zhaZhanCount.text = $"闸门列表 (<color=#FFFFFF>{totalCount}</color>)";    }    public void SearchObsItem(string s_name)    {        if (s_name.Equals(""))        {            for (int i = 0; i < currentZMDataList.Count; i++)            {                currentZMDataList[i].gameObject.SetActive(true);            }        }        else        {            for (int i = 0; i < currentZMDataList.Count; i++)            {                currentZMDataList[i].gameObject.SetActive(currentZMDataList[i]._name.Contains(s_name));            }        }    }    // Update is called once per frame    void Update()    {        if (showGongPanel)        {            if (targetObj != null)            {                if (IsObjectInCameraView(targetObj.transform, _camera))                {                    gongChengPanel.transform.position=_camera.WorldToScreenPoint(targetObj.transform.position);                }            }        }    }        bool IsObjectInCameraView(Transform objectTransform, Camera camera)    {        Vector3 objectScreenPosition = camera.WorldToScreenPoint(objectTransform.position);        return objectScreenPosition.z > 0 &&               objectScreenPosition.x > 0 &&               objectScreenPosition.x < Screen.width &&               objectScreenPosition.y > 0 &&               objectScreenPosition.y < Screen.height;    }}
 |