Overhaul game state logic to support gameplay loop

This commit is contained in:
2025-04-30 00:43:55 -07:00
parent 78cdda97b9
commit 68c91d8f13
60 changed files with 2503 additions and 1116 deletions

View File

@@ -17,6 +17,11 @@ public partial class DeathMenu : Control, IDeathMenu
{
public override void _Notification(int what) => this.Notify(what);
[Signal]
public delegate void NewGameEventHandler();
[Signal]
public delegate void QuitGameEventHandler();
[Dependency] Game Game => this.DependOn<Game>();
[Node] public IAnimationPlayer AnimationPlayer { get; set; } = default!;
@@ -42,13 +47,13 @@ public partial class DeathMenu : Control, IDeathMenu
private void Exit_Pressed()
{
GetTree().Quit();
EmitSignal(SignalName.QuitGame);
}
private void Continue_Pressed()
{
FadeOut();
Game.GameLogic.Input(new GameLogic.Input.GoToOverworld());
EmitSignal(SignalName.NewGame);
}
public void FadeIn() => AnimationPlayer.Play("fade_in");

View File

@@ -17,6 +17,18 @@ tracks/0/keys = {
"update": 0,
"values": [Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0.001),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [false]
}
[sub_resource type="Animation" id="Animation_q2nvr"]
resource_name = "fade_in"
@@ -33,6 +45,18 @@ tracks/0/keys = {
"update": 0,
"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 1,
"values": [true]
}
[sub_resource type="Animation" id="Animation_6ji3u"]
resource_name = "fade_out"
@@ -49,6 +73,18 @@ tracks/0/keys = {
"update": 0,
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
}
tracks/1/type = "value"
tracks/1/imported = false
tracks/1/enabled = true
tracks/1/path = NodePath(".:visible")
tracks/1/interp = 1
tracks/1/loop_wrap = true
tracks/1/keys = {
"times": PackedFloat32Array(0, 0.5),
"transitions": PackedFloat32Array(1, 1),
"update": 1,
"values": [true, false]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_ek7oy"]
_data = {

View File

@@ -9,6 +9,8 @@ namespace Zennysoft.Game.Ma;
public interface IPlayerInfoUI : IControl
{
public void DisplayMessage(string message);
public void Activate();
}
[Meta(typeof(IAutoNode))]
@@ -33,6 +35,10 @@ public partial class PlayerInfoUI : Control, IPlayerInfoUI
public void OnResolved()
{
_labelSettings = GD.Load<LabelSettings>("res://src/ui/label_settings/InventoryFullAlertLabelSetting.tres");
}
public void Activate()
{
Player.Stats.CurrentHP.Sync += CurrentHP_Sync;
Player.Stats.MaximumHP.Sync += MaximumHP_Sync;