Files
beyond/Assets/Scripts/Characters/KillTrigger.cs
2024-11-20 15:21:28 +01:00

69 lines
1.6 KiB
C#

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<KillTrigger> 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<SaveData>(s);
if (data != null)
m_data = data;
}
}
}