层级改动

This commit is contained in:
2025-01-04 20:46:40 +08:00
parent 654e10fdb7
commit 69a3c9c93c
19 changed files with 6510 additions and 3277 deletions
@@ -11,21 +11,20 @@ namespace AibisDream.FixSystem
private const string SocketObjName = "Socket";
private const string ModulePicName = "Module Pic";
private const string IndicatorName = "Indicator";
public Transform _socketPos;
public Transform socketPos;
// public Transform _indicatorPos;
private BodyModuleSystem _bodyModuleSystem;
private Material highlightMaterial;
private Material alarmMaterial;
private Material originalMaterial; // 原材质
private Material _highlightMaterial;
private Material _alarmMaterial;
private Material _originalMaterial; // 原材质
private SpriteRenderer targetSpriteRenderer; // 目标的 SpriteRenderer
private SpriteRenderer _targetSpriteRenderer; // 目标的 SpriteRenderer
#endregion
// 模块基本数据
[SerializeField] public BodyModuleData data;
private bool available = true;
private bool _available = true;
private void Awake()
{
@@ -34,28 +33,26 @@ namespace AibisDream.FixSystem
}
private void InitReference()
{
_socketPos = transform.Find(SocketObjName);
socketPos = transform.Find(SocketObjName);
_bodyModuleSystem = transform.parent.parent.GetComponent<BodyModuleSystem>();
targetSpriteRenderer=transform.Find("Module Pic").GetComponent<SpriteRenderer>();
originalMaterial = targetSpriteRenderer.GetComponent<SpriteRenderer>().material;
highlightMaterial = Resources.Load<Material>("Materials/HighlightMaterial");
alarmMaterial=Resources.Load<Material>("Materials/AlarmMaterial");
_targetSpriteRenderer=transform.Find("Module Pic").GetComponent<SpriteRenderer>();
_originalMaterial = _targetSpriteRenderer.GetComponent<SpriteRenderer>().material;
_highlightMaterial = Resources.Load<Material>("Materials/HighlightMaterial");
_alarmMaterial=Resources.Load<Material>("Materials/AlarmMaterial");
}
#region
public bool IsAvailable()
{
return available;
return _available;
}
public void SetSocketAvailable(bool isAvailable)
{
available=isAvailable;
_available=isAvailable;
}
public void PlugIn()
{
// 插入后先播放wave
//ShowWave();
if(DialogController.Instance!=null)
// 然后触发Yarn节点
DialogController.Instance.StartDialogNode(_bodyModuleSystem.inHotErr ? "系统过热" : data.PlugInNodeName);
@@ -65,56 +62,13 @@ namespace AibisDream.FixSystem
{
_bodyModuleSystem.oscilloscopeSystem.MessageBoxSetNull();
StartCoroutine(_bodyModuleSystem.oscilloscopeSystem.DisableDeepInButton());
// 先关闭wave
//_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage("未插入任何模块", Color.white);
//CloseWave();
// TODO 触发Yarn节点(似乎目前没有拔出对话?)
}
public void DeepIn()
{
// if (!data.waveHasError&&!data.ignoreWaveCheck) return;
// // 如果有错误并且已经深入了
if(DialogController.Instance!=null)
DialogController.Instance.StartDialogNode(data.DeepInNodeName);
}
public void CloseWave()
{
_bodyModuleSystem.oscilloscopeSystem.StopWave();
}
public void ShowWave()
{
if (_bodyModuleSystem.inHotErr)
{
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage("发热,无法检查", Color.red);
_bodyModuleSystem.oscilloscopeSystem.PlayWave(WaveformType.HotNoise, false);
}
else if(data.cantStopRunning)
{
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage("持续运行中,无法进入", Color.red);
//_bodyModuleSystem.oscilloscopeSystem.ChangeDeepInButtonState(true);
}
else if(data.ignoreWaveCheck)
{
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage("无需检查,允许进入", Color.yellow);
_bodyModuleSystem.oscilloscopeSystem.ChangeDeepInButtonState(true);
}
else if(data.waveHasError)
{
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage(data.moduleName+": 发现错误,拖动滑动条寻找错误波形以深入检查", Color.red);
_bodyModuleSystem.oscilloscopeSystem.PlayWave(data.waveformType, data.waveHasError);
}
else
{
_bodyModuleSystem.oscilloscopeSystem.ShowScreenMessage(data.moduleName+": 未发现错误,无寻深入", Color.green);
}
}
public Vector3 GetSocketPos()
{
return _socketPos.position;
return socketPos.position;
}
#endregion
@@ -124,13 +78,13 @@ namespace AibisDream.FixSystem
public void Load(BodyModuleData newData)
{
var modulePic = transform.Find(ModulePicName).GetComponent<SpriteRenderer>();
var socketPos = transform.Find(SocketObjName);
var newSocketPos = transform.Find(SocketObjName);
gameObject.name = newData.moduleName;
// 初始化位置与外形
transform.localPosition = newData.ModulePos;
modulePic.sprite = newData.ModulePic;
socketPos.localPosition = newData.SocketPos;
newSocketPos.localPosition = newData.SocketPos;
// 数据同步
data = newData;
@@ -140,21 +94,15 @@ namespace AibisDream.FixSystem
public BodyModuleData Save()
{
var modulePic = transform.Find(ModulePicName).GetComponent<SpriteRenderer>();
var socketPos = transform.Find(SocketObjName);
//var indicatorPos = transform.Find(IndicatorName);
var newSocketPos = transform.Find(SocketObjName);
return new BodyModuleData
{
moduleName = data.moduleName,
ModulePic = modulePic.sprite,
ModulePos = transform.localPosition,
SocketPos = socketPos.localPosition,
waveformType = data.waveformType,
waveHasError = data.waveHasError,
ignoreWaveCheck = data.ignoreWaveCheck,
SocketPos = newSocketPos.localPosition,
cantStopRunning=data.cantStopRunning,
//IndicatorPos=indicatorPos.localPosition
//indicatorPos= indicatorPos.position
};
}
@@ -163,16 +111,16 @@ namespace AibisDream.FixSystem
#region
public void Highlight(bool enable)
{
if (targetSpriteRenderer != null && highlightMaterial != null&&targetSpriteRenderer.material!=alarmMaterial)
if (_targetSpriteRenderer != null && _highlightMaterial != null&&_targetSpriteRenderer.material!=_alarmMaterial)
{
targetSpriteRenderer.material = enable ? highlightMaterial : originalMaterial;
_targetSpriteRenderer.material = enable ? _highlightMaterial : _originalMaterial;
}
}
public void Alarm(bool enable)
{
if (targetSpriteRenderer != null && alarmMaterial != null)
if (_targetSpriteRenderer != null && _alarmMaterial != null)
{
targetSpriteRenderer.material = enable ? alarmMaterial : originalMaterial;
_targetSpriteRenderer.material = enable ? _alarmMaterial : _originalMaterial;
}
}
// public void HideModule(bool enable)
@@ -200,15 +148,6 @@ namespace AibisDream.FixSystem
public SerializableVector3 modulePos;
public SerializableVector3 socketPos;
public SerializableVector3 indicatorPos;
// 功能信息
public WaveformType waveformType;
public bool waveHasError;
public bool ignoreWaveCheck;
public bool cantStopRunning;
// 只读