Add ChargeProgressBar, Credits, and GameOverScreen components for UI management

This commit is contained in:
2025-08-13 00:30:37 +02:00
parent 5d32f20fc4
commit a347140f76
76 changed files with 216 additions and 0 deletions

View File

@@ -0,0 +1 @@
uid://dtpdh4jp51jis

View File

@@ -0,0 +1 @@
uid://gptsgaw3agkf

View File

@@ -0,0 +1 @@
uid://2ql8wj3vfeke

View File

@@ -0,0 +1 @@
uid://d4crrfmbgxnqf

View File

@@ -0,0 +1 @@
uid://sma20qug2r0q

View File

@@ -0,0 +1 @@
uid://pw0pu6gb21y2

View File

@@ -0,0 +1 @@
uid://b0a7k7mse3l68

View File

@@ -0,0 +1 @@
uid://cx7ryqxemgs56

View File

@@ -0,0 +1 @@
uid://mnn5wy5cyr4m

View File

@@ -0,0 +1 @@
uid://chrhjch4ymfvr

View File

@@ -0,0 +1 @@
uid://di572axt0c3s8

View File

@@ -0,0 +1 @@
uid://g61qqsymqfxd

View File

@@ -0,0 +1,81 @@
using Godot;
using Mr.BrickAdventures.scripts.components;
using Mr.BrickAdventures.scripts.Resources;
namespace Mr.BrickAdventures.scripts.UI;
public partial class ChargeProgressBar : Node
{
[Export] public ProgressBar ProgressBar { get; set; }
[Export] public BrickThrowComponent ThrowComponent { get; set; }
private ChargeThrowInputResource _throwInput;
public override void _Ready()
{
Owner.ChildEnteredTree += OnNodeEntered;
ProgressBar.Hide();
SetupDependencies();
}
private void OnNodeEntered(Node node)
{
if (node is not BrickThrowComponent throwComponent || ThrowComponent != null) return;
ThrowComponent = throwComponent;
SetupDependencies();
}
private void SetupDependencies()
{
if (ThrowComponent.ThrowInputBehavior is ChargeThrowInputResource throwInput)
{
_throwInput = throwInput;
}
else
{
_throwInput = null;
}
if (_throwInput == null)
{
return;
}
if (!_throwInput.SupportsCharging())
{
ProgressBar.Hide();
return;
}
SetupProgressBar();
_throwInput.ChargeStarted += OnChargeStarted;
_throwInput.ChargeStopped += OnChargeStopped;
_throwInput.ChargeUpdated += OnChargeUpdated;
}
private void SetupProgressBar()
{
ProgressBar.MinValue = _throwInput.MinPower;
ProgressBar.MaxValue = _throwInput.MaxPower;
ProgressBar.Value = _throwInput.MinPower;
ProgressBar.Step = 0.01f;
ProgressBar.Hide();
}
private void OnChargeStarted()
{
ProgressBar.Show();
}
private void OnChargeStopped()
{
ProgressBar.Hide();
}
private void OnChargeUpdated(float chargeRatio)
{
ProgressBar.Value = chargeRatio;
ProgressBar.Show();
}
}

23
scripts/UI/Credits.cs Normal file
View File

@@ -0,0 +1,23 @@
using Godot;
using Mr.BrickAdventures.Autoloads;
namespace Mr.BrickAdventures.scripts.UI;
public partial class Credits : Control
{
private UIManager _uiManager;
public override void _Ready()
{
_uiManager = GetNode<UIManager>("/root/UIManager");
}
public override void _UnhandledInput(InputEvent @event)
{
if (!@event.IsActionPressed("ui_cancel")) return;
if (_uiManager != null && _uiManager.IsScreenOnTop(this))
{
_uiManager.PopScreen();
}
}
}

View File

@@ -0,0 +1,39 @@
using Godot;
using Mr.BrickAdventures.Autoloads;
namespace Mr.BrickAdventures.scripts.UI;
public partial class GameOverScreen : Node
{
[Export] public Control GameOverPanel { get; set; }
[Export] public Button RestartButton { get; set; }
[Export] public Button MainMenuButton { get; set; }
[Export] public PackedScene MainMenuScene { get; set; }
private GameManager _gameManager;
public override void _Ready()
{
_gameManager = GetNode<GameManager>("/root/GameManager");
RestartButton.Pressed += OnRestartClicked;
MainMenuButton.Pressed += OnMainMenuClicked;
}
private void OnMainMenuClicked()
{
_gameManager.ResetPlayerState();
GetTree().ChangeSceneToPacked(MainMenuScene);
}
private void OnRestartClicked()
{
_gameManager.RestartGame();
}
public void OnPlayerDeath()
{
if (_gameManager == null || _gameManager.GetLives() != 0) return;
GameOverPanel.Show();
}
}

View File

