2026-09-03 00:49:31 +03:00
|
|
|
using UnityEngine;
|
|
|
|
|
using UnityEngine.UI;
|
2026-09-05 14:10:05 +03:00
|
|
|
using TMPro;
|
2026-09-03 00:49:31 +03:00
|
|
|
|
2026-10-27 18:51:35 +03:00
|
|
|
// Полоска над зданием (этап 3): рабочие этой профессии / места в городе.
|
|
|
|
|
// Раньше показывала накопленный запас кликера -- кликер убран, добычу дают рабочие.
|
|
|
|
|
// У Дома и Кристалла рабочих нет -- там подпись уровня, полоска скрыта.
|
2026-09-03 00:49:31 +03:00
|
|
|
public class BuildingUI : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
[Header("Настройки")]
|
2026-09-05 16:39:40 +03:00
|
|
|
public ResourceCollector building;
|
|
|
|
|
public TMP_Text stokText;
|
|
|
|
|
public Slider progressBar;
|
2026-09-03 00:49:31 +03:00
|
|
|
|
2026-10-27 18:51:35 +03:00
|
|
|
float next;
|
|
|
|
|
|
2026-09-05 16:39:40 +03:00
|
|
|
void Start()
|
2026-09-03 00:49:31 +03:00
|
|
|
{
|
|
|
|
|
if (building == null)
|
|
|
|
|
{
|
2026-09-05 16:39:40 +03:00
|
|
|
Debug.LogError("Ошибка BuildingUI: не назначено здание (Building)!");
|
2026-09-03 00:49:31 +03:00
|
|
|
enabled = false;
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
UpdateUI();
|
|
|
|
|
}
|
2026-09-05 16:39:40 +03:00
|
|
|
|
2026-09-03 00:49:31 +03:00
|
|
|
void Update()
|
|
|
|
|
{
|
2026-10-27 18:51:35 +03:00
|
|
|
if (Time.unscaledTime < next) return;
|
|
|
|
|
next = Time.unscaledTime + 0.5f;
|
2026-09-03 00:49:31 +03:00
|
|
|
UpdateUI();
|
|
|
|
|
}
|
2026-09-05 16:39:40 +03:00
|
|
|
|
2026-09-03 00:49:31 +03:00
|
|
|
void UpdateUI()
|
|
|
|
|
{
|
2026-10-27 18:51:35 +03:00
|
|
|
bool workplace = building.IsWorkplace;
|
|
|
|
|
if (progressBar != null && progressBar.gameObject.activeSelf != workplace) progressBar.gameObject.SetActive(workplace);
|
|
|
|
|
|
|
|
|
|
if (!workplace)
|
2026-09-03 00:49:31 +03:00
|
|
|
{
|
2026-10-27 18:51:35 +03:00
|
|
|
if (stokText != null) stokText.text = building.IsHouse ? $"Дом {building.level} ур." : $"{building.level} ур.";
|
|
|
|
|
return;
|
2026-09-03 00:49:31 +03:00
|
|
|
}
|
2026-10-27 18:51:35 +03:00
|
|
|
|
|
|
|
|
float workers = building.GetCurrentStock();
|
|
|
|
|
float slots = building.GetMaxCapacity();
|
|
|
|
|
if (stokText != null) stokText.text = $"Рабочие {workers:0} / {slots:0}";
|
|
|
|
|
if (progressBar != null) progressBar.value = slots > 0 ? Mathf.Clamp01(workers / slots) : 0f;
|
2026-09-03 00:49:31 +03:00
|
|
|
}
|
2026-10-27 18:51:35 +03:00
|
|
|
}
|