using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
///
/// 十字螺丝
///
public class Tool_Screw : Tool_Base
{
///
/// 是否已拧紧
///
public bool isInstall;
///
/// 上螺丝位置
///
public Transform installPos;
///
/// 是否带电
///
public bool hasElectricity;
///
/// 安装状态时Y的local值
///
public float initPostionY;
///
/// 螺丝拆装事件回调
///
private Action installAction;
///
/// 螺丝判断条件回调
///
private Func checkCanMove;
public void AddinstallAction(Action action)
{
this.installAction=action;
}
public void AddCheckAction(Func checkCanMove)
{
this.checkCanMove=checkCanMove;
}
protected override void OnMDown()
{
base.OnMDown();
}
///
/// 螺丝是否可以拧
///
///
public bool CanMove()
{
if(checkCanMove==null)
{
return true;
}
else
{
return checkCanMove.Invoke();
}
}
///
/// 被拧紧
///
///
public void BeInstalled(Tool_Screwdriver screwdriver)
{
//动画
transform.DOLocalMoveY(initPostionY, 1)
.OnUpdate(() =>
{
transform.RotateAroundLocal(Vector3.up, 1);
screwdriver.transform.position = installPos.position;
screwdriver.transform.RotateAroundLocal(Vector3.right, 10);
})
.OnComplete(() =>
{
Debug.Log("螺丝已拧紧");
isInstall = true;
isMoving = false;
screwdriver.isMoving = false;
installAction?.Invoke(true);
screwdriver.ReBackHead();
CallScoreAction(true);
});
}
///
/// 被拧松
///
///
public void BeUnInstalled(Tool_Screwdriver screwdriver)
{
//动画
transform.DOLocalMoveY(initPostionY - 0.02f, 1)
.OnUpdate(() =>
{
transform.RotateAroundLocal(Vector3.up, 1);
screwdriver.transform.position = installPos.position;
screwdriver.transform.RotateAroundLocal(Vector3.right, 10);
})
.OnComplete(() =>
{
Debug.Log("螺丝已拧松");
isInstall = false;
isMoving = false;
screwdriver.isMoving = false;
installAction?.Invoke(false);
screwdriver.ReBackHead();
CallScoreAction(false);
});
}
}