石头
This commit is contained in:
@@ -1,17 +1,30 @@
|
||||
using DG.Tweening;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AibisDream
|
||||
{
|
||||
public class CoolingMachineSystem : MonoBehaviour, ICoolingMachine
|
||||
public class CoolingMachineViewer : MonoBehaviour, ICoolingMachine
|
||||
{
|
||||
public bool isMachineEmpty;
|
||||
|
||||
public GameObject bottleSlot;
|
||||
[Header("引用")] public GameObject bottleSlot;
|
||||
public CoolingBottle bottle;
|
||||
public GameObject pumpHead;
|
||||
public GameObject lockSwitch;
|
||||
public GameObject pumpButton;
|
||||
|
||||
public LockSlider lockSlider;
|
||||
public Transform pumpHead;
|
||||
|
||||
private SpriteButton _button;
|
||||
|
||||
[Header("参数")] public float pumpDuration = 3f;
|
||||
public float resetDuration = 0.5f;
|
||||
public float pumpHeadUpY;
|
||||
public float pumpHeadDownY;
|
||||
|
||||
#region 状态
|
||||
|
||||
[Header("状态")] public bool isMachineEmpty;
|
||||
public bool isLocked;
|
||||
public bool inLiquidChange;
|
||||
|
||||
#endregion
|
||||
|
||||
#region 对外暴露
|
||||
|
||||
public void LinkRobot()
|
||||
@@ -25,30 +38,35 @@ namespace AibisDream
|
||||
/// </summary>
|
||||
public void PumpCooling()
|
||||
{
|
||||
// 泵头下降
|
||||
|
||||
inLiquidChange = true;
|
||||
// 液面上升
|
||||
|
||||
// 完成后液体满了
|
||||
isMachineEmpty = true;
|
||||
bottle.LiquidUp(pumpDuration);
|
||||
// 泵头下降
|
||||
var sq = GenePumpHeadAnime();
|
||||
sq.OnComplete(() =>
|
||||
{
|
||||
inLiquidChange = false;
|
||||
isMachineEmpty = false;
|
||||
});
|
||||
}
|
||||
|
||||
public void UnlockBottle()
|
||||
{
|
||||
// 卡扣上移
|
||||
|
||||
// 瓶子外旋
|
||||
|
||||
// 机器空置
|
||||
// 动画效果拉杆处理了
|
||||
// 触发锁定逻辑
|
||||
isMachineEmpty = false;
|
||||
isLocked = false;
|
||||
bottle?.Unlock();
|
||||
lockSlider.DisableHook();
|
||||
}
|
||||
|
||||
public void MoveOutBottle()
|
||||
{
|
||||
if (bottle == null) return;
|
||||
// 瓶子置空
|
||||
bottle.transform.parent = null;
|
||||
|
||||
|
||||
// 停止吸附
|
||||
bottle?.Unsnap();
|
||||
}
|
||||
|
||||
public void InsertBottle(CoolingBottle newBottle)
|
||||
@@ -56,25 +74,33 @@ namespace AibisDream
|
||||
// 改变瓶子归属
|
||||
newBottle.transform.parent = bottleSlot.transform;
|
||||
bottle = newBottle;
|
||||
|
||||
// 插入瓶子
|
||||
bottle.Snap(bottleSlot.transform.position);
|
||||
}
|
||||
|
||||
public void LockBottle()
|
||||
{
|
||||
// 插槽回旋
|
||||
|
||||
// 卡扣下降
|
||||
|
||||
// 同步液体状态
|
||||
isMachineEmpty = bottle.isEmpty;
|
||||
|
||||
// TODO 同步泵头状态
|
||||
|
||||
// 动画效果在拉杆的地方就处理了
|
||||
// 触发锁定逻辑
|
||||
isMachineEmpty = !bottle || bottle.isEmpty;
|
||||
isLocked = true;
|
||||
bottle?.Lock();
|
||||
// 如果当前没有瓶子,就打开卡扣碰撞
|
||||
if (!bottle) lockSlider.EnableHook();
|
||||
}
|
||||
|
||||
public void InjectCool()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
inLiquidChange = true;
|
||||
// 泵头下降
|
||||
var sq = GenePumpHeadAnime();
|
||||
sq.OnComplete(() =>
|
||||
{
|
||||
inLiquidChange = false;
|
||||
isMachineEmpty = true;
|
||||
});
|
||||
// 液面上升
|
||||
bottle.LiquidDown(pumpDuration);
|
||||
}
|
||||
|
||||
public void UnlinkRobot()
|
||||
@@ -82,8 +108,44 @@ namespace AibisDream
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public bool CanPump()
|
||||
{
|
||||
if (inLiquidChange)
|
||||
{
|
||||
Debug.Log("泵机正在工作");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!isLocked)
|
||||
{
|
||||
Debug.Log("卡扣尚未锁定");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!bottle)
|
||||
{
|
||||
Debug.Log("没有瓶子");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
private Sequence GenePumpHeadAnime()
|
||||
{
|
||||
var sequence = DOTween.Sequence();
|
||||
// 下降动画
|
||||
var pumpDownPos = new Vector3(pumpHead.position.x, pumpHeadDownY + transform.position.y,
|
||||
pumpHead.position.z);
|
||||
sequence.Append(pumpHead.DOMove(pumpDownPos, pumpDuration));
|
||||
// 上升动画
|
||||
var pumpUpPos = new Vector3(pumpHead.position.x, pumpHeadUpY + transform.position.y, pumpHead.position.z);
|
||||
sequence.Append(pumpHead.DOMove(pumpUpPos, resetDuration));
|
||||
|
||||
return sequence;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -100,4 +162,4 @@ namespace AibisDream
|
||||
void InjectCool();
|
||||
void UnlinkRobot();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user