// 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(); } }