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