Files
ChunilENG/Assets/Scripts/ProductionStatusManager.cs

80 lines
2.8 KiB
C#
Raw Permalink Normal View History

2025-02-20 09:59:37 +09:00
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using WI;
using static MQTT;
namespace CHN
{
public class ProductionStatusManager : MonoBehaviour, ISingle
{
public Building building;
2025-03-14 09:15:16 +09:00
public List<CompleteInfo> productionStatusInfos = new();
2025-02-20 09:59:37 +09:00
public Dictionary<string,CompleteInfo> firstFloorInfo = new Dictionary<string, CompleteInfo>();
public Dictionary<string, CompleteInfo> secondFloorInfo = new Dictionary<string, CompleteInfo>();
public Action<List<CompleteInfo>> onFirstFloorInfo;
public Action<List<CompleteInfo>> onSecondFloorInfo;
public Action<List<CompleteInfo>, List<CompleteInfo>> onTotalFloorInfo;
public Action<List<CompleteInfo>> onFinalInspectionData;
2025-02-20 09:59:37 +09:00
public Action<List<WorkShopInfo>> onWorkShopInfo;
2025-02-20 09:59:37 +09:00
public override void AfterAwake()
{
building = FindSingle<Building>();
}
public void SetWorkProgressStatus(List<WorkShopInfo> workShopInfos)
{
onWorkShopInfo?.Invoke(workShopInfos);
}
2025-02-20 09:59:37 +09:00
public void SetFloorProductionStatus(List<CompleteInfo> completeInfos)
{
2025-03-14 09:15:16 +09:00
productionStatusInfos = completeInfos;
foreach (var completeInfo in completeInfos)
2025-02-20 09:59:37 +09:00
{
SetFloorInfo(building.floors[0], completeInfo, firstFloorInfo);
SetFloorInfo(building.floors[1], completeInfo, secondFloorInfo);
}
2025-03-14 10:32:35 +09:00
var firstFloorInfos = firstFloorInfo.Values.ToList();
var secondFloorInfos = secondFloorInfo.Values.ToList();
var finalInspectionInfos = completeInfos.Where(i => i.wccd == "W30").ToList();
2025-03-14 10:32:35 +09:00
productionStatusInfos.Clear();
productionStatusInfos.AddRange(firstFloorInfos);
productionStatusInfos.AddRange(secondFloorInfos);
2025-03-14 10:32:35 +09:00
onFirstFloorInfo?.Invoke(firstFloorInfos);
onSecondFloorInfo?.Invoke(secondFloorInfos);
onTotalFloorInfo?.Invoke(firstFloorInfos, secondFloorInfos);
onFinalInspectionData?.Invoke(finalInspectionInfos);
2025-02-20 09:59:37 +09:00
}
public void SetFloorInfo(Floor floor, CompleteInfo completeInfo, Dictionary<string, CompleteInfo> floorInfo)
{
foreach (var machine in floor.machines)
{
if (machine.code == completeInfo.workcd)
{
if (!floorInfo.ContainsKey(completeInfo.workcd))
{
floorInfo.Add(completeInfo.workcd, completeInfo);
}
else
{
floorInfo[completeInfo.workcd] = completeInfo;
}
}
}
}
}
}