62 lines
1.3 KiB
C#
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()
|
|
{
|
|
}
|
|
}
|