refactoring

This commit is contained in:
2026-02-25 16:30:12 +09:00
parent 34376d1257
commit 4a25b39d7b
74 changed files with 5023 additions and 2475 deletions

View File

@@ -0,0 +1,116 @@
using Simulator.Config;
using Simulator.Data.Transport;
using System.Collections.Generic;
using UnityEngine;
using UVC.Data;
using UVC.Data.Core;
using UVC.Data.Mqtt;
namespace Simulator.Data
{
public class ComponentMqttHandler
{
private readonly ComponentPoolManager _poolManager;
public ComponentMqttHandler(ComponentPoolManager poolManager)
{
_poolManager = poolManager;
}
public void SubscribeTopic(Dictionary<string, ComponentBase> componentDatas)
{
foreach (var componentdata in componentDatas)
{
DataRepository.Instance.MqttReceiver.AddTopic($"simulation/{SimulationConfig.SimulationCode}/components/+/{componentdata.Key}/#");
var mqttConfig = new MqttSubscriptionConfig($"simulation/{SimulationConfig.SimulationCode}/components/+/{componentdata.Key}/#", false);
mqttConfig.SetDataMapper(_poolManager.DataMappers[componentdata.Value.componentType]);
mqttConfig.SetHandler((value) => OnUpdateData(value, componentdata.Value.componentType));
DataRepository.Instance.MqttReceiver.Add(mqttConfig);
}
DataRepository.Instance.MqttReceiver.AddTopic($"simulation/{SimulationConfig.SimulationCode}/status_changed");
var config = new MqttSubscriptionConfig($"simulation/{SimulationConfig.SimulationCode}/status_changed", false);
var progressDataMask = new DataMask();
DataMapper progressmapper = new DataMapper(progressDataMask);
config.SetDataMapper(progressmapper);
config.SetHandler(PlayerPropertyDataBase.Instance.GetMqttData);
DataRepository.Instance.MqttReceiver.Add(config);
}
public void OnUpdateData(IDataObject data, ComponentType type)
{
if (data == null) return;
DataObject obj = data as DataObject;
if (obj == null) return;
string componentId = obj.GetString("component_id");
switch (type)
{
case ComponentType.Source:
if (string.Equals(obj.GetString("event_name"), "completed"))
{
_poolManager.FindActiveItem(type, componentId)?.GetModelData(obj);
}
break;
case ComponentType.Sink:
if (string.Equals(obj.GetString("event_name"), "completed"))
{
_poolManager.FindActiveItem(type, componentId)?.GetModelData(obj);
}
break;
case ComponentType.Queue:
if (string.Equals(obj.GetString("event_name"), "completed"))
{
_poolManager.FindActiveItem(type, componentId)?.GetModelData(obj);
}
break;
case ComponentType.Rack:
var rack = _poolManager.FindActiveItem(type, componentId) as RackComponent;
if (string.Equals(obj.GetString("event_name"), "entity_stored"))
{
rack?.GetModelData(obj);
}
if (string.Equals(obj.GetString("event_name"), "inventory_initialized"))
{
rack?.InitializeQueue(obj);
}
break;
case ComponentType.ASRS:
case ComponentType.RobotArm:
case ComponentType.Processor:
case ComponentType.Worker:
_poolManager.FindActiveItem(type, componentId)?.GetModelData(obj);
break;
}
}
public void SetMQTT(SimulatorCodeDataClass sdata, LogicDetailData logicDetailData)
{
if (logicDetailData.transport_system != null)
{
if (logicDetailData.transport_system.transport_managers != null && logicDetailData.transport_system.transport_managers.Count >= 1)
{
foreach (var transport_manager in logicDetailData.transport_system.transport_managers)
{
if (transport_manager.vehicle_fleets != null && transport_manager.vehicle_fleets.Count >= 1)
{
foreach (var vehicle_fleet in transport_manager.vehicle_fleets)
{
AGVManager.Instance.InitAGV(vehicle_fleet.vehicles);
}
}
}
}
}
if (logicDetailData.production_system.conveyors != null && logicDetailData.production_system.conveyors.Count >= 1)
{
foreach (var conveyor in logicDetailData.production_system.conveyors)
{
ConveyorManager.Instance.SubscribeConveyor(conveyor);
}
}
}
}
}