Files
OrpaonVision/OrpaonVision.SiteApp/Runtime/Services/SimpleRuntimeStateMachineService.cs
2026-04-06 22:04:05 +08:00

55 lines
1.5 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using OrpaonVision.Core.Results;
using OrpaonVision.SiteApp.Runtime.Contracts;
using OrpaonVision.SiteApp.Runtime.Options;
namespace OrpaonVision.SiteApp.Runtime.Services
{
/// <summary>
/// 运行状态机简化实现MVP 阶段)。
/// </summary>
public sealed class SimpleRuntimeStateMachineService : IRuntimeStateMachineService
{
private readonly RuntimeOptions _options;
private int _currentLayer;
/// <summary>
/// 构造函数。
/// </summary>
public SimpleRuntimeStateMachineService(RuntimeOptions options)
{
_options = options;
_currentLayer = 1;
}
/// <inheritdoc />
public RuntimeStateSnapshotDto GetSnapshot()
{
return new RuntimeStateSnapshotDto
{
CurrentLayer = _currentLayer,
TotalLayers = _options.TotalLayers,
StateText = _currentLayer > _options.TotalLayers ? "工位完成" : "运行中"
};
}
/// <inheritdoc />
public Result MoveToNextLayer()
{
if (_currentLayer >= _options.TotalLayers)
{
return Result.Fail("STATE_MACHINE_FINISHED", "当前已到最后一层,无法继续切层。");
}
_currentLayer += 1;
return Result.Success("STATE_MACHINE_MOVED", $"已切换到第 {_currentLayer} 层。");
}
/// <inheritdoc />
public void Reset()
{
_currentLayer = 1;
}
}
}