Files
SAMKWANG/Assets/Scripts/Branch/UI/UI_MachineEffectivenessItem.cs

96 lines
3.1 KiB
C#

using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
namespace Samkwang
{
public class UI_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()
{
var imageDict = transform.GetChildComponentsByName<Image>();
BarGraph = imageDict.GetOrNull(nameof(BarGraph));
Image_Green = imageDict.GetOrNull(nameof(Image_Green));
Image_Red = imageDict.GetOrNull(nameof(Image_Red));
Image_Yellow = imageDict.GetOrNull(nameof(Image_Yellow));
Image_Gray = imageDict.GetOrNull(nameof(Image_Gray));
MachineName = transform.GetComponentInChildren<TextMeshProUGUI>(true);
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)
{
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);
}
}
}
}
}