Files
aibis-dream/Assets/Scripts/FixSystemNew/CoolingMachine/PumpController.cs
T
2024-12-24 13:52:41 +08:00

140 lines
3.9 KiB
C#

using System.Collections;
using AibisDream.Framework;
using DG.Tweening;
using UnityEngine;
namespace AibisDream.FixSystem
{
public class PumpController : MonoBehaviour
{
[Header("整体位置")]
public Vector3 hidePos;
public Vector3 showPos;
public Vector3 topBuckleUnlockPos;
public Vector3 leftBuckleUnlockPos;
public Vector3 rightBuckleUnlockPos;
public Vector3 topBuckleLockPos;
public Vector3 leftBuckleLockPos;
public Vector3 rightBuckleLockPos;
[Header("移动用时")]
public float showDuration;
public float buckleDuration;
#region 组件索引
private CoolingSystem _coolingSystem;
private SpriteButton _lockButton;
private SpriteButton _pumpButton;
private Transform _topBuckle;
private Transform _leftBuckle;
private Transform _rightBuckle;
private BottleSlot _bottleSlot;
#endregion
private void Awake()
{
InitRefs();
// 隐藏
gameObject.SetActive(false);
transform.localPosition = hidePos;
}
private void InitRefs()
{
// 初始化引用
_coolingSystem = GetComponentInParent<CoolingSystem>();
var buckleGroup = transform.Find("按键卡扣组");
_lockButton = new SpriteButton(buckleGroup.Find("Lock Button").gameObject);
_pumpButton = new SpriteButton(buckleGroup.Find("Pump Button").gameObject);
_lockButton.OnButtonDown += LockButtonDown;
_pumpButton.OnButtonDown += PumpButtonDown;
_topBuckle = buckleGroup.Find("上下卡扣");
_leftBuckle = buckleGroup.Find("左卡扣");
_rightBuckle = buckleGroup.Find("右卡扣");
// _bottleSlot = GetComponentInChildren<BottleSlot>();
// _bottleSlot?.InsertSlotEvent += _coolingSystem.InsertBottle;
}
#region 按钮
private void LockButtonDown()
{
if (_coolingSystem.isLocked)
{
_coolingSystem.Unlock();
}
else
{
_coolingSystem.Lock();
}
}
private void PumpButtonDown()
{
_coolingSystem.StartPump();
}
private void Update()
{
_lockButton.CheckButtonClick();
_pumpButton.CheckButtonClick();
}
#endregion
#region 对外暴露
/// <summary>
/// 显示泵机UI
/// </summary>
/// <returns>显示</returns>
public IEnumerator Show()
{
gameObject.SetActive(true);
Tween tween = transform.DOLocalMove(showPos, showDuration);
while (tween.active && !tween.IsComplete())
{
yield return null;
}
}
/// <summary>
/// 隐藏泵机UI
/// </summary>
/// <returns>隐藏</returns>
public IEnumerator Hide()
{
Tween tween = transform.DOLocalMove(hidePos, showDuration);
while (tween.active && !tween.IsComplete())
{
yield return null;
}
gameObject.SetActive(false);
}
public void OpenBuckle()
{
_topBuckle.DOLocalMove(topBuckleUnlockPos, buckleDuration);
_leftBuckle.DOLocalMove(leftBuckleUnlockPos, buckleDuration);
_rightBuckle.DOLocalMove(rightBuckleUnlockPos, buckleDuration);
}
public void CloseBuckle()
{
_topBuckle.DOLocalMove(topBuckleLockPos, buckleDuration);
_leftBuckle.DOLocalMove(leftBuckleLockPos, buckleDuration);
_rightBuckle.DOLocalMove(rightBuckleLockPos, buckleDuration);
}
#endregion
}
}