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


public void Activate(GameObject player)
    {
        // 1. Проверяем КЛЮЧ: если этот предмет называется RoomKey, просто кладем его в карман
        if (gameObject.name == "RoomKey")
        {
            if (player.TryGetComponent(out PickUpSystem pickup))
            {
                pickup.hasKey = true; // Записали в карман игрока
                if (pickup.uiPrompt != null) pickup.uiPrompt.SetActive(false);
                Debug.Log("Ключ успешно спрятан в карман Олега!");
                Destroy(gameObject); // Стираем ключ с тумбочки
            }
            return; // Прерываем код, чтобы ключ не лез в руки на место фонарика
        }

        // 2. Логика для обычных предметов в руку (Фонарик, Канистра)
        if (objectType == Type.PickUp)
        {
            if (player.TryGetComponent(out PickUpSystem pickup)) pickup.GrabObject(gameObject);
        }
        // 3. Логика для ДВЕРЕЙ и ШКАФЧИКА
        else if (objectType == Type.Door)
        {
            // ПРОВЕРКА НА ЗАПЕРТЫЙ ШКАФ: если этот шкаф или его родитель называется LockedCupboard
            bool isLocked = gameObject.name == "LockedCupboard" || (transform.parent != null && transform.parent.name == "LockedCupboard");

            if (isLocked)
            {
                if (player.TryGetComponent(out PickUpSystem pickup))
                {
                    // Если ключа в кармане нет — прерываем код, шкафчик не откроется
                    if (!pickup.hasKey)
                    {
                        Debug.Log("Шкафчик заперт! Олегу сначала нужно найти RoomKey в спальне.");
                        return; 
                    }
                }
            }

            // Если шкаф не заперт или у нас есть ключ — открываем дверцу!
            isClosed = !isClosed;
            float targetAngle = isClosed ? 0f : openAngle;
            transform.localRotation = Quaternion.Euler(0f, targetAngle, 0f);
            
            // Проигрываем звук, если на объекте висит AudioSource
            if (TryGetComponent(out AudioSource audio)) audio.Play();
        }
    }