CultivationOfBrewing-2/Assets/Scripts/CXX/Devices/专变采集终端/Device_SpecializedVariableA...

130 lines
3.9 KiB
C#

using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 专变电源电台插头
/// </summary>
public class Device_SpecializedVariableAcquisitionTerminal_PowerPlug : Device_Base
{
public bool isInstalled;
public BoxCollider collider_install;
public BoxCollider collider_uninstall;
/// <summary>
/// 插头红端
/// </summary>
public Tool_Screw redOne;
/// <summary>
/// 插头黑端
/// </summary>
public Tool_Screw blackOne;
public Action<bool> installActon;
protected override void OnAwake()
{
base.OnAwake();
//不能拧
redOne.AddCheckAction(() => { return false; });
blackOne.AddCheckAction(() => { return false; });
}
protected override void OnMDown()
{
base.OnMDown();
if (isInstalled)
UnInstall();
else
Install();
}
/// <summary>
/// 插上
/// </summary>
public void Install()
{
if (!isMoving && !isInstalled)
{
if (triggerAction?.Invoke(triggerName, false) == 0)
{
//插上
isMoving = true;
redOne.gameObject.SetActive(false);
blackOne.gameObject.SetActive(false);
float currentValue = transform.GetComponent<SkinnedMeshRenderer>().GetBlendShapeWeight(0);
DOTween.To(() => { return currentValue; }, (vlue) =>
{
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, vlue);
}, 0f, 1f).OnComplete(() =>
{
isMoving = false;
collider_install.enabled = true;
collider_uninstall.enabled = false;
isInstalled = true;
installActon?.Invoke(true);
triggerAction?.Invoke(triggerName, true);
});
}
}
}
/// <summary>
/// 拔下
/// </summary>
public void UnInstall()
{
if (!isMoving && isInstalled)
{
if (triggerAction?.Invoke(triggerName, false) == 0)
{
//拔下
isMoving = true;
float currentValue = transform.GetComponent<SkinnedMeshRenderer>().GetBlendShapeWeight(0);
DOTween.To(() => { return currentValue; }, (vlue) =>
{
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, vlue);
}, 100f, 1f).OnComplete(() =>
{
isMoving = false;
collider_install.enabled = false;
collider_uninstall.enabled = true;
redOne.gameObject.SetActive(true);
blackOne.gameObject.SetActive(true);
isInstalled = false;
installActon?.Invoke(false);
triggerAction?.Invoke(triggerName,true);
});
}
}
}
/// <summary>
/// 直接设置状态(无动画)
/// </summary>
/// <param name="isinstalled"></param>
public void SetState(bool isinstalled)
{
this.isInstalled=isinstalled;
if (isinstalled)
{
//插上
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, 0);
collider_install.enabled = true;
collider_uninstall.enabled = false;
redOne.gameObject.SetActive(false);
blackOne.gameObject.SetActive(false);
}
else
{
//拔出
transform.GetComponent<SkinnedMeshRenderer>().SetBlendShapeWeight(0, 100f);
collider_install.enabled = false;
collider_uninstall.enabled = true;
redOne.gameObject.SetActive(true);
blackOne.gameObject.SetActive(true);
}
}
}