126 lines
4.1 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|