From 84570fe87de357319c14ac9be5904471b590a120 Mon Sep 17 00:00:00 2001 From: Zenny Date: Fri, 7 Mar 2025 23:08:08 -0800 Subject: [PATCH] Slightly rework death screen --- Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs | 4 ++++ Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs | 4 +++- .../Game/state/states/GameLogic.State.Playing.cs | 8 ++++---- .../Player/State/PlayerLogic.Input.cs | 2 +- .../Player/State/PlayerLogic.Output.cs | 4 +--- .../Player/State/States/PlayerLogic.State.Alive.cs | 5 +++-- .../src/enemy/enemy_types/01. sproingy/Sproingy.tscn | 4 ++-- .../src/enemy/enemy_types/02. michael/Michael.tscn | 6 +++--- Zennysoft.Game.Ma/src/player/Player.cs | 3 ++- 9 files changed, 23 insertions(+), 17 deletions(-) diff --git a/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs index 4e18382e..55b5c392 100644 --- a/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameLogic.State.cs @@ -15,17 +15,21 @@ public partial class GameLogic var gameRepo = Get(); gameRepo.IsPaused.Sync += OnIsPaused; gameRepo.DoubleExpTimeStart += OnDoubleExpTimeStart; + gameRepo.Ended += OnGameEnded; }); OnDetach(() => { var gameRepo = Get(); 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)); } } diff --git a/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs index e802d4ce..21db5992 100644 --- a/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/GameRepo.cs @@ -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(); diff --git a/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs index 2bbfe5d9..ad9b1eec 100644 --- a/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs +++ b/Zennysoft.Game.Ma.Implementation/Game/state/states/GameLogic.State.Playing.cs @@ -8,20 +8,20 @@ public partial class GameLogic { [Meta] public partial record Playing : State, - IGet, IGet, IGet, IGet { 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(); - public Transition On(in Input.AskForTeleport input) => To(); public Transition On(in Input.PauseGame input) => To(); diff --git a/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs index 844b3631..7528b85f 100644 --- a/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Input.cs @@ -16,6 +16,6 @@ public partial class PlayerLogic public readonly record struct AttackAnimationFinished; - public readonly record struct Killed; + public readonly record struct Die; } } diff --git a/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs index 6e8a6558..d4425b11 100644 --- a/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/PlayerLogic.Output.cs @@ -1,6 +1,4 @@ -using System.Numerics; - -namespace Zennysoft.Game.Ma.Implementation; +namespace Zennysoft.Game.Ma.Implementation; public partial class PlayerLogic { diff --git a/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs index 26422086..7a009cf1 100644 --- a/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs +++ b/Zennysoft.Game.Ma.Implementation/Player/State/States/PlayerLogic.State.Alive.cs @@ -8,7 +8,7 @@ public partial class PlayerLogic public partial record State { [Meta, Id("player_logic_alive")] - public abstract partial record Alive : State, IGet, IGet + public abstract partial record Alive : State, IGet, IGet { 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().GameEnded(); return To(); } } diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn index 810bd263..2361ea6b 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/01. sproingy/Sproingy.tscn @@ -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 diff --git a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn index 4f430b3a..23ae2f1e 100644 --- a/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn +++ b/Zennysoft.Game.Ma/src/enemy/enemy_types/02. michael/Michael.tscn @@ -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 diff --git a/Zennysoft.Game.Ma/src/player/Player.cs b/Zennysoft.Game.Ma/src/player/Player.cs index 5b354d77..a187379b 100644 --- a/Zennysoft.Game.Ma/src/player/Player.cs +++ b/Zennysoft.Game.Ma/src/player/Player.cs @@ -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) {