Загрузка данных


using UnityEngine;

public class ItemInteraction : MonoBehaviour
{
    public enum InteractionType { PickupBattery, InsertSocket }

    [Header("Тип этого объекта")]
    public InteractionType objectType;

    [Header("Для щитка (Socket)")]
    public GameObject batteryInSocket; // Ссылка на скрытую батарейку в щитке
    public ElevatorController elevatorController; // Ссылка на лифт

    // Статическая переменная — общая память для всей игры
    public static bool hasBattery = false; 

    private bool isPlayerNear = false;

    void Start()
    {
        // Если этот объект — щиток, прячем батарейку в нем на старте
        if (objectType == InteractionType.InsertSocket && batteryInSocket != null)
        {
            batteryInSocket.SetActive(false);
        }
    }

    void Update()
    {
        if (isPlayerNear && Input.GetKeyDown(KeyCode.E))
        {
            Interact();
        }
    }

    void Interact()
    {
        // 1. ЛОГИКА ПОДБОРА БАТАРЕЙКИ НА БАЛКОНЕ
        if (objectType == InteractionType.PickupBattery)
        {
            if (!hasBattery)
            {
                hasBattery = true;
                Debug.Log("Батарейка взята!");
                Destroy(gameObject); // Удаляем батарейку с балкона
            }
        }
        // 2. ЛОГИКА ВСТАВКИ В ЩИТОК У ЛИФТА
        else if (objectType == InteractionType.InsertSocket)
        {
            if (hasBattery)
            {
                hasBattery = false; // Забираем у игрока
                
                if (batteryInSocket != null)
                    batteryInSocket.SetActive(true); // Включаем видимость в щитке

                Debug.Log("Батарейка вставлена в щиток!");

                if (elevatorController != null)
                    elevatorController.CollectBattery(); // Даем лифту сигнал
            }
            else
            {
                Debug.Log("У вас нет батарейки! Найдите её.");
            }
        }
    }

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Player"))
            isPlayerNear = true;
    }

    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
            isPlayerNear = false;
    }
}