添加指针

This commit is contained in:
2025-01-14 17:46:50 +08:00
parent e76840c5ce
commit ff05442c28
398 changed files with 29114 additions and 635 deletions
@@ -14,7 +14,6 @@ namespace AibisDream.FixSystem
public Transform socketPos;
// public Transform _indicatorPos;
private BodyModuleSystem _bodyModuleSystem;
private Material _highlightMaterial;
private Material _alarmMaterial;
@@ -59,17 +58,23 @@ namespace AibisDream.FixSystem
public void PlugIn()
{
if (DialogController.Instance != null)
// 然后触发Yarn节点
DialogController.Instance.StartDialogNode(_bodyModuleSystem.inHotErr ? "系统过热" : data.PlugInNodeName);
// 插入就在示波器显示图片
if (!_bodyModuleSystem.inHotErr)
{
StartCoroutine(FixSystemCenter.SystemDic.Get<IOscilloscopeSystem>()
?.ShowScanImage(data.ScreenPic, data.checkPoints));
}
// 然后触发Yarn节点
DialogController.Instance?.StartDialogNode(_bodyModuleSystem.inHotErr ? "系统过热" : data.PlugInNodeName);
}
public void PlugOut()
{
FixSystemCenter.SystemDic.Get<IOscilloscopeSystem>()?.HideScanImage();
_bodyModuleSystem.oscilloscopeSystem.MessageBoxSetNull();
StartCoroutine(_bodyModuleSystem.oscilloscopeSystem.DisableDeepInButton());
// TODO 触发Yarn节点(似乎目前没有拔出对话?)
}
public Vector3 GetSocketPos()
@@ -133,14 +138,6 @@ namespace AibisDream.FixSystem
}
}
// public void HideModule(bool enable)
// {
// if (targetSpriteRenderer != null && highlightMaterial != null)
// {
// targetSpriteRenderer.material = enable ? highlightMaterial : originalMaterial;
// }
// }
#endregion
}
@@ -148,7 +145,6 @@ namespace AibisDream.FixSystem
public struct BodyModuleData
{
public const string PlugInNodeTemplate = "{0}PlugIn";
public const string DeepInTemplate = "{0}DeepIn";
// ID
public string moduleName;
@@ -158,11 +154,14 @@ namespace AibisDream.FixSystem
public SerializableVector3 modulePos;
public SerializableVector3 socketPos;
public bool cantStopRunning;
// 功能信息
[Header("功能参数")] public bool cantStopRunning;
public string showPicPath;
public CheckPoint[] checkPoints;
// 只读
[JsonIgnore] public string PlugInNodeName => string.Format(PlugInNodeTemplate, moduleName);
[JsonIgnore] public string DeepInNodeName => string.Format(DeepInTemplate, moduleName);
[JsonIgnore]
public Sprite ModulePic
@@ -171,6 +170,9 @@ namespace AibisDream.FixSystem
set => modulePicPath = ResourceKit.SaveSprite(value);
}
public Sprite ScreenPic =>
!string.IsNullOrEmpty(showPicPath) ? ResourceKit.LoadSpriteFromPsd(showPicPath) : null;
[JsonIgnore]
public Vector3 ModulePos
{
@@ -185,4 +187,18 @@ namespace AibisDream.FixSystem
set => socketPos = new SerializableVector3(value);
}
}
[Serializable]
public struct CheckPoint
{
public string id;
private SerializableVector3 _serializablePos3;
[JsonIgnore]
public Vector3 PointPos
{
get => _serializablePos3.ToVector3();
set => _serializablePos3 = new SerializableVector3(value);
}
}
}
@@ -1,4 +1,3 @@
using System;
using System.Linq;
using AibisDream.Framework;
using AibisDream.Kit;
@@ -30,13 +29,6 @@ namespace AibisDream.FixSystem
#endregion
#region
[HideInInspector] public UnityEvent<ISocket> plugInEvent;
[HideInInspector] public UnityEvent<ISocket> plugOutEvent;
#endregion
#region
public bool inHotErr;
@@ -19,11 +19,10 @@ namespace AibisDream.FixSystem
#region
public bool isInDialog = false;
public bool isInDialog;
public bool isActive = true;
[HideInInspector] public ISocket curSocket;
[HideInInspector] public BodyModule curBodyModule;
#endregion
@@ -10,7 +10,7 @@ public class ChipModule : MonoBehaviour
{
private GameObject _chipModule;
private ChipData _chipData;
private ChipData _chipData = new();
private void Awake()
{
@@ -22,7 +22,6 @@ public class ChipModule : MonoBehaviour
}
// Start is called before the first frame update
public void RemoveChipModule()
{
if (_chipModule.activeInHierarchy)
@@ -2,6 +2,7 @@
using UnityEngine;
using DG.Tweening;
using System.Collections;
using Yarn.Unity;
namespace AibisDream.FixSystem
{
@@ -87,9 +88,54 @@ namespace AibisDream.FixSystem
}
#endregion
}
//
// public struct
/// <summary>
/// 示波器接口。暂时能想到的就是这几个对外接口
/// 用示波器显示对话的部分额外实现IDialogView接口。这部分方案定下来之后老丁来实现。
/// </summary>
public interface IOscilloscopeSystem
{
/// <summary>
/// 展示示波器上的图片和检测点位
/// </summary>
/// /// <param name="moduleImage">显示在示波器里的图片</param>
/// <param name="checkPoints">检查点信息</param>
public IEnumerator ShowScanImage(Sprite moduleImage, CheckPoint[] checkPoints);
/// <summary>
/// 聚焦到某个点上
/// </summary>
/// <param name="checkPointId">检查点</param>
public IEnumerator FocusOnPoint(string checkPointId);
/// <summary>
/// 停止聚焦
/// </summary>
/// <returns></returns>
public IEnumerator StopFocus();
/// <summary>
/// 隐藏显示屏上的图像
/// </summary>
/// <returns></returns>
public IEnumerator HideScanImage();
}
public static class OscilloscopeYarnCommand
{
private static IOscilloscopeSystem OscilloscopeSystem => FixSystemCenter.SystemDic.Get<IOscilloscopeSystem>();
[YarnCommand("focus_on_point")]
public static IEnumerator FocusOnPoint(string checkPointId)
{
return OscilloscopeSystem?.FocusOnPoint(checkPointId);
}
[YarnCommand("stop_focus")]
public static IEnumerator StopFocus()
{
return OscilloscopeSystem?.StopFocus();
}
}
}
+10 -8
View File
@@ -1,4 +1,5 @@
using AibisDream.Utility;
using AibisDream.Framework;
using AibisDream.Utility;
using DG.Tweening;
using UnityEngine;
using UnityEngine.EventSystems;
@@ -58,13 +59,11 @@ namespace AibisDream.FixSystem
AudioManager.RandomPlayInteraction("plug_in");
_sprite.enabled = false;
// 触发事件
_cableSystem.BodyModuleSystem.plugInEvent?.Invoke(targetSocket);
_cableSystem.curSocket = targetSocket;
if (targetSocket is BodyModule bodyModule)
{
_cableSystem.curBodyModule = bodyModule;
// 插入模块时触发插入事件
EnumEventSystem.Global.Send(EventEnum.PlugIn);
}
}
@@ -79,10 +78,13 @@ namespace AibisDream.FixSystem
_cableSystem.curSocket?.PlugOut();
AudioManager.RandomPlayInteraction("plug_out");
_sprite.enabled = true;
// 触发事件
_cableSystem.BodyModuleSystem.plugOutEvent?.Invoke(_cableSystem.curSocket);
_cableSystem.curBodyModule = null;
if (_cableSystem.curSocket is BodyModule bodyModule)
{
// 从模块拔出时触发事件
EnumEventSystem.Global.Send(EventEnum.PlugOut);
}
_cableSystem.curSocket = null;
}