using DG.Tweening;
using HighlightPlus;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
///
/// 普通门
///
public class Door : Device_Base
{
public bool isOpen;
public ZhouEnum zhouEnum;
public float angele;
public float duration;
Dictionary dic;
//[SerializeField]
private Vector3 initR;
//[SerializeField]
private Vector3 nextR;
///
/// 判断是否可以打开或关闭
///
public Func canOpen;
///
/// 验电位置
///
public Transform testPosAndRot;
///
/// 是否带电
///
[ReconnetAtrribute]
public bool hasElectricity;
public DoorGroup group;
protected override void OnAwake()
{
base.OnAwake();
GetEndAngle();
}
protected override void OnMDown()
{
base.OnMDown();
if (LiveSceneManager.Instance?.currentTool != null && LiveSceneManager.Instance?.currentTool.name == "验电笔")
return;
if (group != null)
{
if (triggerAction == null || triggerAction.Invoke(triggerName, true) == 0)
group.OpenOrClose();
return;
}
else
{
bool canopen = (canOpen != null ? canOpen.Invoke() : true);
if (canopen)
{
if (triggerAction == null || triggerAction.Invoke(triggerName, true) == 0)
{
CanOpen();
}
}
}
}
public void CanOpen()
{
isOpen = !isOpen;
transform.DOLocalRotate(dic[isOpen], duration).OnComplete(() => { base.CallScoreAction(isOpen); });
}
private void GetEndAngle()
{
initR = transform.localEulerAngles;
transform.Rotate(new Vector3(zhouEnum == ZhouEnum.X ? 1 : 0, zhouEnum == ZhouEnum.Y ? 1 : 0, zhouEnum == ZhouEnum.Z ? 1 : 0), angele, Space.Self);
nextR = transform.localEulerAngles;
transform.localEulerAngles = initR;
dic = new Dictionary();
dic.Add(isOpen, initR);
dic.Add(!isOpen, nextR);
}
///
/// 设置门状态
///
///
public void SetState(bool isOpen)
{
this.isOpen = isOpen;
transform.localEulerAngles = dic[isOpen];
}
}
public enum ZhouEnum
{
X,
Y,
Z
}