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; public Dictionary firstFloorInfo = new Dictionary(); public Dictionary secondFloorInfo = new Dictionary(); public Action> onFirstFloorInfo; public Action> onSecondFloorInfo; public Action onActiveFirstBoard; public Action onActiveSecondBoard; public override void AfterAwake() { building = FindSingle(); } public void SetFloorProductionStatus(List completeInfos) { foreach(var completeInfo in completeInfos) { SetFloorInfo(building.floors[0], completeInfo, firstFloorInfo); SetFloorInfo(building.floors[1], completeInfo, secondFloorInfo); } onFirstFloorInfo?.Invoke(firstFloorInfo.Values.ToList()); onSecondFloorInfo?.Invoke(secondFloorInfo.Values.ToList()); } public void SetFloorInfo(Floor floor, CompleteInfo completeInfo, Dictionary 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; } } } } public void ActiveBoardToType(BoardType boardType) { switch (boardType) { case BoardType.Injection: onActiveFirstBoard?.Invoke(); break; case BoardType.Assembly: onActiveSecondBoard?.Invoke(); break; } } } }