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(); _bottomUI = transform.Find("Bottom Part").GetComponent(); _tubeUI = transform.Find("Tube Part").GetComponent(); 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.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.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(); } }