CultivationOfBrewing-2/Assets/Scripts/CXX/Tools/Tool_Line.cs

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);
}
}