using UnityEngine;
public class Interactable : MonoBehaviour
{
public enum Type { PickUp, Door }
[Header("Настройки предмета")]
public Type objectType;
[Header("Для дверей (если тип Door)")]
public bool isClosed = true;
public float openAngle = 90f;
public void Activate(GameObject player)
{
// 1. Проверяем, если игрок нажал Е на КЛЮЧЕ
if (gameObject.name == "RoomKey")
{
if (player.TryGetComponent(out PickUpSystem pickup))
{
pickup.hasKey = true; // Записываем в карман
Destroy(gameObject); // Уничтожаем ключ со сцены
Debug.Log("Ключ взят через Interactable!");
}
return; // Прерываем код, чтобы ключ не лез в руки
}
// 2. Логика для обычных подбираемых предметов (Фонарик, Канистра)
if (objectType == Type.PickUp)
{
if (player.TryGetComponent(out PickUpSystem pickup)) pickup.GrabObject(gameObject);
}
// 3. Логика для дверей и запертого шкафчика
else if (objectType == Type.Door)
{
// Если этот объект лежит внутри родителя с именем "LockedCupboard"
if (transform.parent != null && transform.parent.name == "LockedCupboard")
{
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);
if (TryGetComponent(out AudioSource audio)) audio.Play();
}
}
}