Update Project
This commit is contained in:
+57
@@ -0,0 +1,57 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user