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();
}
}