// MIT License
// https://gitlab.com/ilnprj
// Copyright (c) 2020 ilnprj
using UnityEngine;
namespace RadarComponents
{
///
/// Abstract radar class. Works when updating a player’s locator
///
[RequireComponent(typeof(ContainerTargetsView))]
public abstract class AbstractRadar : MonoBehaviour
{
public bool TargetsFadeOut
{
get
{
return targetsFadeOut;
}
}
protected PlayerLocator locator = null;
protected ContainerTargetsView containerViews;
[SerializeField]
private bool targetsFadeOut = default;
private ContainerTargetManager containerTargets;
protected virtual void Awake()
{
CheckLocator();
containerViews = GetComponent();
containerTargets = FindObjectOfType();
}
protected virtual void Start()
{
containerViews.SetTargetManager(containerTargets.TargetManager);
}
private void CheckLocator()
{
if (PlayerLocator.IsInited)
{
locator = FindObjectOfType();
}
else
{
PlayerLocator.onInit += SetLocator;
}
PlayerLocator.onUpdateLocator += OnUpdateRadar;
}
protected virtual void OnDestroy()
{
PlayerLocator.onInit -= SetLocator;
PlayerLocator.onUpdateLocator -= OnUpdateRadar;
}
private void SetLocator()
{
locator = FindObjectOfType();
}
///
/// Update information on radar
///
public abstract void OnUpdateRadar();
}
}