using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
///
/// 接线
///
public class Tool_Line: Tool_Base
{
///
/// 是否接上
///
public bool isConnected;
///
/// 固定接线的螺丝
///
public List screws=new List();
///
/// 点击位置
///
public ClickMove line;
///
/// 节点
///
//private List points;
private SkinnedMeshRenderer render;
///
/// 操作后回调
///
private Action actionBack;
public void AddCompleteAction(Action actionBack)
{
this.actionBack = actionBack;
}
public void AddCanMoveCheck(Func canMoveCheck)
{
line.canOpen += canMoveCheck;
}
protected override void OnAwake()
{
base.OnAwake();
render=GetComponent();
//螺丝拧松才能动接线
line.canOpen += () =>
{
return screws.TrueForAll(a => !a.isInstall);
};
//点击接线
line.onStartAction += isconnect =>
{
if (isconnect)
Connected();
else
DisConnected();
};
//设置延迟执行时间
line.delayTime = 0.2f;
}
private void Connected()
{
//装上接线
transform.Find("包线").gameObject.SetActive(false);
int time = 100;
DOTween.To(() => time, x => render.SetBlendShapeWeight(0, x), 0, 0.5f).OnComplete(() =>
{
isConnected = true;
actionBack?.Invoke(isConnected);
//int state = (triggerAction == null ? 0 : triggerAction.Invoke(triggerName, true));
//CallScoreAction(true);
}).SetDelay(line.delayTime);
}
private void DisConnected()
{
//取下接线
int time = 0;
DOTween.To(() => time, x => render.SetBlendShapeWeight(0, x), 100, 0.5f).OnComplete(() =>
{
isConnected = false;
transform.Find("包线").gameObject.SetActive(true);
actionBack?.Invoke(isConnected);
//int state = (triggerAction == null ? 0 : triggerAction.Invoke(triggerName, true));
//CallScoreAction(false);
}).SetDelay(line.delayTime);
}
///
/// 设置连接状态
///
///
public void SetConenctState(bool isconneced)
{
isConnected = isconneced;
render.SetBlendShapeWeight(0, isconneced?0:100);
line.SetState(isConnected);
transform.Find("包线").gameObject.SetActive(!isconneced);
}
}