Organised fruit

This commit is contained in:
2026-04-17 12:54:02 +01:00
parent fa0d59a4cf
commit 8eb799c8b6
3 changed files with 1112 additions and 38 deletions

View File

@@ -9,6 +9,11 @@ namespace Fruitomation.UI
{
public class BasicUpgradeButton : MonoBehaviour
{
[Serializable] private class LineInfo
{
public RectTransform[] LinePoints;
}
private enum UpgradeState
{
Unlocked,
@@ -20,44 +25,65 @@ namespace Fruitomation.UI
[Header("Settings")]
[SerializeField] private BasicUpgrade Upgrade;
[SerializeField] private int UpgradeCost;
[SerializeField] private bool DrawDefaultLines;
[Header("References")]
[SerializeField] private BasicUpgradeButton[] RequiredUpgrades;
[SerializeField] private Material LineMaterial;
private (LineRenderer, BasicUpgradeButton)[] UpgradeLines;
[Header("Lines")]
[SerializeField] private LineInfo[] Lines;
private (LineRenderer, BasicUpgradeButton, LineInfo)[] UpgradeLines;
private UpgradeState State = UpgradeState.Hidden;
private Button AttachedButton;
private Text AttachedText;
private void Awake()
{
AttachedText = gameObject.GetComponentInChildren<Text>();
AttachedButton = GetComponent<Button>();
AttachedButton.onClick.AddListener(() =>
{
UpgradeManager.Unlock(Upgrade);
});
AttachedButton.onClick.AddListener(() => { UpgradeManager.Unlock(Upgrade); });
/* Stops null reference */
RequiredUpgrades ??= Array.Empty<BasicUpgradeButton>();
List<(LineRenderer, BasicUpgradeButton)> lines = new();
foreach (BasicUpgradeButton required in RequiredUpgrades)
List<(LineRenderer, BasicUpgradeButton, LineInfo)> lines = new();
if (DrawDefaultLines)
{
GameObject go = new("LineRenderer(Script Spawned)");
go.transform.SetParent(transform);
foreach (BasicUpgradeButton required in RequiredUpgrades)
{
GameObject go = new("LineRenderer(Script Spawned)");
go.transform.SetParent(transform);
RectTransform rt = go.AddComponent<RectTransform>();
rt.anchoredPosition = new Vector2();
LineRenderer lr = go.AddComponent<LineRenderer>();
lr.material = LineMaterial;
lr.positionCount = 2;
lines.Add((lr, required));
RectTransform rt = go.AddComponent<RectTransform>();
rt.anchoredPosition = new Vector2();
LineRenderer lr = go.AddComponent<LineRenderer>();
lr.material = LineMaterial;
lr.positionCount = 2;
lines.Add((lr, required, null));
}
}
else
{
foreach (LineInfo line in Lines)
{
GameObject go = new("LineRenderer(Script Spawned)");
go.transform.SetParent(transform);
RectTransform rt = go.AddComponent<RectTransform>();
rt.anchoredPosition = new Vector2();
LineRenderer lr = go.AddComponent<LineRenderer>();
lr.material = LineMaterial;
lines.Add((lr, null, line));
}
}
UpgradeLines = lines.ToArray();
}
@@ -72,12 +98,26 @@ namespace Fruitomation.UI
private void Update()
{
foreach ((LineRenderer lr, BasicUpgradeButton button) in UpgradeLines)
foreach ((LineRenderer lr, BasicUpgradeButton button, LineInfo info) in UpgradeLines)
{
lr.SetPosition(0, transform.position);
lr.SetPosition(1, button.transform.position);
if (DrawDefaultLines)
{
lr.SetPosition(0, transform.position);
lr.SetPosition(1, button.transform.position);
}
else
{
lr.positionCount = info.LinePoints.Length;
int index = 0;
foreach (RectTransform point in info.LinePoints)
{
lr.SetPosition(index++, point.position);
}
}
}
if (UpgradeManager.Is(Upgrade))
{
State = UpgradeState.Unlocked;