上海杨浦大连路地铁站单机版电子沙盘
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.
 
 
 
 

133 lines
5.0 KiB

using AX.MessageSystem;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[Serializable]
public class PoChaiData
{
public string name;
public bool standWrong;
}
public class ForcibleEntryPointControl : ObjDoubleClick
{
private bool has;
private bool standWrong = false;
public Transform WrongArea;
public Transform RightArea;
public Transform RightArea1;
public void Start()
{
MessageDispatcher.AddListener("ReplayEvent", ReplayEventPoChai);
WrongArea = transform.Find("WrongArea");
RightArea = transform.Find("RightArea");
RightArea1 = transform.Find("RightArea1");
}
private void ReplayEventPoChai(IMessage obj)
{
var eventData = (EventData)obj.Data;
if (eventData.eventType == RecordEventType.PoChai)
{
PoChaiData data = JsonUtility.FromJson<PoChaiData>(eventData.json);
if (data.name == gameObject.name)
{
gameObject.SetActive(false);
ResourceLoadWindow.Instance.LoadTextHintWindow("破拆完毕", 1f);
}
}
}
private void OnDestroy()
{
MessageDispatcher.RemoveListener("ReplayEvent", ReplayEventPoChai);
}
public override void ClickFunc()
{
base.ClickFunc();
List<KeyValuePair<FireManMessage, bool>> FireManList = new List<KeyValuePair<FireManMessage, bool>>();//保存就近消防员
foreach (Transform child in GameObject.Find("P_AllParent/P_People/P_FireMan").transform)
{
Vector3 pos1 = new Vector3(child.transform.position.x, WrongArea.position.y, child.transform.position.z);
float dis1 = Vector3.Distance(pos1, WrongArea.position);//站位错误
if (dis1 < 0.7f)
{
standWrong = true;
FireManList.Add(new KeyValuePair<FireManMessage, bool>(child.GetComponent<FireManMessage>(), standWrong));
continue;
}
Vector3 pos2 = new Vector3(child.transform.position.x, RightArea.position.y, child.transform.position.z);
float dis2 = Vector3.Distance(pos2, RightArea.position);//站位正确
if (dis2 < 0.7f)
{
standWrong = false;
FireManList.Add(new KeyValuePair<FireManMessage, bool>(child.GetComponent<FireManMessage>(), standWrong));
continue;
}
Vector3 pos3 = new Vector3(child.transform.position.x, RightArea1.position.y, child.transform.position.z);
float dis3 = Vector3.Distance(pos3, RightArea1.position);//站位正确
if (dis3 < 0.7f)
{
standWrong = false;
FireManList.Add(new KeyValuePair<FireManMessage, bool>(child.GetComponent<FireManMessage>(), standWrong));
continue;
}
}
if (FireManList.Count == 0)
{
ResourceLoadWindow.Instance.LoadTextHintWindow("请消防员站在破拆区域破拆", 1f);
}
else
{
for (int i = 0; i < FireManList.Count; i++)
{
if (FireManList[i].Key.workType != FireManSkills.ForcibleEntry)
{
FireManList.Remove(FireManList[i]);
i--;
}
}
if (FireManList.Count == 0)
{
ResourceLoadWindow.Instance.LoadTextHintWindow("请消防员选中破拆技能", 1f);
}
else if (FireManList.Count == 1)
{
if (FireManList[0].Value == true)
{
ResourceLoadWindow.Instance.LoadTextHintWindow("请消防员站在正确的位置破拆", 1f);
}
else
{
gameObject.SetActive(false);
ResourceLoadWindow.Instance.LoadTextHintWindow("破拆完毕", 1f);
RecordEvent.AddEventData(CloneObjType.None, RecordEventType.PoChai, JsonUtility.ToJson(
new PoChaiData() { name = gameObject.name, standWrong = this.standWrong }));
}
}
else
{
foreach (var item in FireManList)
{
if (item.Value == false)
{
has = true;
break;
}
}
if (has)
{
gameObject.SetActive(false);
ResourceLoadWindow.Instance.LoadTextHintWindow("破拆完毕", 1f);
RecordEvent.AddEventData(CloneObjType.None, RecordEventType.PoChai, JsonUtility.ToJson(
new PoChaiData() { name = gameObject.name, standWrong = this.standWrong }));
}
else
{
ResourceLoadWindow.Instance.LoadTextHintWindow("请消防员站在正确的位置破拆", 1f);
}
}
}
}
}