using AdamThinkDevicesData; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using static InterfaceManager; /// <summary> /// 频谱探测 /// </summary> public class Spectrumdetection : MonoBehaviour { public static List<Spectrumdetection> spectrumdetections=new List<Spectrumdetection>(); public EquipmentCommon equipmentCommon; #region 频谱探测的参数 /// <summary> /// 探测距离 /// </summary> public string Detectionrange; /// <summary> /// 批目标处理能力 /// </summary> public string Batchcapacity; /// <summary> /// 探测频率 /// </summary> public string frequency; /// <summary> /// 探测成功率 /// </summary> public string Detectionsuccessrate; /// <summary> /// 探测响应时间 /// </summary> public string Responsetime; /// <summary> /// 测向精度 /// </summary> public string Directionfindingaccuracy; /// <summary> /// 最小探测速度 /// </summary> public string Minimumdetectionvelocity; #endregion private bool _isStartRehearsing = false; /// <summary> /// 是否正在演练 /// </summary> public bool isStartRehearsing { get { return _isStartRehearsing; } set { if (_isStartRehearsing != value) { _isStartRehearsing = value; OnActivationChanged?.Invoke(_isStartRehearsing); } } } /// <summary> /// 布尔值变化时触发时间 /// </summary> public event System.Action<bool> OnActivationChanged; /// <summary> /// /// </summary> public GameObject SpectrumdetectionUI; /// <summary> /// 显示UI频段页面 /// </summary> public Image Frequencyiamge; /// <summary> /// 关闭按钮 /// </summary> public Button frenbutton; /// <summary> /// 选择最终的频段 /// </summary> public Toggle toggle1, toggle2, toggle3, toggle4, toggle5, toggle6, toggle7; /// <summary> /// 最终的波段 /// </summary> public string Frequency; /// <summary> /// 摄像机显示层数 /// </summary> public Camera camera; /// <summary> /// /// </summary> public RawImage rawImage; /// <summary> /// /// </summary> private bool onlyOne = true; void Start() { spectrumdetections.Add(this); equipmentCommon = GetComponent<EquipmentCommon>(); // 订阅布尔值变化事件 OnActivationChanged += OnActivationChangedHandler; _isStartRehearsing = GlobalFlag.isStartRehearsing; Microwave(); //DroneViewDisplay.Instance.CreateUI(equipmentCommon.deviceID, camera, rawImage); } void Update() { if (onlyOne && equipmentCommon.deviceID.Length > 10) { onlyOne = false; DroneViewDisplay.Instance.CreateUI(equipmentCommon.deviceID, camera, rawImage); } Search();//微波武器朝向无人机 } private void Microwave() { frenbutton.onClick.AddListener(() => { Frequencyiamge.gameObject.SetActive(false); }); toggle1.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "HUF"; camera.cullingMask = 1 << 16; SweepFrequencyBandTo(); } }); toggle2.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "L"; camera.cullingMask = 1 << 17; SweepFrequencyBandTo(); } }); toggle3.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "S"; camera.cullingMask = 1 << 18; SweepFrequencyBandTo(); } }); toggle4.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "C"; camera.cullingMask = 1 << 19; SweepFrequencyBandTo(); } }); toggle5.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "X"; camera.cullingMask = 1 << 20; SweepFrequencyBandTo(); } }); toggle6.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "Ku"; camera.cullingMask = 1 << 21; SweepFrequencyBandTo(); } }); toggle7.onValueChanged.AddListener((ison) => { if (ison) { Frequency = "Ka"; camera.cullingMask = (1 << 22); SweepFrequencyBandTo(); } }); } public void SweepFrequencyBandTo() { string nowData = GetSyncDataThree(); DeviceManager.Instance.send2roomStr.Enqueue(nowData); } public void CameraFrequency(string _frequency) { int layerValue = LayerMask.NameToLayer(_frequency); Frequency = _frequency; camera.cullingMask = (1 << layerValue); } /// <summary> /// 设置扫描频段同步 /// </summary> /// <returns></returns> protected string GetSyncDataThree() { UploadLog(); return string.Format("{0},{1},{2},{3}", "SweepFrequencyBand", "PPTC", equipmentCommon.deviceID, Frequency); } /// <summary> ///上传日志 /// </summary> /// <param name="deviceID"></param> public void UploadLog() { string currentTime = System.DateTime.Now.ToString(); List<UploadLogMain> uploadLogMains = new List<UploadLogMain>(); UploadLogMain uploadLogMain = new UploadLogMain(); uploadLogMain.PracticeId = GlobalFlag.practiceSubjectID; uploadLogMain.ThinkId = GlobalFlag.currentThinkId; string log = currentTime + " " + transform.name + "(" + equipmentCommon.deviceID + ")频段设置为" + Frequency; uploadLogMain.log = log; uploadLogMains.Add(uploadLogMain); string uploadLogMainJson = JsonConvert.SerializeObject(uploadLogMains); WWWForm wWWForm = new WWWForm(); wWWForm.AddField("data", uploadLogMainJson); StartCoroutine(PostString(Url_Addpracticelog, wWWForm, data => { //Debug.Log(data); })); } /// <summary> /// 演习是否启动 /// </summary> void OnActivationChangedHandler(bool bol) { if (bol) { Debug.Log("开始演练"); } else { Debug.Log("结束演练"); } } /// <summary> /// 读取设备参数 /// </summary> public void FillInTheData(List<List_paraItem> weaponitemone) { for (int i = 0; i < weaponitemone.Count; i++) { switch (weaponitemone[i].para_name) { case "探测距离:": Detectionrange = weaponitemone[i].para_value; break; case "批目标处理能力:": Batchcapacity = weaponitemone[i].para_value; break; case "侦测频率:": string[] str = weaponitemone[i].para_value.Split(','); if (str.Length > 0) { for (int j = 0; j < str.Length; j++) { switch (str[j]) { case "0": frequency += "UHF" + ","; break; case "1": frequency += "L" + ","; break; case "2": frequency += "S" + ","; break; case "3": frequency += "C" + ","; break; case "4": frequency += "X" + ","; break; case "5": frequency += "Ku" + ","; break; case "6": frequency += "Ka" + ","; break; default: break; } } } break; case "探测成功率:": Detectionsuccessrate = weaponitemone[i].para_value; break; case "探测响应时间:": Responsetime = weaponitemone[i].para_value; break; case "测向精度:": Directionfindingaccuracy = weaponitemone[i].para_value; break; case "最小探测速度:": Minimumdetectionvelocity = weaponitemone[i].para_value; break; default: break; } } Microwavefrequency(); } private void Microwavefrequency() { if (frequency.Length > 0) { string[] str = frequency.Split(','); for (int i = 0; i < str.Length; i++) { switch (str[i]) { case "UHF": toggle1.gameObject.SetActive(true); break; case "L": toggle2.gameObject.SetActive(true); break; case "S": toggle3.gameObject.SetActive(true); break; case "C": toggle4.gameObject.SetActive(true); break; case "X": toggle5.gameObject.SetActive(true); break; case "Ku": toggle6.gameObject.SetActive(true); break; case "Ka": toggle7.gameObject.SetActive(true); break; default: break; } } } } /// <summary> /// 点击物体生成页面 /// </summary> /// <exception cref="NotImplementedException"></exception> private void Emittedray() { } /// <summary> /// 搜索范围内的无人机 /// </summary> private void Search() { Collider[] colliders = Physics.OverlapSphere(transform.position, float.Parse(Detectionrange) * 100); for (int i = 0; i < colliders.Length; i++) { if (colliders[i].transform.gameObject.tag == "WRJ") { //Debug.LogError("进来了"); UnmannedAerialVehicle unmannedAerialVehicle = null; if (colliders[i].GetComponent<UnmannedAerialVehicle>()) { unmannedAerialVehicle = colliders[i].GetComponent<UnmannedAerialVehicle>(); if (unmannedAerialVehicle != null&& unmannedAerialVehicle.unmannedAerialVehicleManage.dataLinkCommunicationFrequency== Frequency) { Microwaveweapon microwaveweapon = Microwaveweapon.MicrowaveweaponList.Find(x => (x != null && x.ismicow == false)); if (microwaveweapon) { microwaveweapon.ismicow = true; microwaveweapon.miceopos = unmannedAerialVehicle.transform; microwaveweapon.Orientation(); } } } } } } private void OnMouseDown() { if (equipmentCommon.isPlayer) { SpectrumdetectionUI.SetActive(true); } if (GlobalFlag.blueOrRed == 1) { EquipmentCommon equipmentCommon1 = GetComponent<EquipmentCommon>(); if (equipmentCommon.deviceID == equipmentCommon1.deviceID) { Frequencyiamge.transform.position = Camera.main.WorldToScreenPoint(transform.position); Frequencyiamge.gameObject.SetActive(true); } } //SpectrumdetectionUI.SetActive(true); } private void OnDestroy() { for(int i = 0; i < spectrumdetections.Count; i++) { if (spectrumdetections[i] == null) { spectrumdetections.RemoveAt(i); } } Destroy(Frequencyiamge.gameObject); OnActivationChanged -= OnActivationChangedHandler; } }