145 lines
3.7 KiB
C#
145 lines
3.7 KiB
C#
using System.Collections;
|
|
using AibisDream.FixSystem;
|
|
using UnityEngine;
|
|
using Yarn.Unity;
|
|
|
|
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)
|
|
{
|
|
// 插入似乎没有太多逻辑?
|
|
}
|
|
|
|
public void Lock()
|
|
{
|
|
isLocked = true;
|
|
// 已锁定的瓶子禁止使用
|
|
if (CurBottle)
|
|
{
|
|
CurBottle.IsBlock = true;
|
|
}
|
|
_pumpUI.CloseBuckle();
|
|
}
|
|
|
|
public void StartPump()
|
|
{
|
|
// 进行泵机操作
|
|
if (isLocked && CurBottle)
|
|
{
|
|
// 播放pump动画
|
|
_pumpUI.PlayPumpAnime();
|
|
// 播放泵机运行对话
|
|
// DialogController.Instance.StartDialogNode($"泵机运行_{CurBottle.data.name}");
|
|
Debug.Log($"泵机运行_{CurBottle.data.name}");
|
|
}
|
|
}
|
|
|
|
[YarnCommand("close_bottle_ui")]
|
|
public IEnumerator CloseBottleUI()
|
|
{
|
|
yield return _bottomUI.Hide();
|
|
}
|
|
|
|
[YarnCommand("close_cooling_system")]
|
|
public IEnumerator CloseCoolingSystem()
|
|
{
|
|
yield return _pumpUI.Hide();
|
|
_pumpUI.StopPumpAnime();
|
|
_pumpUI.DestroyBottle();
|
|
}
|
|
|
|
[YarnCommand("pull_out_tube")]
|
|
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 Lock();
|
|
// 点击泵机开关
|
|
public void StartPump();
|
|
// 冷却液架收回
|
|
public IEnumerator CloseBottleUI();
|
|
// 冷却系统UI收回
|
|
public IEnumerator CloseCoolingSystem();
|
|
// 拔管
|
|
public IEnumerator PullOutTube();
|
|
}
|
|
} |