@@ -0,0 +1 @@
uid://b0bv8kw5w5037

View File

@@ -0,0 +1 @@
uid://cfw8nbrarex0i

View File

@@ -0,0 +1 @@
uid://dojn0gw8hsv02

View File

@@ -0,0 +1 @@
uid://cjcc7fia15wu3

View File

@@ -0,0 +1 @@
uid://mnjg3p0aw1ow

View File

@@ -0,0 +1 @@
uid://dh67n16bnl838

View File

@@ -0,0 +1 @@
uid://dnpj72mfi1ywl

View File

@@ -0,0 +1 @@
uid://v7tt4w6bejux

View File

@@ -0,0 +1 @@
uid://xqhrb1c7f6y4

View File

@@ -0,0 +1 @@
uid://r4jybneigfcn

View File

@@ -0,0 +1 @@
uid://2i7p7v135u7c

View File

@@ -0,0 +1 @@
uid://ctfrbj52ejay4

View File

@@ -0,0 +1 @@
uid://xjq33vj0rol0

View File

@@ -0,0 +1 @@
uid://cfdugoeduudar

View File

@@ -0,0 +1 @@
uid://d3fpwddc2j41x

View File

@@ -0,0 +1 @@
uid://c5mhwlyvfuaip

View File

@@ -0,0 +1 @@
uid://7uttgdr6cr5y

View File

@@ -0,0 +1 @@
uid://bjln6jb1sigx2

View File

@@ -0,0 +1 @@
uid://cxuig4xh8nfov

View File

@@ -0,0 +1 @@
uid://dvyd26ricriql

View File

@@ -0,0 +1 @@
uid://dy78ak8eykw6e

View File

@@ -0,0 +1 @@
uid://cwi5qashdag1g

View File

@@ -0,0 +1 @@
uid://bmx6rk281yim2

View File

@@ -0,0 +1 @@
uid://dgb8bqcri7nsj

View File

@@ -0,0 +1 @@
uid://bo506l4x0808e

View File

@@ -0,0 +1 @@
uid://c2hplha6af74q

View File

@@ -0,0 +1 @@
uid://d1388lhp2gpgr

View File

@@ -0,0 +1 @@
uid://cecelixl41t3j

View File

@@ -0,0 +1 @@
uid://bgbnof7aeydmq

View File

@@ -0,0 +1 @@
uid://diw6opv6yutgi

View File

@@ -0,0 +1 @@
uid://cgfynrn68lp12

View File

@@ -0,0 +1 @@
uid://cbexrnnj47f87

View File

@@ -0,0 +1 @@
uid://1oo22ieply7n

View File

@@ -0,0 +1 @@
uid://oyf25mpc5etr

View File

@@ -0,0 +1 @@
uid://bi5nx8s1gisbd

View File

@@ -0,0 +1 @@
uid://cs6u3sh68f43j

View File

@@ -0,0 +1 @@
uid://bnaxy8cw3wrko

View File

@@ -0,0 +1 @@
uid://byw1legrv1ep2

View File

@@ -0,0 +1 @@
uid://3qy7rm28q66a

View File

@@ -0,0 +1 @@
uid://bh31avqjbniik

View File

@@ -0,0 +1 @@
uid://c7n6ecsobohjn

View File

@@ -0,0 +1 @@
uid://dnh0mekg2vqxi

View File

@@ -0,0 +1 @@
uid://ccqb8kd5m0eh7

View File

@@ -0,0 +1 @@
uid://cty54itmnudfm

View File

@@ -0,0 +1 @@
uid://dr3uv0j7n75s

View File

@@ -0,0 +1 @@
uid://d2hrr8fruho1d

View File

@@ -0,0 +1 @@
uid://dlh5xcv2sy82s

View File

@@ -0,0 +1 @@
uid://dtv2r7q4elgre

View File

@@ -0,0 +1 @@
uid://d3gfg05ll8uw3

View File

@@ -0,0 +1 @@
uid://cqw134ewht3hc

View File

@@ -0,0 +1 @@
uid://t8rsvwdwt8ea

View File

@@ -0,0 +1 @@
uid://dtg6115je7b5s

View File

@@ -0,0 +1 @@
uid://c7p06t0eax8am

View File

@@ -0,0 +1 @@
uid://cypxrqoeiihbf

View File

@@ -0,0 +1 @@
uid://cvaa6aqyijcp1

View File

@@ -0,0 +1 @@
uid://cqkh5e36p5fj0

View File

@@ -0,0 +1 @@
uid://cqau0810tjk4d

View File

@@ -0,0 +1 @@
uid://gwr4eajx8j50

View File

@@ -0,0 +1 @@
uid://cflncpa377l8l

View File

@@ -0,0 +1 @@
uid://cgscn34soorcp

View File

@@ -0,0 +1 @@
uid://c3dw0fsemrd0f