using UnityEngine; using WI; using CHN; using System.Linq; public class HighLighterManager : MonoBehaviour, ISingle { private Machine[] machines; private Machine currentMachine; public override void AfterStart() { var building = FindSingle(); machines = building.floors.SelectMany(f => f.machines).ToArray(); } public void ClickKPIToHighlight(UI_MachineKPI clickKPI) { foreach(var machine in machines) { if(machine.machineKPI == clickKPI) { ActiveHighLighter(machine); } } } public void ClickNotKPIToHighlight(Machine highLightMachine) { ActiveHighLighter(highLightMachine); ActiveMachineKPI(highLightMachine); } public void ActiveHighLighter(Machine highLightMachine) { foreach (var machine in machines) { machine.DeactiveHighLighter(); } currentMachine = highLightMachine; currentMachine.ActiveHighLighter(); } public void ResetAllHighLighter() { foreach (var machine in machines) { machine.DeactiveHighLighter(); if (machine.machineKPI != null) { machine.machineKPI.Shrink(); } } } private void ActiveMachineKPI(Machine curentMachine) { foreach (var machine in machines) { if (machine.machineKPI != null) { machine.machineKPI.Shrink(); } } if (curentMachine.machineKPI != null) { curentMachine.machineKPI.Expand(); } } public void SetTargetPosToMachine(Machine machine) { OrbitalController controller = FindSingle(); if (controller.viewMode != ViewMode.PerspectiveView) { controller.SetViewMode(ViewMode.PerspectiveView); } var building = FindSingle(); int changeFloor = building.floors[0].floorIndex; int libraryMachineFloor = machine.GetMachineFloorIndex(); if (libraryMachineFloor > changeFloor) { changeFloor = libraryMachineFloor; } var centerPos = machine.centerPos; var slider = FindSingle().panel_floorcontrol; slider.ChangeValueFromOutside(changeFloor); controller.option.currentDistance = 15f; controller.SetTargetPos(centerPos); } }