101 lines
3.4 KiB
C#
101 lines
3.4 KiB
C#
using DG.Tweening;
|
||
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using UnityEngine;
|
||
|
||
/// <summary>
|
||
/// 鍋으
|
||
/// </summary>
|
||
public class Tool_Fence : Tool_Base
|
||
{
|
||
/// <summary>
|
||
/// 角뤠嵐역
|
||
/// </summary>
|
||
public bool isOpen;
|
||
/// <summary>
|
||
/// 갛陋뀔뇜慤숭
|
||
/// </summary>
|
||
private Action<bool> installAction;
|
||
protected override void OnMDown()
|
||
{
|
||
base.OnMDown();
|
||
//澗쀼
|
||
UnInstall();
|
||
}
|
||
|
||
/// <summary>
|
||
/// 갛陋鍋으
|
||
/// </summary>
|
||
/// <param name="deviceTrigger"></param>
|
||
public void Install(DeviceTrigger deviceTrigger,Action<bool> 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<BoxCollider>().enabled = true;
|
||
});
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 뀔뇜鍋으
|
||
/// </summary>
|
||
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);
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
/// <summary>
|
||
/// 殮쌈<E6AEAE>零鍋으
|
||
/// </summary>
|
||
/// <param name="deviceTrigger"></param>
|
||
/// <param name="installAction"></param>
|
||
public void SetInstallState(DeviceTrigger deviceTrigger, Action<bool> 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<BoxCollider>().enabled = true;
|
||
transform.GetComponentsInChildren<Tool_Base>(true).ToList().ForEach(a=>a.Awake());
|
||
transform.GetComponentsInChildren<Device_Base>(true).ToList().ForEach(a => a.Awake());
|
||
installAction?.Invoke(true);
|
||
}
|
||
}
|