Files
2026-06-04 18:31:31 +03:00

78 lines
1.6 KiB
C#

using UnityEngine;
public class ResourcePickup : MonoBehaviour
{
public ItemData item;
public int amount = 1;
public float respawnSeconds = 8f;
private Renderer[] renderers;
private Collider[] colliders;
private bool available = true;
private float respawnTimer;
private void Awake()
{
renderers = GetComponentsInChildren<Renderer>();
colliders = GetComponentsInChildren<Collider>();
}
private void Update()
{
transform.Rotate(0f, 45f * Time.deltaTime, 0f, Space.World);
if (available)
{
return;
}
respawnTimer -= Time.deltaTime;
if (respawnTimer <= 0f)
{
SetAvailable(true);
}
}
public bool TryCollect(Inventory inventory)
{
if (!available || inventory == null || item == null || amount <= 0)
{
return false;
}
if (!inventory.AddItem(item, amount))
{
return false;
}
SetAvailable(false);
return true;
}
public string GetPickupText()
{
if (item == null)
{
return "Неизвестный ресурс";
}
return item.itemName + " x" + amount;
}
private void SetAvailable(bool value)
{
available = value;
respawnTimer = value ? 0f : respawnSeconds;
for (int i = 0; i < renderers.Length; i++)
{
renderers[i].enabled = value;
}
for (int i = 0; i < colliders.Length; i++)
{
colliders[i].enabled = value;
}
}
}