using System; using System.Collections; using System.Collections.Generic; using PixelCrushers; using UnityEngine; using UnityEngine.Events; namespace Beyond { public class KillTrigger : Saver { [SerializeField] EnemySpawner[] m_spawners; public UnityEvent OnTrigger; [Serializable] public class SaveData { public bool wasTriggered = false; } private SaveData m_data = new SaveData(); void Start() { foreach (var s in m_spawners) { s.m_OnDead.AddListener(OnEnemyKilled); } } public void CheckSpawners() { if (m_data.wasTriggered) return; foreach (var spawner in m_spawners) { if (!spawner.SpawnedAndDead()) return; } OnTrigger?.Invoke(this); m_data.wasTriggered = true; } private void OnEnemyKilled(EnemySpawner arg0) { CheckSpawners(); } private void OnDestroy() { foreach (var s in m_spawners) { s.m_OnDead.RemoveListener(OnEnemyKilled); } } public override string RecordData() { return SaveSystem.Serialize(m_data); } public override void ApplyData(string s) { var data = SaveSystem.Deserialize(s); if (data != null) m_data = data; } } }