网上演练贵港万达广场(人员密集)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

1103 lines
46 KiB

using AX.InputSystem;
using AX.MessageSystem;
using AX.NetworkSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
using UnityEngine.UI;
public class FireManSkillPanelController : MonoBehaviour
{
[Rename("选中的消防员")]
public GameObject SelectFireMan;
/// <summary>
/// 当前连接的管线
/// </summary>
public GameObject FiremanAssociatedLine;
[Rename("人员技能panel")]
public Transform FiremanSkillPanel;
[Rename("连接管线")]
public ToggleRecordByAC AssociatedLine;
[Rename("铺设水带")]
public ToggleRecordByAC LayWaterHoseToggle;
[Rename("拿起水带")]
public ToggleRecordByAC TakeUpWaterLine;
[Rename("铺设救生照明线")]
public ToggleRecordByAC LayLiftSaveLine;
//[Rename("拿起救生照明线")]
// public ToggleRecordByAC TakeUpLiftSaveLine;
//[Rename("放下水带")]
//public ButtonRecordByAC LayDownWaterHose;
[Rename("收起管线")]
public ToggleRecordByAC PackUpLine;
[Rename("出水")]
public ToggleRecordByAC SprayWater;
[Rename("救助")]
public ToggleRecordByAC Save;
[Rename("急救")]
public ToggleRecordByAC FristAid;
[Rename("移动")]
public ToggleRecordByAC Move;
[Rename("引导")]
public ToggleRecordByAC Guidance;
[Rename("侦察")]
public ToggleRecordByAC TagSearchRoom;
[Rename("4G图传")]
public ToggleRecordByAC PictureTransmission;
[Rename("引导员")]
public ToggleRecordByAC Usher;
[Rename("破拆 ")]
public ToggleRecordByAC ForcibleEntry;
[Rename("安全员")]
public ToggleRecordByAC SafetyOfficer;
[Rename("警戒")]
public ToggleRecordByAC GuardAgainst;
[Rename("水源引导")]
public ToggleRecordByAC WaterGuiding;
[Rename("装备选择")]
public ToggleRecordByAC EquipSelect;
[Rename("背包")]
public ToggleRecordByAC Backpack;
[Rename("询问知情人")]
public ToggleRecordByAC AskInsder;
public ToggleRecordByAC ClearDangerous;
//(灭火剂只有水)出水选择
public Transform LayWaterPanel;
public ExtinguishantSelectPanel extinguishantSelect;
private static FireManSkillPanelController instance;
private Transform P_safearea;
private Transform p_Hitpoint;
private Transform firemanskillcontant;//所有技能toggle的父对象
public bool SelectChange = false;
//private bool isselectspray;
public static FireManSkillPanelController Instance
{
get
{
return instance;
}
}
// Use this for initialization
void Start()
{
instance = this;
P_safearea = GameObject.Find("P_AllParent/P_Tools/P_SafeArea").transform;
p_Hitpoint = GameObject.Find("P_AllParent/P_Hitpoint").transform;
ClearDangerous.OutInterFaceToggle = ClearDangerousChange;
AskInsder.OutInterFaceToggle = AskInsderChange;
Backpack.OutInterFaceToggle = BackpackChange;
EquipSelect.OutInterFaceToggle = EquipSelectChange;
WaterGuiding.OutInterFaceToggle = WaterGuidingChange;
GuardAgainst.OutInterFaceToggle = GuardAgainstChange;
SafetyOfficer.OutInterFaceToggle = SafetyOfficerChange;
Usher.OutInterFaceToggle = UsherChange;
ForcibleEntry.OutInterFaceToggle = ForcibleEntryChange;
PictureTransmission.OutInterFaceToggle = PictureTransmissionChange;
TagSearchRoom.OutInterFaceToggle = TagSearchRoomChange;
Guidance.OutInterFaceToggle = GuidanceChange;
Move.OutInterFaceToggle = MoveChange;
FristAid.OutInterFaceToggle = FristAidChange;
Save.OutInterFaceToggle = SaveChange;
SprayWater.OutInterFaceToggle = SprayWaterChange;
PackUpLine.OutInterFaceToggle = PackUpLineChange;
// TakeUpLiftSaveLine.OutInterFaceToggle = TakeUpLiftSaveLineChange;
LayLiftSaveLine.OutInterFaceToggle = LayLiftSaveLineChange;
TakeUpWaterLine.OutInterFaceToggle = TackUpWaterLineChange;
//LayDownWaterHose.OutInterFaceButton = LayDownWaterHoseClick;
LayWaterHoseToggle.OutInterFaceToggle = LayWaterHoseChange;
AssociatedLine.OutInterFaceToggle = AssociatedLineChange;
firemanskillcontant = AssociatedLine.transform.parent;
}
/// <summary>
/// 重置消防员技能UI及选择消防员
/// </summary>
public void ResertFiremanSkill()
{
//SelectFireMan = select;
Toggle[] all = FiremanSkillPanel.GetComponentsInChildren<Toggle>();
for (int i = 0; i < all.Length; i++)
{
if (all[i].name == "SprayWater")
{
all[i].interactable = false;
}
else
{
if (!all[i].interactable)
{
all[i].interactable = true;
}
}
if (all[i].isOn)
{
all[i].isOn = false;
}
}
}
/// <summary>
/// 根据当前选择的消防员设置UI显示,并为设置当前选中消防员
/// </summary>
/// <param name="select"></param>
public void SetSkillSelectFireman(GameObject select)
{
SelectChange = true;
SelectFireMan = select;
//ResertFiremanSkill();
switch (select.GetComponent<FireManControl>().workType)
{
case FireManSkills.None:
ResertFiremanSkill();
break;
case FireManSkills.AssociatedLine:
AssociatedLine.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.LayWaterHose:
LayWaterHoseToggle.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.TakeUpWaterLine:
TakeUpWaterLine.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
//case FireManSkills.LayLifeSavingFlarePath:
// LayLiftSaveLine.GetComponent<Toggle>().isOn = true;
// break;
//case FireManSkills.TakeUpLifeSavingLine:
// TakeUpLiftSaveLine.GetComponent<Toggle>().isOn = true;
// break;
case FireManSkills.PackUpLine:
PackUpLine.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.SprayWater:
SprayWater.GetComponent<Toggle>().interactable = true;
SprayWater.GetComponent<Toggle>().isOn = true;
LayWaterPanel.gameObject.SetActive(true);
//isselectspray = true;
break;
case FireManSkills.Save:
Save.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.FristAid:
Save.GetComponent<Toggle>().isOn = true;
FristAid.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.Move:
Save.GetComponent<Toggle>().isOn = true;
Move.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.Guidance:
Save.GetComponent<Toggle>().isOn = true;
Guidance.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.TagSearchRoom:
TagSearchRoom.GetComponent<Toggle>().isOn = true;
TagSearchRoomSkillPanel.Instance.Show(select);
InputManager.skill = true;
InputManager.isTagSearchRoom = true;
break;
case FireManSkills.PictureTransmission:
PictureTransmission.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.Usher:
Usher.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.SafetyOfficer:
SafetyOfficer.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.GuardAgainst:
GuardAgainst.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.WaterGuiding:
WaterGuiding.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.EquipSelect:
EquipSelect.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.Backpack:
Backpack.GetComponent<Toggle>().isOn = true;
break;
case FireManSkills.AskPeople:
AskInsder.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.ClearDangerous:
ClearDangerous.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
case FireManSkills.ForcibleEntry:
ForcibleEntry.GetComponent<Toggle>().isOn = true;
InputManager.skill = true;
break;
}
if (select.GetComponent<FireManControl>() && select.GetComponent<FireManControl>().workType == FireManSkills.AssociatedLine)
{
InputManager.cloneObjType = CloneObjType.OrdinaryHose;
}
//是否是在急救或者移动伤员中
if (select.GetComponent<FireManControl>().IsFirstAirOrMoving)
{
SetSkillDisable();
}
else
{
SetSkillEnable();
}
if (select.GetComponent<FireManWaterHoseManager>())
{
if (select.GetComponent<FireManWaterHoseManager>().IsConnentWaterSource)
{
SprayWater.GetComponent<Toggle>().interactable = true;
}
else
{
SprayWater.GetComponent<Toggle>().isOn = false;
SprayWater.GetComponent<Toggle>().interactable = false;
}
}
if (select.GetComponent<FireManControl>() &&
select.GetComponent<FireManControl>().workType == FireManSkills.SprayWater &&
/*select.GetComponent<FireManControl>().SelectParticleType != SprayParticleType.Froth &&*/
select.GetComponent<FireManControl>().SelectParticleType != SprayParticleType.DryPowder)
{
LayWaterPanel.gameObject.SetActive(true);
GetComponent<LayWaterPanel>().SetShowEnable();
}
else
{
LayWaterPanel.gameObject.SetActive(false);
}
SelectChange = false;
}
private void ClearDangerousChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
InputManager.skill = true;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.ClearDangerous;
}
else
{
InputManager.skill = false;
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
}
private void AskInsderChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
InputManager.skill = true;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.AskPeople;
}
else
{
InputManager.skill = false;
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
}
private void EquipSelectChange(bool value)
{
if (value)
{
UIManager.ShowView<UIViewEquipLib>();
UIManager.ShowView<UIViewBag>();
InputManager.cloneObjType = CloneObjType.None;
}
else
{
UIManager.HideView<UIViewEquipLib>();
UIManager.HideView<UIViewBag>();
}
}
private void UsherChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.Usher;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName + "-<color=red> 引导员 </color>";
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName;
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
}
private void ForcibleEntryChange(bool value)
{
if (value)
{
if (SelectFireMan.GetComponent<FireManControl>().workType == FireManSkills.ForcibleEntry)
{//本身就是破拆技能进来
return;
}
if (!SelectFireMan.GetComponent<Bags>().HasEquip("无齿锯"))
{//没有装备无齿锯
LoadPromptWin.Instance.LoadTextPromptWindow("请先装备无齿锯", 1f);
ForcibleEntry.GetComponent<Toggle>().isOn = false;
return;
}
if (!SelectFireMan.transform.Find("WuChiJu").gameObject.activeInHierarchy)
{
SelectFireMan.transform.Find("WuChiJu").gameObject.SetActive(true);
}
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.ForcibleEntry;
InputManager.skill = true;
}
else
{
if (SelectFireMan.transform.Find("WuChiJu").gameObject.activeInHierarchy)
{
SelectFireMan.transform.Find("WuChiJu").gameObject.SetActive(false);
}
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.skill = false;
}
}
private void TakeUpLiftSaveLineChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
}
}
private void LayLiftSaveLineChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
}
}
private void BackpackChange(bool value)
{
if (value)
{
UIManager.ShowView<UIViewBag>();
InputManager.cloneObjType = CloneObjType.None;
}
else
{
UIManager.HideView<UIViewEquipLib>();
UIManager.HideView<UIViewBag>();
}
}
private void WaterGuidingChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.WaterGuiding;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName + "<color=red> 水源引导 </color>";
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName;
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
}
private void GuardAgainstChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.GuardAgainst;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName + "-<color=red> 警戒 </color>";
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName;
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
}
private void SafetyOfficerChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.SafetyOfficer;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName + "-<color=red> 安全员 </color>";
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName;
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
}
}
/// <summary>
/// 4G图传
/// </summary>
/// <param name="value"></param>
private void PictureTransmissionChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.PictureTransmission;
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
}
private void TagSearchRoomChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.TagSearchRoom;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName + "-<color=red> 侦察 </color>";
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
InputManager.isTagSearchRoom = true;
InputManager.skill = true;
TagSearchRoomSkillPanel.Instance.Show(SelectFireMan);
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
ChangeUINameCmdArgs arg = new ChangeUINameCmdArgs();
arg.gameObjID = SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID;
arg.Value = SelectFireMan.GetComponent<CloneGameObjInfo>().FullName;
MessageDispatcher.SendMessage("CHANGE_HEAD_NAME", arg);
//换技能或取消技能按钮选中的处理
InputManager.skill = false;
InputManager.isTagSearchRoom = false;
TagSearchRoomSkillPanel.Instance.Hide();
InputManager.tagSearchRoomPoint = Vector3.zero;
//如果消防员已经在去侦察点的路上或者在从侦察点回到起始点的路上,这时换技能或取消技能按钮选中,打断消防员寻路
if (SelectFireMan.GetComponent<AgentController>().begionmove)
{
SelectFireMan.GetComponent<AgentController>().StopAllCoroutines();
SelectFireMan.GetComponent<NavMeshAgent>().SetDestination(SelectFireMan.transform.position);
//同步打断寻路的状态
NetworkManager.Default.SendAsync("INTERRUPT_PATHFINDING_SYNC", SelectFireMan.GetComponent<CloneGameObjInfo>().gameObjID);
}
}
}
private void GuidanceChange(bool value)
{
if (value)
{
if (P_safearea.childCount <= 0)
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未设置安全区,无法进行引导,请设置安全区后再尝试", 2f);
Guidance.GetComponent<Toggle>().isOn = false;
return;
}
if (SelectFireMan.GetComponent<FireManControl>().workType == FireManSkills.Guidance)
{
return;
}
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.Guidance;
InputManager.skill = true;
InputManager.GuidanceList.Clear();
for (int i = 0; i < p_Hitpoint.childCount; i++)
{
Destroy(p_Hitpoint.GetChild(i).gameObject);
}
}
else
{
//if (SelectFireMan.GetComponent<FireManControl>().workType != FireManSkills.Guidance)
//{//换选
// return;
//}
//如果没有引导人员
if (SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped == null)
{
InputManager.skill = false;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.GuidanceList.Clear();
InputManager.IsGuidance = false;
return;
}
else
{
if (P_safearea.childCount <= 0)
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未设置安全区,不能引导", 2f);
InputManager.skill = false;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.GuidanceList.Clear();
InputManager.IsGuidance = false;
if (SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped != null)
{
//SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().Guidance = false;
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().CancelGuidance();
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped = null;
}
return;
}
if (InputManager.GuidanceList.Count<=0)
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未设置引导路径,引导失败", 2f);
InputManager.skill = false;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.GuidanceList.Clear();
InputManager.IsGuidance = false;
if (SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped != null)
{
//SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().Guidance = false;
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().CancelGuidance();
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped = null;
}
return;
}
Vector3 guidendpos = InputManager.GuidanceList[InputManager.GuidanceList.Count - 1];
Vector3 safepos = P_safearea.GetChild(0).transform.position;
if (InputManager.GuidanceList.Count > 0 &&
(Mathf.Abs(guidendpos.x - safepos.x) < 10 && Mathf.Abs(guidendpos.z - safepos.z) < 10))
{
//引导命令
GuideLodeCmdArgs arg = new GuideLodeCmdArgs();
arg.pathpointList = InputManager.GuidanceList;
arg.FireManID = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
arg.TrappedID = SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<BaseGameObjInfo>().gameObjID;
TrappedMoveFollowGuidePointCommand.Instance.Execute(SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID, arg);
InputManager.skill = false;
InputManager.IsGuidance = false;
InputManager.GuidanceList.Clear();
for (int i = 0; i < p_Hitpoint.childCount; i++)
{
Destroy(p_Hitpoint.GetChild(i).gameObject);
}
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped = null;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
else
{
InputManager.GuidanceList.Clear();
for (int i = 0; i < p_Hitpoint.childCount; i++)
{
Destroy(p_Hitpoint.GetChild(i).gameObject);
}
LoadPromptWin.Instance.LoadTextPromptWindow("不能将伤员引导至安全区,请重新规划路线", 3f);
InputManager.skill = false;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.GuidanceList.Clear();
InputManager.IsGuidance = false;
if (SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped != null)
{
//SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().Guidance = false;
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped.GetComponent<TrappedMoveFree>().CancelGuidance();
SelectFireMan.GetComponent<FiremanMoveTrapped>().GuidanceTrapped = null;
}
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
}
MessageDispatcher.SendMessage("FiremanHitCancel");
}
}
private void MoveChange(bool value)
{
if (value)
{
if (P_safearea.childCount <= 0)
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未设置安全区,不能移动,请设置安全区后再尝试", 2f);
Move.GetComponent<Toggle>().isOn = false;
return;
}
if (SelectFireMan.GetComponent<FireManControl>().workType == FireManSkills.Move)
{
return;
}
InputManager.cloneObjType = CloneObjType.None;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.Move;
InputManager.skill = true;
}
else
{
if (SelectFireMan.GetComponent<FireManControl>().workType != FireManSkills.Move)
{//没有安全区打开,然后关闭
return;
}
//如果没有轻伤员跟随,不管设没设安全区,直接关闭技能
if (SelectFireMan.GetComponent<FiremanMoveTrapped>().trappedlist.Count <= 0)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.skill = false;
return;
}
else//有轻伤员跟随
{
//开启技能的时候有安全区,中途把安全区删掉,关闭技能的时候没有安全区了
if (P_safearea.childCount <= 0)
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未设置安全区,不能停止移动", 2f);
Move.GetComponent<Toggle>().isOn = true;
return;
}
else
{
//正常情况
GameObject trapped = EntitiesManager.Instance.GetEntityByID(SelectFireMan.GetComponent<FiremanMoveTrapped>().trappedlist[0]);
if (P_safearea.childCount > 0)
{
SafeAreaMessage smess = P_safearea.GetComponentInChildren<SafeAreaMessage>();
Vector3 trappedpos = trapped.transform.position;
Vector3 safepos = P_safearea.GetChild(0).transform.position;
if (!(Mathf.Abs(trappedpos.x - safepos.x) < smess.sideLength / 2 &&
Mathf.Abs(trappedpos.z - safepos.z) < smess.sideLength / 2))
{
LoadPromptWin.Instance.LoadTextPromptWindow("尚未将伤员移动至安全区,不能停止移动", 2f);
Move.GetComponent<Toggle>().isOn = true;
return;
}
else
{
//结束移动消息
MessageDispatcher.SendMessage("ENDMOVE", SelectFireMan);
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.skill = false;
}
}
}
}
}
}
private void FristAidChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
if (value)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.FristAid;
InputManager.skill = true;
}
else
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.skill = false;
}
}
}
private void SaveChange(bool value)
{
// InputManager.skill = value;
if (!value)
{
Debug.Log(SelectChange + "+++selectchangge");
FristAid.GetComponent<Toggle>().isOn = false;
Move.GetComponent<Toggle>().isOn = false;
Guidance.GetComponent<Toggle>().isOn = false;
if (!SelectChange)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
InputManager.skill = false;
FristAid.gameObject.SetActive(value);
Move.gameObject.SetActive(value);
Guidance.gameObject.SetActive(value);
}
else
{
FristAid.gameObject.SetActive(value);
Move.gameObject.SetActive(value);
Guidance.gameObject.SetActive(value);
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.Save;
}
}
private void SprayWaterChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
//if (!SelectFireMan.GetComponent<AgentController>().pathFindEnable)
//{
// SelectFireMan.GetComponent<AgentController>().pathFindEnable = true;
//}
// InputManager.skill = true;
SelectFireMan.GetComponent<LayWaterHose>().SetWaterInfoWhileSpray();
if (SelectFireMan.GetComponent<FireManWaterHoseManager>().IsConnentWaterSource)
{
//如果本身就是出水技能
if (SelectFireMan.GetComponent<FireManControl>().workType == FireManSkills.SprayWater)
{
SelectFireMan.GetComponent<AgentController>().pathFindEnable = true;
LayWaterPanel.gameObject.SetActive(true);
if (SelectFireMan.GetComponent<FireManControl>().waterrunoutof)
{
SelectFireMan.GetComponent<FireManControl>().DestoryPartical();
}
else
{
SelectFireMan.GetComponent<FireManControl>().SetLay(value);
//SelectFireMan.GetComponent<FireManControl>().SetParticleType(SelectFireMan.GetComponent<FireManControl>().SelectParticleType);
//LayWaterPanel.gameObject.SetActive(true);
}
GetComponent<LayWaterPanel>().SetShowEnable();
}
else//开启出水
{
//if (SelectFireMan.GetComponent<FireManControl>().waterrunoutof)
//{
// LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f);
// //MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = true, ChangObjId = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID });
// return;
//}
//if (SelectFireMan.GetComponent<FireManWaterHoseManager>().ConnentSource.GetComponent<WaterSource>().hasover)
//{
// LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f);
// return;
//}
if(SelectFireMan.GetComponent<FireManWaterHoseManager>().ConnentSource==null)
{
Debug.Log("fmskpm----+false");
SprayWater.GetComponent<Toggle>().isOn = false;
return;
}
float remain = SelectFireMan.GetComponent<FireManControl>().CheckWaterRemain(SelectFireMan.GetComponent<FireManWaterHoseManager>().WaterSourceLine);
if (!(remain>0||remain==-100))
{
LoadPromptWin.Instance.LoadTextPromptWindow("剩余水量不足", 1f);
return;
}
//有泡沫,弹窗出水还是出泡沫
if (SelectFireMan.GetComponent<FireManWaterHoseManager>().hasFoamConnect)
{
// if (isselectspray)
{
extinguishantSelect.gameObject.SetActive(true);
extinguishantSelect.SelectFireman = SelectFireMan;
return;
}
}
//只有水
if (SelectFireMan.GetComponent<FireManWaterHoseManager>().hasWaterConnect || !SelectFireMan.GetComponent<FireManWaterHoseManager>().hasFoamConnect)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.SprayWater;
SelectFireMan.GetComponent<AgentController>().pathFindEnable = true;
//设置出水动画和水枪显示
SelectFireMan.GetComponent<FireManControl>().SetLay(value);
//默认直流
SelectFireMan.GetComponent<FireManControl>().SetParticleType(SprayParticleType.WaterStraight);
LayWaterPanel.gameObject.SetActive(true);
//GetComponent<LayWaterPanel>().SelectSparyObj = SelectFireMan;
//SetShowEnable()里面设置了Flow值
GetComponent<LayWaterPanel>().SetShowEnable();
//SelectFireMan.GetComponent<FireManControl>().SetLay(value);
SelectFireMan.GetComponent<LayWaterHose>().StartSprayingLay();
//连接水源流量设置
// MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = true, ChangObjId = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID });
////同步水源信息
//var arg = new HoseConnectOrDelectData();
//arg.StartId = SelectFireMan.GetComponent<FireManWaterHoseManager>().ConnentSource.GetComponent<BaseGameObjInfo>().gameObjID;
//arg.EndId = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
//arg.HoseId = SelectFireMan.GetComponent<FireManWaterHoseManager>().WaterLineConnent.GetComponent<BaseGameObjInfo>().gameObjID;
//arg.Isconnect = true;
//MessageDispatcher.SendMessage("HOSE_CONNECT_OR_DELECT", arg);
//出水同步
SpraySyncData spraysync = new SpraySyncData();
spraysync.SendUserID = CurrentUserInfo.mySelf.Id;
spraysync.IsOn = true;
spraysync.spraytype = SprayParticleType.WaterStraight;
spraysync.size = 0.2f;
spraysync.gameObjID = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
spraysync.UserID = SelectFireMan.GetComponent<BaseGameObjInfo>().UserID;
spraysync.gameObjType = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjType;
NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "SPRAY_WATER_SYNC", spraysync);
}
}
}
}
else
{
if (extinguishantSelect.gameObject.activeInHierarchy)
{
extinguishantSelect.gameObject.SetActive(false);
}
//InputManager.skill = false;
LayWaterPanel.gameObject.SetActive(false);
SelectFireMan.GetComponent<FireManControl>().SetLay(value);
SelectFireMan.GetComponent<FireManControl>().DestoryPartical();
//这里面判断了能否寻路
SelectFireMan.GetComponent<LayWaterHose>().EndLay(false,false);
//SelectFireMan.GetComponent<FireManControl>().ParticleSize = 0;
//SelectFireMan.GetComponent<FireManControl>().SelectParticleType = SprayParticleType.WaterStraight;
if (SelectFireMan.GetComponent<FireManControl>().Flow!=0)
{
SelectFireMan.GetComponent<FireManControl>().Flow = 0;
}
// MessageDispatcher.SendMessage("SPRAY_WATER", new flowchangeinfo() { IsAdd = false, ChangObjId = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID });
//出水状态下停止铺设不重置水源信息
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
SpraySyncData spraysync = new SpraySyncData();
spraysync.SendUserID = CurrentUserInfo.mySelf.Id;
spraysync.IsOn = false;
// spraysync.spraytype = SprayParticleType.WaterStraight;
spraysync.gameObjID = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
spraysync.UserID = SelectFireMan.GetComponent<BaseGameObjInfo>().UserID;
spraysync.gameObjType = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjType;
NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "SPRAY_WATER_SYNC", spraysync);
}
}
/// <summary>
/// 连接管线
/// </summary>
/// <param name="value"></param>
private void AssociatedLineChange(bool value)
{
if (value)
{
InputManager.skill = false;
InputManager.cloneObjType = CloneObjType.OrdinaryHose;
MessageDispatcher.SendMessage("CloneSelected");//克隆按钮选中,取消技能触发
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.AssociatedLine;
//InputManager.skill = true;
}
else
{
if (SelectFireMan.GetComponent<FireManControl>().workType == FireManSkills.AssociatedLine)
{
if (FiremanAssociatedLine != null)
{
if (FiremanAssociatedLine.GetComponent<ParentLinesMessage>().LineLenght > 0)
{
if (!FiremanAssociatedLine.GetComponent<ParentLinesMessage>().hascalculate)
{
WaterHoseExpend expend = new WaterHoseExpend
{
WaterHoseDraw = FiremanAssociatedLine,
Distance = FiremanAssociatedLine.GetComponent<ParentLinesMessage>().LineLenght,
Fireman = SelectFireMan,
ExpendNum = Mathf.CeilToInt(FiremanAssociatedLine.GetComponent<ParentLinesMessage>().LineLenght / 20),
};
MessageDispatcher.SendMessage("WATERHOSEEXPEND", expend);
}
}
else
{
Destroy(FiremanAssociatedLine);
}
}
}
if (!SelectChange)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
AX.MessageSystem.MessageDispatcher.SendMessage("RESERTLINT");
//关闭连接管线
var argresertsync = new AssociatedLineSyncDate();
argresertsync.SendUserID = CurrentUserInfo.mySelf.Id;
//argresertsync.IsResert = true;
NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "ASSOCIATED_LINE_SYNC", argresertsync);
InputManager.cloneObjType = CloneObjType.None;
//InputManager.skill = false;
}
}
private void TackUpWaterLineChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
InputManager.skill = true;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.TakeUpWaterLine;
}
else
{
if (!SelectChange)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
InputManager.skill = false;
}
}
private void PackUpLineChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
InputManager.skill = true;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.PackUpLine;
}
else
{
if (!SelectChange)
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
InputManager.skill = false;
}
}
/// <summary>
/// 铺设水带
/// </summary>
/// <param name="value"></param>
private void LayWaterHoseChange(bool value)
{
if (value)
{
InputManager.cloneObjType = CloneObjType.None;
//InputManager.skill = true;
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.LayWaterHose;
//if (SelectFireMan.GetComponent<FireManWaterHoseManager>().WaterHoseLenghtRemain <= 0)
//{
// LoadPromptWin.Instance.LoadTextPromptWindow("未装备水带或水带已用完", 1f);
// LayWaterHoseToggle.transform.Find("Label").GetComponent<Text>().text = "放下水带";
// return;
//}
SelectFireMan.GetComponent<LayWaterHose>().StartLay();
LayWaterHoseToggle.transform.Find("Label").GetComponent<Text>().text = "放下水带";
//铺设水带同步
LayerWaterHoseSyncData syncarg = new LayerWaterHoseSyncData();
syncarg.SendUserID = CurrentUserInfo.mySelf.Id;
syncarg.IsBegin = true;
syncarg.gameObjID = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
syncarg.UserID = SelectFireMan.GetComponent<BaseGameObjInfo>().UserID;
syncarg.gameObjType = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjType;
NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "LAY_WATER_HOSE_SYNC", syncarg);
}
else
{
//InputManager.skill = false;
LayWaterHoseToggle.transform.Find("Label").GetComponent<Text>().text = "铺设水带";
SelectFireMan.GetComponent<LayWaterHose>().EndLay();
if (!SelectChange)
{
SelectFireMan.GetComponent<FireManControl>().workType = FireManSkills.None;
}
LayerWaterHoseSyncData syncarg = new LayerWaterHoseSyncData();
syncarg.SendUserID = CurrentUserInfo.mySelf.Id;
syncarg.IsBegin = false;
syncarg.gameObjID = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjID;
syncarg.UserID = SelectFireMan.GetComponent<BaseGameObjInfo>().UserID;
syncarg.gameObjType = SelectFireMan.GetComponent<BaseGameObjInfo>().gameObjType;
NetworkManager.Default.SendAsync(/*CurrentUserInfo.mySelf.Id,*/ "LAY_WATER_HOSE_SYNC", syncarg);
}
}
public void SetSkillDisable()
{
for (int i = 0; i < firemanskillcontant.childCount; i++)
{
if (firemanskillcontant.GetChild(i).GetComponent<Toggle>())
{
firemanskillcontant.GetChild(i).GetComponent<Toggle>().interactable = false;
}
}
}
public void SetSkillEnable()
{
for (int i = 0; i < firemanskillcontant.childCount; i++)
{
if (firemanskillcontant.GetChild(i).GetComponent<Toggle>())
{
firemanskillcontant.GetChild(i).GetComponent<Toggle>().interactable = true ;
}
}
}
}