TurnBasedStrategyCourse/Assets/Scripts/Door.cs

45 lines
1.2 KiB
C#

using System;
using Grid;
using UnityEngine;
public class Door : MonoBehaviour {
private static readonly int open = Animator.StringToHash("IsOpen");
[SerializeField] private bool isOpen;
private Animator animator;
private Action onInteractComplete;
private float timer;
public bool IsActive { get; private set; }
private GridPosition GridPosition { get; set; }
private bool IsOpen {
get => isOpen;
set {
isOpen = value;
animator.SetBool(open, IsOpen);
Pathfinding.Instance.SetWalkableGridPosition(GridPosition, isOpen);
}
}
private void Awake() => animator = GetComponent<Animator>();
private void Start() {
GridPosition = LevelGrid.Instance.GetGridPosition(transform.position);
LevelGrid.Instance.SetDoorAtGridPosition(GridPosition, this);
IsOpen = isOpen;
}
private void Update() {
if (!IsActive) return;
timer -= Time.deltaTime;
if (timer > 0f) return;
IsActive = false;
onInteractComplete();
}
public void Interact(Action newOnInteractComplete) {
onInteractComplete = newOnInteractComplete;
IsActive = true;
timer = .5f;
IsOpen = !IsOpen;
}
}