113 lines
2.8 KiB
C#
113 lines
2.8 KiB
C#
using DG.Tweening;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using UnityEngine;
|
|
|
|
|
|
/// <summary>
|
|
/// 接线
|
|
/// </summary>
|
|
public class Tool_Line: Tool_Base
|
|
{
|
|
/// <summary>
|
|
/// 是否接上
|
|
/// </summary>
|
|
public bool isConnected;
|
|
|
|
/// <summary>
|
|
/// 固定接线的螺丝
|
|
/// </summary>
|
|
public List<Tool_Screw> screws=new List<Tool_Screw>();
|
|
/// <summary>
|
|
/// 点击位置
|
|
/// </summary>
|
|
public ClickMove line;
|
|
|
|
/// <summary>
|
|
/// 节点
|
|
/// </summary>
|
|
//private List<Tool_LinePoint> points;
|
|
private SkinnedMeshRenderer render;
|
|
/// <summary>
|
|
/// 操作后回调
|
|
/// </summary>
|
|
private Action<bool> actionBack;
|
|
|
|
|
|
|
|
|
|
public void AddCompleteAction(Action<bool> actionBack)
|
|
{
|
|
this.actionBack = actionBack;
|
|
}
|
|
public void AddCanMoveCheck(Func<bool> canMoveCheck)
|
|
{
|
|
line.canOpen += canMoveCheck;
|
|
}
|
|
|
|
|
|
protected override void OnAwake()
|
|
{
|
|
base.OnAwake();
|
|
render=GetComponent<SkinnedMeshRenderer>();
|
|
//螺丝拧松才能动接线
|
|
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);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置连接状态
|
|
/// </summary>
|
|
/// <param name="isconneced"></param>
|
|
public void SetConenctState(bool isconneced)
|
|
{
|
|
isConnected = isconneced;
|
|
render.SetBlendShapeWeight(0, isconneced?0:100);
|
|
line.SetState(isConnected);
|
|
transform.Find("包线").gameObject.SetActive(!isconneced);
|
|
}
|
|
|
|
|
|
}
|