Slightly rework death screen
This commit is contained in:
@@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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>();
|
||||
|
||||
@@ -16,6 +16,6 @@ public partial class PlayerLogic
|
||||
|
||||
public readonly record struct AttackAnimationFinished;
|
||||
|
||||
public readonly record struct Killed;
|
||||
public readonly record struct Die;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using System.Numerics;
|
||||
|
||||
namespace Zennysoft.Game.Ma.Implementation;
|
||||
namespace Zennysoft.Game.Ma.Implementation;
|
||||
|
||||
public partial class PlayerLogic
|
||||
{
|
||||
|
||||
@@ -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>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
script = ExtResource("2_oln85")
|
||||
CurrentHP = 30.0
|
||||
MaximumHP = 0
|
||||
CurrentAttack = 12
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 7
|
||||
MaxAttack = 12
|
||||
MaxAttack = 15
|
||||
MaxDefense = 7
|
||||
ExpFromDefeat = 15
|
||||
Luck = 0.05
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
[sub_resource type="Resource" id="Resource_xhsah"]
|
||||
script = ExtResource("2_wrps7")
|
||||
CurrentHP = 50.0
|
||||
MaximumHP = 50.0
|
||||
CurrentAttack = 0
|
||||
MaximumHP = 0
|
||||
CurrentAttack = 15
|
||||
CurrentDefense = 0
|
||||
MaxAttack = 0
|
||||
MaxAttack = 15
|
||||
MaxDefense = 0
|
||||
ExpFromDefeat = 0
|
||||
Luck = 0.05
|
||||
|
||||
@@ -150,6 +150,7 @@ public partial class Player : CharacterBody3D, IPlayer
|
||||
PlayerLogic.Set(this as IPlayer);
|
||||
PlayerLogic.Set(Settings);
|
||||
PlayerLogic.Set(Stats);
|
||||
PlayerLogic.Set(_gameRepo);
|
||||
|
||||
var defaultWeapon = new Weapon();
|
||||
defaultWeapon.ItemStats = _defaultWeapon;
|
||||
@@ -387,7 +388,7 @@ public partial class Player : CharacterBody3D, IPlayer
|
||||
Stats.SetCurrentExp(newCurrentExp);
|
||||
}
|
||||
|
||||
public void Die() => PlayerLogic.Input(new PlayerLogic.Input.Killed());
|
||||
public void Die() => PlayerLogic.Input(new PlayerLogic.Input.Die());
|
||||
|
||||
public override void _UnhandledInput(InputEvent @event)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user