using AdamSync; using AdamThinkDevicesData; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; using static InterfaceManager; /// /// 重点保护目标 /// public class HighPriorityTarget : MonoBehaviour { /// /// 重点保护目标集合 /// public static List HighPriorityTargets = new List(); /// /// 重点设备完整度 /// public static float EquipmentIntegrity = 1; /// /// 编号 /// public string Number; #region 单体保护目标属性 /// /// 单体保护目标属性血量 /// public float HP = 100; #endregion /// /// 重点目标UI看向摄像机 /// public Transform KeyObjectiveUI; /// /// 爆炸预制体 /// public GameObject explodePrefab; /// /// 完整模型 /// public GameObject ModerFull; /// /// 损坏模型 /// public GameObject ModerDamage; /// /// 调节频率面板 /// public GameObject regulate; /// /// 关闭频率面板 /// public Button buttonreg; /// ///确认按钮 /// public Button quren_btn; /// /// 频率选择 /// //public Toggle toggle1, toggle2, toggle3, toggle4, toggle5, toggle6, toggle7; /// /// 频段设置 /// public List togFrequencyBands = new List(); /// /// 接收的字段 /// public string frequency; /// /// 显示地图上的位置 /// //public GameObject gamepos; void Start() { //gamepos.gameObject.SetActive(false); HighPriorityTargets.Add(this); Number = HighPriorityTargets.Count.ToString(); buttonreg.onClick.AddListener(() => { regulate.gameObject.SetActive(false); }); //Interferencefrequency(); //频段设置 //foreach (Toggle toggle in togFrequencyBands) //{ // toggle.onValueChanged.AddListener(delegate { FrequencyBandsValueChanged(toggle); }); //} //多频段选择 for (int i = 0; i < togFrequencyBands.Count; i++) { int index = i; togFrequencyBands[index].onValueChanged.AddListener((ison) => { if (ison == true) { frequency += togFrequencyBands[index].name + ";"; } else { string str = togFrequencyBands[index].name + ";"; frequency = frequency.Replace(str, ""); } }); } quren_btn.onClick.AddListener(() => { regulate.gameObject.SetActive(false); //string[] str = frequency.Split(';'); //List ints = new List(); //for (int i = 0; i < str.Length; i++) //{ // int index = i; // if (str[index] != "") // { // Debug.LogError(str[index]); // int layerValue = LayerMask.NameToLayer(str[index]); // ints.Add(layerValue); // } //} //for (int i = 0; i < ints.Count; i++) //{ // Debug.LogError(ints[i]); // gamepos.layer |= 1 << ints[i]; //} FrequencyBandsValueChanged(); }); } void FrequencyBandsValueChanged() { string nowData = GetSyncDataTwo(); MyNetMQClient.instance.Send(nowData); //DeviceManager.Instance.send2roomStr.Enqueue(nowData); //MQTTManager.instance.SendData(MQTTManager.instance.BandSetting, nowData); } /// /// 频段设置 /// /// //void FrequencyBandsValueChanged(Toggle change) //{ // if (change.isOn) // { // frequency = change.transform.name; // int layerValue = LayerMask.NameToLayer(frequency); // gamepos.layer = layerValue; // string nowData = GetSyncDataTwo(); // MyNetMQClient.instance.Send(nowData); // //DeviceManager.Instance.send2roomStr.Enqueue(nowData); // //MQTTManager.instance.SendData(MQTTManager.instance.BandSetting, nowData); // } //} public void FrequencyGamepos(string _frequency) { frequency = _frequency; //string[] str = _frequency.Split(';'); //List ints = new List(); //for (int i = 0; i < str.Length; i++) //{ // int index = i; // if (str[index] != "") // { // int layerValue = LayerMask.NameToLayer(str[index]); // Debug.LogError(layerValue); // ints.Add(layerValue); // } //} //for (int i = 0; i < ints.Count; i++) //{ // gamepos.layer |= 1 << ints[i]; //} //int layerValue = LayerMask.NameToLayer(_frequency); //frequency = _frequency; //gamepos.layer = layerValue; } void Update() { if (Camera.main) KeyObjectiveUI.transform.LookAt(Camera.main.transform); if (GlobalFlag.blueOrRed == 1) { if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (EventSystem.current.IsPointerOverGameObject()) { return; } if (Physics.Raycast(ray, out hit, 1000)) { HighPriorityTarget highPriorityTarget = hit.transform.GetComponent(); if (!GlobalFlag.isStartRehearsing && highPriorityTarget && highPriorityTarget.Number == Number) { GameManager.Instance.GetAllImportance(); regulate.transform.position = Camera.main.WorldToScreenPoint(hit.point); regulate.gameObject.SetActive(true); } } } } //if (Spectrumdetection.Radius > 0) //{ // if (gamepos) // { // gamepos.gameObject.SetActive(true); // switch (Spectrumdetection.Radius) // { // case 1: // gamepos.transform.localScale = new Vector3(10, 1, 10); // break; // case 2: // gamepos.transform.localScale = new Vector3(20, 1, 20); // break; // case 3: // gamepos.transform.localScale = new Vector3(30, 1, 30); // break; // default: // break; // } // } //} } /// /// 被攻击 /// /// 被攻击时触发点位置 /// 是否向外发送同步消息 public void BeAssaulted(Vector3 Pos, bool isSend, int hp = 0) { if (isSend) { HP -= 10; string nowData = GetSyncDis(Pos); Debug.Log("发送:" + nowData); MyNetMQClient.instance.Send(nowData); //DeviceManager.Instance.send2roomStr.Enqueue(nowData); //MQTTManager.instance.SendData(MQTTManager.instance.KeyTarget, nowData); } else { HP = hp; } GameObject Bao = Instantiate(explodePrefab); Bao.transform.position = Pos; Bao.SetActive(true); if (HP < 50 && HP > 0) { ModerFull.SetActive(false); ModerDamage.SetActive(true); } else if (HP <= 0) { GameObject BaoMain = Instantiate(explodePrefab, transform); BaoMain.transform.localPosition = Vector3.zero; BaoMain.transform.localScale = Vector3.one * 10; BaoMain.transform.SetParent(null); BaoMain.SetActive(true); Destroy(gameObject); } } protected string GetSyncDis(Vector3 pos) { return string.Format("{0},{1},{2},{3},{4},{5}", "KeyTarget", Number, HP, pos.x, pos.y, pos.z); } /// /// 同步频率 /// /// protected string GetSyncDataTwo() { UploadLog(); return string.Format("{0},{1},{2},{3}", "BandSetting", "ZYMB", Number, frequency); } /// ///上传日志 /// /// public void UploadLog() { string currentTime = System.DateTime.Now.ToString(); List uploadLogMains = new List(); UploadLogMain uploadLogMain = new UploadLogMain(); uploadLogMain.PracticeId = GlobalFlag.practiceSubjectID; uploadLogMain.ThinkId = GlobalFlag.currentThinkId; string log = currentTime + " " + "重要用户(" + Number + ")频段设置为" + 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); })); } }