Files
ChunilENG/Assets/Scripts/ProductionStatusManager.cs

77 lines
2.6 KiB
C#
Raw 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;
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
List<CompleteInfo> firstFloorInfoList = firstFloorInfo.Values.ToList();
List<CompleteInfo> secondFloorInfoList = secondFloorInfo.Values.ToList();
productionStatusInfos.Clear();
productionStatusInfos.AddRange(firstFloorInfoList);
productionStatusInfos.AddRange(secondFloorInfoList);
onFirstFloorInfo?.Invoke(firstFloorInfoList);
onSecondFloorInfo?.Invoke(secondFloorInfoList);
onTotalFloorInfo?.Invoke(firstFloorInfoList, secondFloorInfoList);
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;
}
}
}
}
}
}