Slightly rework death screen

This commit is contained in:
2025-03-07 23:08:08 -08:00
parent 8a61104868
commit 84570fe87d
9 changed files with 23 additions and 17 deletions

View File

@@ -15,17 +15,21 @@ public partial class GameLogic
var gameRepo = Get<IGameRepo>();
gameRepo.IsPaused.Sync += OnIsPaused;
gameRepo.DoubleExpTimeStart += OnDoubleExpTimeStart;
gameRepo.Ended += OnGameEnded;
});
OnDetach(() =>
{
var gameRepo = Get<IGameRepo>();
gameRepo.IsPaused.Sync -= OnIsPaused;
gameRepo.DoubleExpTimeStart -= OnDoubleExpTimeStart;
gameRepo.Ended -= OnGameEnded;
});
}
private void OnDoubleExpTimeStart(int lengthOfTimeInSeconds) => Output(new Output.DoubleExpTimeStart(lengthOfTimeInSeconds));
private void OnGameEnded() => Output(new Output.ShowLostScreen());
public void OnIsPaused(bool isPaused) => Output(new Output.SetPauseMode(isPaused));
}
}

View File

@@ -38,6 +38,8 @@ public interface IGameRepo : IDisposable
public void CloseInventory();
public void GameEnded();
public double ExpRate { get; }
}
@@ -109,7 +111,7 @@ public class GameRepo : IGameRepo
CloseInventoryEvent?.Invoke();
}
public void OnGameEnded()
public void GameEnded()
{
Pause();
Ended?.Invoke();

View File

@@ -8,20 +8,20 @@ public partial class GameLogic
{
[Meta]
public partial record Playing : State,
IGet<Input.GameOver>,
IGet<Input.AskForTeleport>,
IGet<Input.PauseGame>,
IGet<Input.GoToOverworld>
{
public Playing()
{
OnAttach(() => Output(new Output.StartGame()));
OnAttach(() =>
{
Output(new Output.StartGame());
});
}
public void OnEnded() => Input(new Input.GameOver());
public Transition On(in Input.GameOver input) => To<Quit>();
public Transition On(in Input.AskForTeleport input) => To<AskForTeleport>();
public Transition On(in Input.PauseGame input) => To<Paused>();

View File

@@ -16,6 +16,6 @@ public partial class PlayerLogic
public readonly record struct AttackAnimationFinished;
public readonly record struct Killed;
public readonly record struct Die;
}
}

View File

@@ -1,6 +1,4 @@
using System.Numerics;
namespace Zennysoft.Game.Ma.Implementation;
namespace Zennysoft.Game.Ma.Implementation;
public partial class PlayerLogic
{

View File

@@ -8,7 +8,7 @@ public partial class PlayerLogic
public partial record State
{
[Meta, Id("player_logic_alive")]
public abstract partial record Alive : State, IGet<Input.PhysicsTick>, IGet<Input.Killed>
public abstract partial record Alive : State, IGet<Input.PhysicsTick>, IGet<Input.Die>
{
public virtual Transition On(in Input.PhysicsTick input)
{
@@ -17,9 +17,10 @@ public partial class PlayerLogic
return ToSelf();
}
public Transition On(in Input.Killed input)
public Transition On(in Input.Die input)
{
GD.Print("Player died");
Get<IGameRepo>().GameEnded();
return To<Dead>();
}
}