3DTD/Assets/Scripts/Tower/Tower.cs

62 lines
1.3 KiB
C#

using System;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Assertions;
public abstract class Tower : MonoBehaviour
{
[SerializeField]
private GameObject selectedUI;
protected bool selected = false;
protected HealthComponent healthComp;
protected Outline outline;
protected Camera mainCam;
[SerializeField] protected UnityEvent OnAttack;
// Getters
public virtual void TowerSelected(bool selected)
{
this.selected = selected;
outline.enabled = selected;
selectedUI.SetActive(selected);
}
public virtual void Placed()
{
// dont ask me why but this makes sure everything is initialized lol
TowerSelected(true);
TowerSelected(false);
}
protected virtual void Awake()
{
healthComp = GetComponent<HealthComponent>();
outline = GetComponent<Outline>();
Assert.IsNotNull(healthComp);
Assert.IsNotNull(outline);
mainCam = Camera.main;
}
protected virtual void Start()
{
}
protected virtual void OnDestroy()
{
}
protected virtual void Update()
{
selectedUI.transform.LookAt(mainCam.transform.position);
}
protected virtual void FixedUpdate()
{
}
}