Files

58 lines
1.3 KiB
C#

using System;
using UnityEngine;
using UnityEngine.SceneManagement;
namespace Zenject.SpaceFighter
{
public class GameRestartHandler : IInitializable, IDisposable, ITickable
{
readonly SignalBus _signalBus;
readonly Settings _settings;
bool _isDelaying;
float _delayStartTime;
public GameRestartHandler(
Settings settings,
SignalBus signalBus)
{
_signalBus = signalBus;
_settings = settings;
}
public void Initialize()
{
_signalBus.Subscribe<PlayerDiedSignal>(OnPlayerDied);
}
public void Dispose()
{
_signalBus.Unsubscribe<PlayerDiedSignal>(OnPlayerDied);
}
public void Tick()
{
if (_isDelaying)
{
if (Time.realtimeSinceStartup - _delayStartTime > _settings.RestartDelay)
{
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
}
}
}
void OnPlayerDied()
{
// Wait a bit before restarting the scene
_delayStartTime = Time.realtimeSinceStartup;
_isDelaying = true;
}
[Serializable]
public class Settings
{
public float RestartDelay;
}
}
}