Files
aibis-dream/Assets/Scripts/FixSystemNew/CoolingMachine/CoolingSystem.cs
T
2024-12-27 04:45:38 +08:00

161 lines
4.2 KiB
C#

using System.Collections;
using AibisDream.FixSystem;
using UnityEngine;
namespace AibisDream.Framework
{
public class CoolingSystem : MonoBehaviour, ICoolingSystem
{
#region 引用
private PumpController _pumpUI;
private BottleShelf _bottomUI;
private TubeController _tubeUI;
#endregion
#region 状态
public bool isLocked;
private CoolingBottle CurBottle => _pumpUI.bottleSlot.GetCurBottle();
#endregion
private void Awake()
{
FixSystemCenter.SystemDic.Register(this);
InitRefs();
}
private void InitRefs()
{
_pumpUI = transform.Find("Pump Part").GetComponent<PumpController>();
_bottomUI = transform.Find("Bottom Part").GetComponent<BottleShelf>();
_tubeUI = transform.Find("Tube Part").GetComponent<TubeController>();
isLocked = true;
}
#region 对外开放
public IEnumerator OpenCoolingSystem()
{
yield return _pumpUI.Show();
}
public IEnumerator LinkTube()
{
// 播放插线动画,完成后自动关闭
yield return _tubeUI.PlayLinkAnime();
}
public IEnumerator OpenBottleUI()
{
yield return _bottomUI.Show();
}
public void Unlock()
{
isLocked = false;
if (CurBottle)
{
CurBottle.IsBlock = false;
}
_pumpUI.OpenBuckle();
}
public void InsertBottle(CoolingBottle bottle)
{
// 设置当前瓶子名称
// DialogController.Instance.SetVariable("$curBottleName", bottle.data.name);
// // 触发插入对话
// DialogController.Instance.StartDialogNode("插入冷却液");
}
public void RemoveBottle()
{
// DialogController.Instance.SetVariable("$curBottleName", "");
}
public void Lock()
{
isLocked = true;
// 已锁定的瓶子禁止使用
if (CurBottle)
{
CurBottle.IsBlock = true;
}
_pumpUI.CloseBuckle();
}
public void StartPump()
{
// 进行泵机操作
if (isLocked && CurBottle)
{
// 播放pump动画
_pumpUI.PlayPumpAnime();
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
clinicSystem.StartTablePump();
// 播放泵机运行对话
DialogController.Instance.StartDialogNode($"泵机运行");
}
}
public IEnumerator CloseBottleUI()
{
yield return _bottomUI.Hide();
}
public IEnumerator CloseCoolingSystem()
{
yield return _pumpUI.Hide();
}
public void StopPump()
{
// 冷却液界面
_pumpUI.StopPumpAnime();
_pumpUI.DestroyBottle();
// 诊所界面
var clinicSystem = FixSystemCenter.SystemDic.Get<ClinicSystem>();
clinicSystem.StopTablePump();
}
public IEnumerator PullOutTube()
{
yield return _tubeUI.PlayPullOutAnime();
}
#endregion
}
public interface ICoolingSystem
{
// 打开冷却系统UI
public IEnumerator OpenCoolingSystem();
// 插管
public IEnumerator LinkTube();
// 打开左侧冷却液界面
public IEnumerator OpenBottleUI();
// 打开卡扣
public void Unlock();
// 插入冷却液瓶子
public void InsertBottle(CoolingBottle bottle);
// 移出冷却液瓶子
public void RemoveBottle();
// 关闭卡扣
public void Lock();
// 点击泵机开关
public void StartPump();
// 冷却液架收回
public IEnumerator CloseBottleUI();
// 冷却系统UI收回
public IEnumerator CloseCoolingSystem();
// 拔管
public IEnumerator PullOutTube();
// 停止泵机
public void StopPump();
}
}