Files
EnglewoodLAB/Assets/Scripts/UI/TotalProgressPanel/MachineEffectivenessItem.cs
SOOBEEN HAN f1894889ee <refactor> Octopus Twin 템플릿 적용
- 기능 외 UI 구조만 적용
- 프로젝트에 걸맞는 UI는 재작업 필요
2026-02-23 18:20:09 +09:00

126 lines
4.1 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using EnglewoodLAB.Extensions;
namespace EnglewoodLAB.UI
{
public class MachineEffectivenessItem : MonoBehaviour
{
private List<Image> barImages = new List<Image>();
public Image BarGraph;
public Image Image_Green;
public Image Image_Red;
public Image Image_Yellow;
public Image Image_Gray;
public TextMeshProUGUI MachineName;
public float maxBarHeight;
public void Init()
{
transform.TryGetComponentInChildren(nameof(BarGraph), out BarGraph);
transform.TryGetComponentInChildren(nameof(Image_Green), out Image_Green);
transform.TryGetComponentInChildren(nameof(Image_Red), out Image_Red);
transform.TryGetComponentInChildren(nameof(Image_Yellow), out Image_Yellow);
transform.TryGetComponentInChildren(nameof(Image_Gray), out Image_Gray);
transform.TryGetComponentInChildren(nameof(MachineName), out MachineName);
barImages.Add(Image_Green);
barImages.Add(Image_Red);
barImages.Add(Image_Yellow);
barImages.Add(Image_Gray);
}
public void SetEffectivness(string effectivnessValue, string machineName, string machineStatus)
{
var height = (StringConvertFloat(effectivnessValue) / 100f) * maxBarHeight;
BarGraph.rectTransform.sizeDelta = new Vector2(BarGraph.rectTransform.sizeDelta.x, height);
SetBarGraphColor(machineStatus);
SetMachineName(machineName);
}
private void SetMachineName(string machineName)
{
if (machineName.Contains("Injector"))
{
var newName = machineName.Replace("Injector No.", "");
int.TryParse(newName, out var index);
MachineName.SetText($"{index}호기");
}
else if (machineName.Contains("X76 GORE CAP"))
{
MachineName.SetText("X76");
}
else if (machineName.Contains("OIL DEFLECTOR"))
{
MachineName.SetText("OIL DEFLECT");
}
else if (machineName.Contains("INSULATOR ENG CVR"))
{
MachineName.SetText("INSULATOR");
}
else if (machineName.Contains("CAP O-RING PRINTING"))
{
MachineName.SetText("CAP PRINT");
}
else if (machineName.Contains("CAP VENT WELD"))
{
MachineName.SetText("CAP WELD");
}
else
{
MachineName.SetText(machineName);
}
}
private float StringConvertFloat(string value)
{
float.TryParse(value, out var floatValue);
if (floatValue > 100f)
{
floatValue = 100f;
}
return floatValue;
}
private void SetBarGraphColor(string machineStatus)
{
switch (machineStatus)
{
case "가동중":
Image_Green.transform.SetAsLastSibling();
SetBarGraphChange(Image_Green);
break;
case "비가동":
Image_Red.transform.SetAsLastSibling();
SetBarGraphChange(Image_Red);
break;
case "계획정지":
Image_Gray.transform.SetAsLastSibling();
SetBarGraphChange(Image_Gray);
break;
default:
Image_Yellow.transform.SetAsLastSibling();
SetBarGraphChange(Image_Yellow);
break;
}
}
private void SetBarGraphChange(Image currentBarImage)
{
foreach (var barImage in barImages)
{
barImage.gameObject.SetActive(false);
if (barImage == currentBarImage)
{
barImage.gameObject.SetActive(true);
}
}
}
}
}