using AX.MessageSystem; using AX.NetworkSystem; using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public enum TruckSkills { 待命 = 0, 下车, 喷水, 喷泡沫, 固定支架, 自动举臂, 收回举臂, 破拆, 照明, 排烟, 拖车, 充气, 器材选择, 供泡沫, 供水, } public class TruckSkillPanelController : MonoBehaviour { #region 技能按钮 [Rename("下车")] public ToggleRecordByAC GetDownTruck; [Rename("喷水")] public ToggleRecordByAC SprayWater; [Rename("喷泡沫")] public ToggleRecordByAC SprayFoam; [Rename("固定支架")] public ToggleRecordByAC FixSupport; [Rename("自动举臂")] public ToggleRecordByAC AutoLift; [Rename("收回举臂")] public ToggleRecordByAC BackSupport; [Rename("破拆")] public ToggleRecordByAC ForceEntry; [Rename("照明")] public ToggleRecordByAC Lighting; [Rename("排烟")] public ToggleRecordByAC EjectSmoke; [Rename("拖车")] public ToggleRecordByAC TrailCar; [Rename("充气")] public ToggleRecordByAC AirSupply; [Rename("器材选择")] public ToggleRecordByAC EquipmentSelection; [Rename("供泡沫")] public ToggleRecordByAC FoamSupply; [Rename("供水")] public ToggleRecordByAC WaterSupply; #endregion public static TruckSkillPanelController GetInstance; public TruckMessage NowBindTruck; private List SkillList; public LayWaterPanel laywaterpanel; private Transform LayWaterUI; void Awake() { GetInstance = this; } void Start() { if (laywaterpanel == null) { laywaterpanel = GetComponent(); } LayWaterUI = transform.parent.Find("LayWaterPanel"); } void Update() { //if (SelectedObjs.selectedObj != null && SelectedObjs.selectedObj.GetComponent() && // (NowBindTruck == null || NowBindTruck != SelectedObjs.selectedObj.GetComponent() // )) //{ // //Debug.Log("TruckSelectChanged"); // SkillBind(SelectedObjs.selectedObj.GetComponent()); //} } public void SkillBind(TruckMessage truck) { if (NowBindTruck != truck) NowBindTruck = truck; BindSkill(NowBindTruck.MySkills, NowBindTruck.DisableSkills, NowBindTruck.NowSkill); if (NowBindTruck.GetComponent()) { if (/*NowBindTruck.GetComponent().ConnectFoam||*/ NowBindTruck.GetComponent().ConnectWater) { SprayWater.GetComponent().interactable = true; } else { SprayWater.GetComponent().interactable = false; } if (NowBindTruck.GetComponent().ConnectFoam) { SprayFoam.GetComponent().interactable = true; } else { SprayFoam.GetComponent().interactable = false; } if (NowBindTruck.NowSkill == TruckSkills.喷水 || NowBindTruck.NowSkill == TruckSkills.喷泡沫) { LayWaterUI.gameObject.SetActive(true); GetComponent().SetShowEnable(); } else { LayWaterUI.gameObject.SetActive(false); } if (NowBindTruck.NowSkill == TruckSkills.自动举臂) { InputManager.skill = true; InputManager.AutoArm = true; CursorManager.GetInstance.SetAutoLiftArm(); } } } #region 消防车技能处理 private void InitToggles() { GetDownTruck.OutInterFaceToggle = GetDownTruckMethod; SprayWater.OutInterFaceToggle = SprayWaterMethod; SprayFoam.OutInterFaceToggle = SprayFoamMethod; FixSupport.OutInterFaceToggle = FixSupportMethod; AutoLift.OutInterFaceToggle = AutoLiftMethod; BackSupport.OutInterFaceToggle = BackSupportMethod; ForceEntry.OutInterFaceToggle = ForceEntryMethod; Lighting.OutInterFaceToggle = LightingMethod; EjectSmoke.OutInterFaceToggle = EjectSmokeMethod; TrailCar.OutInterFaceToggle = TrailCarMethod; AirSupply.OutInterFaceToggle = AirSupplyMethod; EquipmentSelection.OutInterFaceToggle = EquipmentSelectionMethod; FoamSupply.OutInterFaceToggle = FoamSupplyMethod; WaterSupply.OutInterFaceToggle = WaterSupplyMethod; } /// /// 供水 /// /// private void WaterSupplyMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.供水; Debug.Log(TruckSkills.供水); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 供泡沫 /// /// private void FoamSupplyMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.供泡沫; Debug.Log(TruckSkills.供泡沫); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 装备选择 /// /// private void EquipmentSelectionMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.器材选择; Debug.Log(TruckSkills.器材选择); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 充气 /// /// private void AirSupplyMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.充气; Debug.Log(TruckSkills.充气); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 拖车 /// /// private void TrailCarMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.拖车; Debug.Log(TruckSkills.拖车); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 排烟 /// /// private void EjectSmokeMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.排烟; Debug.Log(TruckSkills.排烟); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 照明 /// /// private void LightingMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.照明; Debug.Log(TruckSkills.照明); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 破拆 /// /// private void ForceEntryMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.破拆; Debug.Log(TruckSkills.破拆); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } /// /// 收回支架 /// /// private void BackSupportMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.收回举臂; Debug.Log(TruckSkills.收回举臂); SkillManager.Instance.ArmReset(SelectedObjs.selectedObj, ok); if (!NowBindTruck.DisableSkills.Contains(TruckSkills.收回举臂)) { NowBindTruck.DisableSkills.Add(TruckSkills.收回举臂); BackSupport.GetComponent().interactable = false; BackSupport.GetComponent().isOn = false; } if (!NowBindTruck.DisableSkills.Contains(TruckSkills.自动举臂)) { NowBindTruck.DisableSkills.Add(TruckSkills.自动举臂); AutoLift.GetComponent().interactable = false; AutoLift.GetComponent().isOn = false; } if (NowBindTruck.DisableSkills.Contains(TruckSkills.固定支架)) { NowBindTruck.DisableSkills.Remove(TruckSkills.固定支架); FixSupport.GetComponent().interactable = true; } } } /// /// 自动举臂 /// /// private void AutoLiftMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.自动举臂; Debug.Log(TruckSkills.自动举臂); } else { CursorManager.GetInstance.SetNormal(); Debug.Log(TruckSkills.自动举臂 + "false"); } InputManager.AutoArm = ok; InputManager.skill = ok; } /// /// 固定支架 /// /// private void FixSupportMethod(bool ok) { if (ok) { NowBindTruck.NowSkill = TruckSkills.固定支架; Debug.Log(TruckSkills.固定支架); //释放技能 SkillManager.Instance.Fixation(SelectedObjs.selectedObj, ok); if (NowBindTruck.DisableSkills.Contains(TruckSkills.自动举臂)) { NowBindTruck.DisableSkills.Remove(TruckSkills.自动举臂); AutoLift.GetComponent().interactable = true; } if (NowBindTruck.DisableSkills.Contains(TruckSkills.收回举臂)) { NowBindTruck.DisableSkills.Remove(TruckSkills.收回举臂); BackSupport.GetComponent().interactable = true; } if (!NowBindTruck.DisableSkills.Contains(TruckSkills.固定支架)) { NowBindTruck.DisableSkills.Add(TruckSkills.固定支架); FixSupport.GetComponent().interactable = false; FixSupport.GetComponent().isOn = false; } } NowBindTruck.IsFixedSupport = ok; Debug.Log(NowBindTruck.name + NowBindTruck.IsFixedSupport); } /// /// 喷泡沫 /// /// private void SprayFoamMethod(bool ok) { if (ok) { if (NowBindTruck.NowSkill == TruckSkills.喷泡沫) { return; } float remain1 = NowBindTruck.GetComponent().checkWaterRemain(NowBindTruck.GetComponent().WaterSourceLine1); float remain2 = NowBindTruck.GetComponent().checkWaterRemain(NowBindTruck.GetComponent().WaterSourceLine2); if (!NowBindTruck.GetComponent()) {//非水源车 if (!((remain1 > 0 || remain1 == -100) || (remain2 > 0 || remain2 == -100))) {//没有水 LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f); return; } } else {//水源车 if (NowBindTruck.GetComponent().HasWaterSelfAndLine == false) { LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f); return; } } float remianfoam = NowBindTruck.GetComponent().CheckFoamRemain(); if (!(remianfoam > 0 || remianfoam == -100)) { LoadPromptWin.Instance.LoadTextPromptWindow("剩余泡沫量不足", 1f); return; } NowBindTruck.NowSkill = TruckSkills.喷泡沫; // Debug.Log(TruckSkills.喷泡沫); //NowBindTruck.GetComponent().Hose.gameObject.SetActive(true); laywaterpanel.laywater.gameObject.SetActive(true); NowBindTruck.GetComponent().SparyFoam(); laywaterpanel.SetShowEnable(); //MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = true, ChangObjId = NowBindTruck.GetComponent().gameObjID }); //出水同步 SpraySyncData spraysync = new SpraySyncData(); spraysync.SendUserID = CurrentUserInfo.mySelf.Id; spraysync.spraytype = SprayParticleType.Froth; spraysync.IsOn = true; spraysync.size = NowBindTruck.GetComponentInChildren(true).GetScaleValue(); spraysync.gameObjID = NowBindTruck.GetComponent().gameObjID; spraysync.UserID = NowBindTruck.GetComponent().UserID; spraysync.gameObjType = NowBindTruck.GetComponent().gameObjType; NetworkManager.Default.SendAsync("SPRAY_WATER_SYNC", spraysync); } else { NowBindTruck.NowSkill = TruckSkills.待命; laywaterpanel.laywater.gameObject.SetActive(false); //laywaterpanel.SelectSparyObj = null; //NowBindTruck.GetComponent().Hose.gameObject.SetActive(false); NowBindTruck.GetComponent().StopSpray(); // MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = false, ChangObjId = NowBindTruck.GetComponent().gameObjID }); if (NowBindTruck.GetComponent().Flow != 0) { NowBindTruck.GetComponent().Flow = 0; } //出水同步 SpraySyncData spraysync = new SpraySyncData(); spraysync.SendUserID = CurrentUserInfo.mySelf.Id; spraysync.spraytype = SprayParticleType.Froth; spraysync.IsOn = false; //spraysync.size = NowBindTruck.GetComponentInChildren(true).GetScaleValue(); spraysync.gameObjID = NowBindTruck.GetComponent().gameObjID; spraysync.UserID = NowBindTruck.GetComponent().UserID; spraysync.gameObjType = NowBindTruck.GetComponent().gameObjType; NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "SPRAY_WATER_SYNC", spraysync); } } /// /// 喷水 /// /// private void SprayWaterMethod(bool ok) { if (ok) { if (NowBindTruck.NowSkill == TruckSkills.喷水) { return; } if (NowBindTruck.GetComponent()) { //if (NowBindTruck.GetComponent().waterrunoutof) //{ // LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足",1f); // return; //} ////Todo:多水源 //if (NowBindTruck.GetComponent().ConnentWaterSource.GetComponent().hasover) //{ // LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f); // return; //} float remain1 = NowBindTruck.GetComponent().checkWaterRemain(NowBindTruck.GetComponent().WaterSourceLine1); float remain2 = NowBindTruck.GetComponent().checkWaterRemain(NowBindTruck.GetComponent().WaterSourceLine2); if (!NowBindTruck.GetComponent()) {//非水源车 if (!((remain1 > 0 || remain1 == -100) || (remain2 > 0 || remain2 == -100))) {//没有水 LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f); return; } } else {//水源车 if (NowBindTruck.GetComponent().HasWaterSelfAndLine == false) { LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f); return; } } NowBindTruck.NowSkill = TruckSkills.喷水; //NowBindTruck.GetComponent().Hose.gameObject.SetActive(true); laywaterpanel.laywater.gameObject.SetActive(true); //laywaterpanel.SelectSparyObj = NowBindTruck.gameObject; NowBindTruck.GetComponent().SparyWater(); laywaterpanel.SetShowEnable(); //MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = true, ChangObjId = NowBindTruck.GetComponent().gameObjID }); //出水同步 SpraySyncData spraysync = new SpraySyncData(); spraysync.SendUserID = CurrentUserInfo.mySelf.Id; spraysync.spraytype = SprayParticleType.WaterStraight; spraysync.IsOn = true; spraysync.size = NowBindTruck.GetComponentInChildren(true).GetScaleValue(); spraysync.gameObjID = NowBindTruck.GetComponent().gameObjID; spraysync.UserID = NowBindTruck.GetComponent().UserID; spraysync.gameObjType = NowBindTruck.GetComponent().gameObjType; NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "SPRAY_WATER_SYNC", spraysync); } } else { laywaterpanel.laywater.gameObject.SetActive(false); //laywaterpanel.SelectSparyObj = null; //NowBindTruck.GetComponent().Hose.gameObject.SetActive(false); NowBindTruck.GetComponent().StopSpray(); NowBindTruck.NowSkill = TruckSkills.待命; if (NowBindTruck.GetComponent().Flow != 0) { NowBindTruck.GetComponent().Flow = 0; } //MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = false, ChangObjId = NowBindTruck.GetComponent().gameObjID }); //出水同步 SpraySyncData spraysync = new SpraySyncData(); spraysync.SendUserID = CurrentUserInfo.mySelf.Id; spraysync.spraytype = SprayParticleType.WaterStraight; spraysync.IsOn = false; // spraysync.size = NowBindTruck.GetComponentInChildren(true).GetScaleValue(); spraysync.gameObjID = NowBindTruck.GetComponent().gameObjID; spraysync.UserID = NowBindTruck.GetComponent().UserID; spraysync.gameObjType = NowBindTruck.GetComponent().gameObjType; NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "SPRAY_WATER_SYNC", spraysync); } } /// /// 下车 /// /// private void GetDownTruckMethod(bool ok) { if (ok) { //NowBindTruck.NowSkill = TruckSkills.下车; Debug.Log(TruckSkills.下车); SkillManager.Instance.GetOff(SelectedObjs.selectedObj); } else { NowBindTruck.NowSkill = TruckSkills.待命; } } #endregion private void BindSkill(List AllSkills, List DisableSkills, TruckSkills NowSkill) { #region 消防车技能栏隐藏 GetDownTruck.gameObject.SetActive(false); SprayWater.gameObject.SetActive(false); SprayFoam.gameObject.SetActive(false); FixSupport.gameObject.SetActive(false); AutoLift.gameObject.SetActive(false); BackSupport.gameObject.SetActive(false); ForceEntry.gameObject.SetActive(false); Lighting.gameObject.SetActive(false); EjectSmoke.gameObject.SetActive(false); TrailCar.gameObject.SetActive(false); AirSupply.gameObject.SetActive(false); EquipmentSelection.gameObject.SetActive(false); FoamSupply.gameObject.SetActive(false); WaterSupply.gameObject.SetActive(false); GetDownTruck.GetComponent().isOn = false; SprayWater.GetComponent().isOn = false; SprayFoam.GetComponent().isOn = false; FixSupport.GetComponent().isOn = false; AutoLift.GetComponent().isOn = false; BackSupport.GetComponent().isOn = false; ForceEntry.GetComponent().isOn = false; Lighting.GetComponent().isOn = false; EjectSmoke.GetComponent().isOn = false; TrailCar.GetComponent().isOn = false; AirSupply.GetComponent().isOn = false; EquipmentSelection.GetComponent().isOn = false; FoamSupply.GetComponent().isOn = false; WaterSupply.GetComponent().isOn = false; GetDownTruck.GetComponent().interactable = true; SprayWater.GetComponent().interactable = true; SprayFoam.GetComponent().interactable = true; FixSupport.GetComponent().interactable = true; AutoLift.GetComponent().interactable = true; BackSupport.GetComponent().interactable = true; ForceEntry.GetComponent().interactable = true; Lighting.GetComponent().interactable = true; EjectSmoke.GetComponent().interactable = true; TrailCar.GetComponent().interactable = true; AirSupply.GetComponent().interactable = true; EquipmentSelection.GetComponent().interactable = true; FoamSupply.GetComponent().interactable = true; WaterSupply.GetComponent().interactable = true; #endregion #region 消防车技能栏显示 foreach (var item in AllSkills) { switch (item) { case TruckSkills.下车: GetDownTruck.gameObject.SetActive(true); break; case TruckSkills.喷水: SprayWater.gameObject.SetActive(true); break; case TruckSkills.喷泡沫: SprayFoam.gameObject.SetActive(true); break; case TruckSkills.固定支架: FixSupport.gameObject.SetActive(true); break; case TruckSkills.自动举臂: AutoLift.gameObject.SetActive(true); break; case TruckSkills.收回举臂: BackSupport.gameObject.SetActive(true); break; case TruckSkills.破拆: ForceEntry.gameObject.SetActive(true); break; case TruckSkills.照明: Lighting.gameObject.SetActive(true); break; case TruckSkills.排烟: EjectSmoke.gameObject.SetActive(true); break; case TruckSkills.拖车: TrailCar.gameObject.SetActive(true); break; case TruckSkills.充气: AirSupply.gameObject.SetActive(true); break; case TruckSkills.器材选择: EquipmentSelection.gameObject.SetActive(true); break; case TruckSkills.供泡沫: FoamSupply.gameObject.SetActive(true); break; case TruckSkills.供水: WaterSupply.gameObject.SetActive(true); break; default: break; } } #endregion #region 消防车技能栏禁用 foreach (var dis in DisableSkills) { switch (dis) { case TruckSkills.下车: GetDownTruck.GetComponent().interactable = false; break; case TruckSkills.喷水: SprayWater.GetComponent().interactable = false; break; case TruckSkills.喷泡沫: SprayFoam.GetComponent().interactable = false; break; case TruckSkills.固定支架: FixSupport.GetComponent().interactable = false; break; case TruckSkills.自动举臂: AutoLift.GetComponent().interactable = false; break; case TruckSkills.收回举臂: BackSupport.GetComponent().interactable = false; break; case TruckSkills.破拆: ForceEntry.GetComponent().interactable = false; break; case TruckSkills.照明: Lighting.GetComponent().interactable = false; break; case TruckSkills.排烟: EjectSmoke.GetComponent().interactable = false; break; case TruckSkills.拖车: TrailCar.GetComponent().interactable = false; break; case TruckSkills.充气: AirSupply.GetComponent().interactable = false; break; case TruckSkills.器材选择: EquipmentSelection.GetComponent().interactable = false; break; case TruckSkills.供泡沫: FoamSupply.GetComponent().interactable = false; break; case TruckSkills.供水: WaterSupply.GetComponent().interactable = false; break; default: break; } } #endregion InitToggles(); #region 消防车技绑定当前 switch (NowSkill) { case TruckSkills.下车: GetDownTruck.GetComponent().isOn = true; break; case TruckSkills.喷水: SprayWater.GetComponent().isOn = true; break; case TruckSkills.喷泡沫: SprayFoam.GetComponent().isOn = true; break; case TruckSkills.固定支架: FixSupport.GetComponent().isOn = true; break; case TruckSkills.自动举臂: AutoLift.GetComponent().isOn = true; break; case TruckSkills.收回举臂: BackSupport.GetComponent().isOn = true; break; case TruckSkills.破拆: ForceEntry.GetComponent().isOn = true; break; case TruckSkills.照明: Lighting.GetComponent().isOn = true; break; case TruckSkills.排烟: EjectSmoke.GetComponent().isOn = true; break; case TruckSkills.拖车: TrailCar.GetComponent().isOn = true; break; case TruckSkills.充气: AirSupply.GetComponent().isOn = true; break; case TruckSkills.器材选择: EquipmentSelection.GetComponent().isOn = true; break; case TruckSkills.供泡沫: FoamSupply.GetComponent().isOn = true; break; case TruckSkills.供水: WaterSupply.GetComponent().isOn = true; break; default: break; } #endregion } public List GetTruckSkills(CloneObjType CarType) { List resultList = null; #region 消防车技能加载判断 switch (CarType) { case CloneObjType.WaterTanker: resultList = new List() { TruckSkills.下车, TruckSkills.喷水,TruckSkills.供水 }; break; case CloneObjType.FoamTruck: resultList = new List() { TruckSkills.下车, TruckSkills.喷泡沫,TruckSkills.供泡沫, TruckSkills.喷水, TruckSkills.供水 }; break; case CloneObjType.HighSprayingTruck: case CloneObjType.LadderTruck: case CloneObjType.AerialTowerTruck: resultList = new List() { TruckSkills.下车, TruckSkills.喷水,TruckSkills.喷泡沫, TruckSkills.固定支架,TruckSkills.自动举臂,TruckSkills.收回举臂, }; break; case CloneObjType.SmokeExhaustTruck: resultList = new List() { TruckSkills.下车, //TruckSkills.排烟 }; break; case CloneObjType.RescueVehicle: resultList = new List() { TruckSkills.下车, //TruckSkills.拖车 }; break; case CloneObjType.LightingAppliance: resultList = new List() { TruckSkills.下车, //TruckSkills.照明 }; break; case CloneObjType.Apparatus: resultList = new List() { TruckSkills.下车, //TruckSkills.器材选择 }; break; case CloneObjType.AirSupplyTruck: resultList = new List() { TruckSkills.下车, //TruckSkills.充气 }; break; case CloneObjType.ForcibleEntryTruck: resultList = new List() { TruckSkills.下车, //TruckSkills.破拆, //TruckSkills.固定支架,TruckSkills.自动举臂,TruckSkills.收回举臂, }; break; } #endregion return resultList; } }