| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- using System;
- using UnityEngine;
- namespace DunGen
- {
- [Serializable]
- public class Door : MonoBehaviour
- {
- public delegate void DoorStateChangedDelegate(Door door, bool isOpen);
- [HideInInspector]
- public Dungeon Dungeon;
- [HideInInspector]
- public Doorway DoorwayA;
- [HideInInspector]
- public Doorway DoorwayB;
- [HideInInspector]
- public Tile TileA;
- [HideInInspector]
- public Tile TileB;
- public bool DontCullBehind
- {
- get { return dontCullBehind; }
- set
- {
- if (dontCullBehind == value)
- return;
- dontCullBehind = value;
- SetDoorState(isOpen);
- }
- }
- public bool ShouldCullBehind
- {
- get
- {
- if (DontCullBehind)
- return false;
- return !isOpen;
- }
- }
- public virtual bool IsOpen
- {
- get { return isOpen; }
- set
- {
- if (isOpen == value)
- return;
- SetDoorState(value);
- }
- }
- public event DoorStateChangedDelegate OnDoorStateChanged;
- [SerializeField]
- private bool dontCullBehind;
- [SerializeField]
- private bool isOpen = true;
- private void OnDestroy()
- {
- OnDoorStateChanged = null;
- }
- public void SetDoorState(bool isOpen)
- {
- this.isOpen = isOpen;
- if (OnDoorStateChanged != null)
- OnDoorStateChanged(this, isOpen);
- }
- }
- }
|