新增一些拆卸相关处理,socket屏蔽,跑通流程

This commit is contained in:
2024-12-24 02:37:20 +08:00
parent 6341fbe46f
commit 1620049846
13 changed files with 375 additions and 75 deletions
@@ -7,10 +7,13 @@ namespace AibisDream.FixSystem
public void PlugIn();
public void PlugOut();
public Vector3 GetSocketPos();
public bool IsAvailable(); // 新增方法
}
public class BaseSocket : MonoBehaviour, ISocket
{
private bool available = true;
public void PlugIn()
{
Debug.Log("Plug Back InitSocket");
@@ -25,6 +28,10 @@ namespace AibisDream.FixSystem
{
return transform.position;
}
public bool IsAvailable()
{
return available;
}
}
}
@@ -18,6 +18,7 @@ namespace AibisDream.FixSystem
// 模块基本数据
[SerializeField] public BodyModuleData data;
private bool available = true;
private void Awake()
{
@@ -33,6 +34,15 @@ namespace AibisDream.FixSystem
#region
public bool IsAvailable()
{
return available;
}
public void SetSocketAvailable(bool isAvailable)
{
available=isAvailable;
}
public void PlugIn()
{
// 插入后先播放wave
@@ -45,6 +55,7 @@ namespace AibisDream.FixSystem
public void PlugOut()
{
// 先关闭wave
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage("未插入任何模块", Color.white);
CloseWave();
// TODO 触发Yarn节点(似乎目前没有拔出对话?)
}
@@ -152,6 +163,7 @@ namespace AibisDream.FixSystem
// 功能信息
public WaveformType waveformType;
public bool waveHasError;
public bool ignoreWaveCheck;
@@ -85,6 +85,10 @@ namespace AibisDream.FixSystem
// 寻找最接近的BodyModule
foreach (var bodyModule in BodyModules)
{
if (!bodyModule.IsAvailable()) // 检查模块是否可用
{
continue; // 跳过不可用的模块
}
float tempDistance = Vector3.Distance(sourcePos, bodyModule.GetSocketPos());
if (tempDistance < closestDistance)
@@ -83,5 +83,11 @@ namespace AibisDream
_UFCover.SetActive(false);
}
}
[YarnCommand("SetSocketAvailable")]
public static void SetSocketAvailable(string moduleName,bool isAvailable)
{
var targetModule = BodyModuleSystem.FindBodyModuleByName(moduleName);
targetModule.SetSocketAvailable(isAvailable);
}
}
}