using Assets.Scripts; using System; using UnityEngine; public class Door : MonoBehaviour, IDoor { [SerializeField] private Sprite _openDoor; [SerializeField] private bool _debugMode = false; private SpriteRenderer _spriteRenderer; private BoxCollider2D _boxCollider; private bool _isLocked = true; public bool IsLocked => _isLocked; public event EventHandler OnDoorOpened; private void Awake() { _spriteRenderer = GetComponentInChildren(); _boxCollider = gameObject.GetComponent(); } public void OpenDoor() { if (!_isLocked) return; _isLocked = false; // Update visuals if (_spriteRenderer != null && _openDoor != null) { _spriteRenderer.sprite = _openDoor; } // Disable collision if (_boxCollider != null) { _boxCollider.enabled = false; } if (_debugMode) Debug.Log("[Door] Door opened!"); OnDoorOpened?.Invoke(this, EventArgs.Empty); } public void LockDoor() { _isLocked = true; if (_boxCollider != null) { _boxCollider.enabled = true; } if (_debugMode) Debug.Log("[Door] Door locked!"); } }