using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
///
/// 围栏
///
public class Tool_Fence : Tool_Base
{
///
/// 是否展开
///
public bool isOpen;
///
/// 安装拆除事件
///
private Action installAction;
protected override void OnMDown()
{
base.OnMDown();
//收回
UnInstall();
}
///
/// 安装围栏
///
///
public void Install(DeviceTrigger deviceTrigger,Action installAction)
{
if (triggerAction == null || triggerAction.Invoke(deviceTrigger.triggerName, false) == 0)
{
isMoving = true;
transform.parent = null;
triggerName = deviceTrigger.triggerName + "围栏";
deviceTrigger.gameObject.SetActive(false);
transform.transform.position = deviceTrigger.transform.position;
transform.transform.eulerAngles = deviceTrigger.transform.eulerAngles;
transform.transform.localScale = new Vector3(deviceTrigger.transform.localScale.x, deviceTrigger.transform.localScale.y, transform.transform.localScale.z);
hand_out_action?.Invoke();
this.installAction = installAction;
transform.DOScale(deviceTrigger.transform.localScale, 1).OnComplete(() =>
{
isMoving = false;
LiveSceneManager.Instance.OnCheckSubProcess(false);
isOpen = true;
installAction?.Invoke(true);
triggerAction.Invoke(deviceTrigger.triggerName, true);
transform.GetComponent().enabled = true;
});
}
}
///
/// 拆除围栏
///
public void UnInstall()
{
if (!isMoving)
{
if (triggerAction == null || triggerAction.Invoke(triggerName, false) == 0)
{
isMoving = true;
transform.DOScale(new Vector3(transform.localScale.x, transform.localScale.y, 0.1f), 1).OnComplete(() =>
{
isMoving = false;
isOpen = false;
installAction?.Invoke(false);
triggerAction.Invoke(triggerName, true);
base.CallScoreAction(false);
Destroy(gameObject);
});
}
}
}
///
/// 直接设置围栏
///
///
///
public void SetInstallState(DeviceTrigger deviceTrigger, Action installAction)
{
transform.parent = null;
this.installAction = installAction;
triggerName = deviceTrigger.triggerName + "围栏";
deviceTrigger.gameObject.SetActive(false);
transform.transform.position = deviceTrigger.transform.position;
transform.transform.eulerAngles = deviceTrigger.transform.eulerAngles;
transform.localScale = deviceTrigger.transform.localScale;
isOpen = true;
transform.GetComponent().enabled = true;
transform.GetComponentsInChildren(true).ToList().ForEach(a=>a.Awake());
transform.GetComponentsInChildren(true).ToList().ForEach(a => a.Awake());
installAction?.Invoke(true);
}
}