using UnityEngine; using System.Collections; using System.Collections.Generic; using AX.MessageSystem; using AX.TrackRecord; using System; /// /// 管线连接两个点操作 /// public enum TypeOfLink : int { 没有连接 = 0, xiaofangyuan = 1, xiaofangche = 2, xiaofangshuan = 3, xiaofangjing = 4 } public class RLineControl : MonoBehaviour { public TypeOfLink Link = TypeOfLink.没有连接; private GameObject LinkGanXian; //搭接的管线 public List LineList_GameObject = new List(); [HideInInspector] public bool Checkxfs = false; public GameObject hoseOfXFY; private Animator Ani; Enemy enemy; void Start() { enemy = this.GetComponent(); Ani = this.gameObject.GetComponent(); } //void Update() //{ // if (LineList_GameObject.Count < 1 && GetComponent().isConnectCar) // {//如果水带链表没有元素,并且LineamentEvent.isConnectCar还是真 // Debug.Log(gameObject.name+"可以移动,不再连接"); // GetComponent().isConnectCar = false; // } //} public void CheckXFS() { //for (int i = 0; i < RecordList.Count; i++) //{ // if (RecordList[i].gameObject.name.Contains("Cylinder")) // { // Checkxfs = true; // } //} //if (Checkxfs) //{ // for (int i = 0; i < RecordList.Count; i++) // { // GameObject obj = RecordList[i] as GameObject; // if (obj.name.Contains("xiaofang")) // { // obj.GetComponent().Checkxfs = true; // } // } //} } public void AddLineC(List lineList) { StartCoroutine(AddLineTo(lineList)); } private IEnumerator AddLineTo(List lineList) { yield return new WaitForSeconds(1f); for(int i = 0; i < lineList.Count; i++) { var lineName = lineList[i].lineName; GameObject line = TransformHelper.FindChild(GameObject.Find("AllParent").transform, lineName).gameObject; LineList_GameObject.Add(line); GameObject begin = null, end = null; if(lineList[i].begin.Contains("XHS") || lineList[i].begin.Contains("xhs")) { begin = GameObject.Find(lineList[i].begin); if (begin == null) { var bt = TransformHelper.FindChild(GameObject.Find("SceneAll").transform, lineList[i].begin); if (bt != null) { begin = bt.gameObject; } else { Debug.Log("11"); } } } else { var b = TransformHelper.FindChild(GameObject.Find("AllParent").transform, lineList[i].begin); if (b != null) { begin = b.gameObject; } else { Debug.Log("b"); } } if (lineList[i].end.Contains("XHS") || lineList[i].end.Contains("xhs")) { end = GameObject.Find(lineList[i].end); if (end == null) { var et = TransformHelper.FindChild(GameObject.Find("SceneAll").transform, lineList[i].end); if (et != null) { end = et.gameObject; } else { Debug.Log("22"); } } } else { var e = TransformHelper.FindChild(GameObject.Find("AllParent").transform, lineList[i].end); if (e != null) { end = e.gameObject; } else { Debug.Log("e"); } } if(begin!=null && end != null) { line.GetComponent().GetTheMessage(begin, end); } } } public void GetLianJieOb(GameObject ob) { //接受搭接的管线OBJ LinkGanXian = ob; LineList_GameObject.Add(LinkGanXian); GuanXianIDScript guaxianId = LinkGanXian.GetComponent(); MessageDispatcher.SendMessage("SelectControl",(object)""); MessageDispatcher.SendMessage("ResettingButton"); if (RecordManager.Instance.IsRecording) { StartCoroutine(StartCoutine()); } LineamentEvent.gameobj = null; } public void GetLianJieOb_Layer(GameObject ob) { //接受搭接的管线OBJ LinkGanXian = ob; LineList_GameObject.Add(LinkGanXian); GuanXianIDScript guaxianId = LinkGanXian.GetComponent(); MessageDispatcher.SendMessage("SelectControl", (object)""); if (RecordManager.Instance.IsRecording) { StartCoroutine(StartCoutine()); } LineamentEvent.gameobj = null; } IEnumerator StartCoutine() { yield return new WaitForSeconds(Time.deltaTime * 2); GameObject start = LinkGanXian.GetComponent().GuanXianList[0]; GameObject end = LinkGanXian.GetComponent().GuanXianList[1]; TrackRecordHelpClass.RecordAddLineToXFYEvent(LinkGanXian.name, gameObject.name, start.name, end.name); } public void GetStopShui(GameObject pline) { for (int i = 0; i < LineList_GameObject.Count; i++) //遍历当前搭接消防员身上的管线,如果包含传来的管线,去除管线 { GameObject Pline = LineList_GameObject[i] as GameObject; if (Pline.name.Equals(pline.name)) { LineList_GameObject.Remove(Pline); } } if (this.gameObject.transform.Find("info/Function").gameObject.GetComponent().text == "待命") //删除时候的调用,当前状态为待命,直接返回 { return; } if (this.gameObject.name.Contains("xiaofangche")) { if (LineList_GameObject.Count < 1)//2 { //如果去除后的管线数为零,关闭喷水,当前状态为待命 if (hoseOfXFY&&hoseOfXFY.activeInHierarchy) {//如果管线存在,并且已经被激活 hoseOfXFY.SetActive(false); MessageDispatcher.SendMessage("Operatinghints", (object)"水源不足停止出水"); enemy.InitFunction("待命"); } } } else { if (LineList_GameObject.Count == 0) { //如果去除后的管线数为零,关闭喷水,当前状态为待命 if (hoseOfXFY) { hoseOfXFY.SetActive(false); enemy.InitFunction("待命"); MessageDispatcher.SendMessage("Operatinghints", (object)"没有连接水源停止出水"); Ani.SetBool("isInSitu", false); } } } //for (int j = 0; j < LineList_GameObject.Count; j++) //如果不为零,删除后满足条件继续灭火 //{ // GameObject link = LineList_GameObject[j] as GameObject; // string begin = link.GetComponent().Begin.ToString(); // string end = link.GetComponent().End.ToString(); // if (begin.IndexOf(TypeOfLink.xiaofangyuan.ToString()) >= 0 && end.IndexOf(TypeOfLink.xiaofangjing.ToString()) >= 0 || end.IndexOf(TypeOfLink.xiaofangshuan.ToString()) >= 0 || end.IndexOf(TypeOfLink.xiaofangche.ToString()) >= 0) // { // if (hoseOfXFY) // hoseOfXFY.SetActive(true); // return; // } // else if (end.IndexOf(TypeOfLink.xiaofangyuan.ToString()) >= 0 && begin.IndexOf(TypeOfLink.xiaofangjing.ToString()) >= 0 || begin.IndexOf(TypeOfLink.xiaofangshuan.ToString()) >= 0 || begin.IndexOf(TypeOfLink.xiaofangche.ToString()) >= 0) // { // if (hoseOfXFY) // hoseOfXFY.SetActive(true); // return; // } // else // { //以上没有满足,如果当前为灭火状态,改为待命状态 // if (hoseOfXFY) // { // if (hoseOfXFY.activeInHierarchy == true) // { // //enemy.InitFunction("待命"); // hoseOfXFY.SetActive(false); // } // } // } //} } }