CultivationOfBrewing-2/Assets/Scripts/CXX/Devices/直接接入式电能计量装置/Device_Switch.cs

122 lines
2.4 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Device_Switch : Device_Base
{
[ReconnetAtrribute]
public bool isOpen;
/// <summary>
/// 是否启用位置移动
/// </summary>
public bool isMovePos;
/// <summary>
/// 是否启用角度旋转
/// </summary>
public bool isMoveAng;
/// <summary>
/// 打开时local位置
/// </summary>
public Vector3 OpenLocalPos;
/// <summary>
/// 打开时local角度
/// </summary>
public Vector3 OpenlcoalAng;
/// <summary>
/// 关闭时local位置和角度
/// </summary>
public Vector3 CloseLocalPos;
/// <summary>
/// 关闭时local角度
/// </summary>
public Vector3 CloselcoalAng;
/// <summary>
/// 操作开关事件
/// </summary>
private Action<bool> actionBack;
private Func<bool> checkAction;
/// <summary>
/// 添加开关操作回调
/// </summary>
/// <param name="actionBack"></param>
public void AddAction(Action<bool> actionBack)
{
this.actionBack = actionBack;
}
public void AddCheckAction(Func<bool> checkAction)
{
this.checkAction = checkAction;
}
protected override void OnMDown()
{
base.OnMDown();
if (checkAction==null || checkAction.Invoke())
{
MyClick();
}
}
/// <summary>
/// 点击
/// </summary>
public void MyClick()
{
if ((triggerAction == null ? 0 : triggerAction.Invoke(triggerName, true)) == 0)
{
if (isOpen)
{
CloseState();
}
else
{
OpenState();
}
//调用自定义事件
if (actionBack != null)
{
actionBack.Invoke(isOpen);
}
CallScoreAction(isOpen);
}
}
/// <summary>
/// 开关打开状态
/// </summary>
public void OpenState()
{
isOpen = true;
if(isMoveAng)
transform.localEulerAngles = OpenlcoalAng;
if (isMovePos)
transform.localPosition = OpenLocalPos;
}
/// <summary>
/// 开关关闭状态
/// </summary>
public void CloseState()
{
isOpen = false;
if (isMoveAng)
transform.localEulerAngles = CloselcoalAng;
if (isMovePos)
transform.localPosition = CloseLocalPos; ;
}
}