Files
StandardSence/StandardScene.Fass2Simulator/Fass2SimRuntime.cs
T

51 lines
1.4 KiB
C#

using System;
namespace StandardScene.Fass2Simulator
{
public sealed class Fass2SimRuntime : IDisposable
{
private readonly Fass2SimUdpHost _host;
public Fass2SimRuntime(Fass2SimConfig config, Fass2SimNodeProfileStore profiles)
{
Config = config;
Vehicle = new Fass2SimVehicle(config);
Actions = new Fass2SimActionEngine(Vehicle, config, profiles);
Motion = new Fass2SimMotionEngine(Vehicle, config, Actions);
Actions.StationActionsCompleted += Motion.OnStationActionsCompleted;
var commandHandler = new Fass2SimCommandHandler(Vehicle, Motion, Actions, config.LogRawFrames);
_host = new Fass2SimUdpHost(config, Vehicle, commandHandler, Motion, Actions);
_host.StatusReported += (_, __) => StatusChanged?.Invoke();
}
public Fass2SimConfig Config { get; }
public Fass2SimVehicle Vehicle { get; }
public Fass2SimMotionEngine Motion { get; }
public Fass2SimActionEngine Actions { get; }
public bool IsRunning => _host.IsRunning;
public event Action StatusChanged;
public void Start()
{
_host.Start();
StatusChanged?.Invoke();
}
public void Stop()
{
_host.Stop();
StatusChanged?.Invoke();
}
public void Dispose()
{
_host.Dispose();
}
}
}