CultivationOfBrewing-2/Assets/Scripts/CXX/Tools/Tool_Fence.cs

101 lines
3.4 KiB
C#
Raw Permalink Blame History

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);
}
}