Modify UI placement, fix debug menu

This commit is contained in:
2025-08-07 23:25:58 -07:00
parent 5725e7a6fb
commit 7c694149c2
12 changed files with 156 additions and 111 deletions

View File

@@ -22,6 +22,8 @@ public partial class InGameUI : Control, IInGameUI
[Node] public IPlayerInfoUI PlayerInfoUI { get; set; } = default!;
[Node] public InventoryMessageUI InventoryMessageUI { get; set; } = default!;
[Node] public IUseTeleportPrompt UseTeleportPrompt { get; set; } = default!;
[Node] public IDebugMenu DebugMenu { get; set; } = default!;
@@ -43,7 +45,7 @@ public partial class InGameUI : Control, IInGameUI
InGameUILogicBinding = InGameUILogic.Bind();
InGameUILogicBinding
.Handle((in InGameUILogic.Output.AnnounceMessageOnMainScreen output) => { PlayerInfoUI.DisplayMessage(output.Message); })
.Handle((in InGameUILogic.Output.AnnounceMessageOnMainScreen output) => { InventoryMessageUI.DisplayMessage(output.Message); })
.Handle((in InGameUILogic.Output.AnnounceMessageInInventory output) => { InventoryMenu.DisplayMessage(output.Message); })
.Handle((in InGameUILogic.Output.RemoveItemFromInventory output) => { InventoryMenu.RemoveItem(output.Item); })
.Handle((in InGameUILogic.Output.DisplayMinimap _) => { MiniMap.SetProcessUnhandledInput(true); MiniMap.Show(); })

View File

@@ -1,70 +1,64 @@
[gd_scene load_steps=8 format=3 uid="uid://b1muxus5qdbeu"]
[gd_scene load_steps=9 format=3 uid="uid://b1muxus5qdbeu"]
[ext_resource type="Script" uid="uid://dlq2mkhl4pe7a" path="res://src/ui/in_game_ui/InGameUI.cs" id="1_sc13i"]
[ext_resource type="PackedScene" uid="uid://bwbofurcvf3yh" path="res://src/minimap/Minimap.tscn" id="2_6sfje"]
[ext_resource type="PackedScene" uid="uid://dlj8qdg1c5048" path="res://src/ui/inventory_menu/InventoryMenu.tscn" id="3_4vcdl"]
[ext_resource type="PackedScene" uid="uid://dxl8il8f13c2x" path="res://src/ui/player_ui/PlayerInfoUI.tscn" id="4_46s5l"]
[ext_resource type="PackedScene" uid="uid://bea2waybmgd6u" path="res://src/ui/teleport_prompt/UseTeleportPrompt.tscn" id="5_h1hgq"]
[ext_resource type="PackedScene" uid="uid://x0f1ol50nnp3" path="res://src/ui/in_game_ui/InventoryMessageUI.tscn" id="6_y26qy"]
[ext_resource type="Script" uid="uid://dj6oqler47dqf" path="res://src/utils/FpsCounter.cs" id="7_c6o8j"]
[ext_resource type="PackedScene" uid="uid://8f3dk16nj0dn" path="res://src/menu/DebugMenu.tscn" id="7_llomk"]
[node name="InGameUI" type="Control"]
process_mode = 3
custom_minimum_size = Vector2(1920, 1080)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 8.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_sc13i")
[node name="HBoxContainer" type="HBoxContainer" parent="."]
custom_minimum_size = Vector2(1920, 1080)
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 20.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 0
[node name="ColorRect" type="ColorRect" parent="HBoxContainer"]
custom_minimum_size = Vector2(260, 0)
layout_mode = 2
color = Color(0.172833, 0.172833, 0.172833, 1)
[node name="SubViewportContainer" type="SubViewportContainer" parent="HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SubViewport" type="SubViewport" parent="HBoxContainer/SubViewportContainer"]
transparent_bg = true
handle_input_locally = false
size = Vector2i(1400, 1080)
size = Vector2i(1440, 1080)
render_target_update_mode = 4
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/SubViewportContainer/SubViewport"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 25
theme_override_constants/margin_top = 40
[node name="InventoryMessageUI" parent="HBoxContainer/SubViewportContainer/SubViewport/MarginContainer" instance=ExtResource("6_y26qy")]
unique_name_in_owner = true
layout_mode = 2
[node name="CenterContainer" type="CenterContainer" parent="HBoxContainer/SubViewportContainer/SubViewport"]
custom_minimum_size = Vector2(1440, 1080)
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 8.0
grow_horizontal = 2
grow_vertical = 2
[node name="PlayerInfoUI" parent="HBoxContainer/SubViewportContainer/SubViewport/CenterContainer" instance=ExtResource("4_46s5l")]
unique_name_in_owner = true
custom_minimum_size = Vector2(1440, 1080)
layout_mode = 2
[node name="MiniMap" parent="HBoxContainer/SubViewportContainer/SubViewport/CenterContainer" instance=ExtResource("2_6sfje")]
unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(1440, 1080)
layout_mode = 2
[node name="InventoryMenu" parent="HBoxContainer/SubViewportContainer/SubViewport/CenterContainer" instance=ExtResource("3_4vcdl")]
unique_name_in_owner = true
process_mode = 3
@@ -87,7 +81,34 @@ visible = false
custom_minimum_size = Vector2(1440, 1080)
layout_mode = 2
[node name="ColorRect2" type="ColorRect" parent="HBoxContainer"]
custom_minimum_size = Vector2(260, 0)
[node name="Panel" type="ColorRect" parent="HBoxContainer"]
custom_minimum_size = Vector2(480, 0)
layout_mode = 2
color = Color(0.172549, 0.172549, 0.172549, 1)
color = Color(0.192157, 0.27451, 0.258824, 1)
[node name="MarginContainer" type="MarginContainer" parent="HBoxContainer/Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 25
theme_override_constants/margin_top = 25
[node name="VBoxContainer" type="VBoxContainer" parent="HBoxContainer/Panel/MarginContainer"]
layout_mode = 2
[node name="PlayerInfoUI" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer" instance=ExtResource("4_46s5l")]
unique_name_in_owner = true
layout_mode = 2
size_flags_vertical = 3
[node name="MiniMap" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer" instance=ExtResource("2_6sfje")]
unique_name_in_owner = true
visible = false
layout_mode = 2
[node name="Sigil Marker" type="ReferenceRect" parent="HBoxContainer/Panel/MarginContainer/VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3

View File

@@ -0,0 +1,42 @@
using Chickensoft.AutoInject;
using Chickensoft.Introspection;
using Godot;
namespace Zennysoft.Game.Ma;
[Meta(typeof(IAutoNode))]
public partial class InventoryMessageUI : Control
{
public override void _Notification(int what) => this.Notify(what);
[Node] public Control MessageBox { get; set; } = default!;
private LabelSettings _labelSettings { get; set; }
public void OnResolved()
{
_labelSettings = GD.Load<LabelSettings>("res://src/ui/label_settings/InventoryFullAlertLabelSetting.tres");
}
public async void DisplayInventoryFullMessage(string rejectedItemName)
{
var newLabel = new Label() { Text = $"Could not pick up {rejectedItemName}.", LabelSettings = _labelSettings };
MessageBox.AddChild(newLabel);
GetTree().CreateTimer(3f).Timeout += () =>
{
MessageBox.RemoveChild(newLabel);
};
}
public async void DisplayMessage(string message)
{
var newLabel = new Label() { Text = message, LabelSettings = _labelSettings };
MessageBox.AddChild(newLabel);
GetTree().CreateTimer(3f).Timeout += () =>
{
MessageBox.RemoveChild(newLabel);
};
}
}

View File

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

View File

@@ -0,0 +1,21 @@
[gd_scene load_steps=2 format=3 uid="uid://x0f1ol50nnp3"]
[ext_resource type="Script" uid="uid://c1oik3knsrita" path="res://src/ui/in_game_ui/InventoryMessageUI.cs" id="1_gwlh3"]
[node name="InventoryMessageUI" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_gwlh3")
[node name="AspectRatioContainer" type="AspectRatioContainer" parent="."]
layout_mode = 1
offset_right = 34.0
offset_bottom = 23.0
[node name="MessageBox" type="VBoxContainer" parent="AspectRatioContainer"]
unique_name_in_owner = true
layout_mode = 2

View File

@@ -8,8 +8,6 @@ namespace Zennysoft.Game.Ma;
public interface IPlayerInfoUI : IControl
{
public void DisplayMessage(string message);
public void Activate();
}
@@ -18,8 +16,6 @@ public partial class PlayerInfoUI : Control, IPlayerInfoUI
{
public override void _Notification(int what) => this.Notify(what);
private LabelSettings _labelSettings { get; set; }
#region Nodes
[Node] public VBoxContainer PlayerInfo { get; set; } = default!;
@@ -32,11 +28,6 @@ public partial class PlayerInfoUI : Control, IPlayerInfoUI
[Dependency] public IPlayer Player => this.DependOn<IPlayer>();
public void OnResolved()
{
_labelSettings = GD.Load<LabelSettings>("res://src/ui/label_settings/InventoryFullAlertLabelSetting.tres");
}
public void Activate()
{
Player.Stats.CurrentHP.Sync += CurrentHP_Sync;
@@ -72,26 +63,4 @@ public partial class PlayerInfoUI : Control, IPlayerInfoUI
{
HPNumber.Text = $"{obj}/{Player.Stats.MaximumHP.Value}";
}
public async void DisplayInventoryFullMessage(string rejectedItemName)
{
var newLabel = new Label() { Text = $"Could not pick up {rejectedItemName}.", LabelSettings = _labelSettings };
PlayerInfo.AddChild(newLabel);
GetTree().CreateTimer(3f).Timeout += () =>
{
PlayerInfo.RemoveChild(newLabel);
};
}
public async void DisplayMessage(string message)
{
var newLabel = new Label() { Text = message, LabelSettings = _labelSettings };
PlayerInfo.AddChild(newLabel);
GetTree().CreateTimer(3f).Timeout += () =>
{
PlayerInfo.RemoveChild(newLabel);
};
}
}

View File

@@ -1,6 +1,5 @@
[gd_scene load_steps=5 format=3 uid="uid://dxl8il8f13c2x"]
[gd_scene load_steps=4 format=3 uid="uid://dxl8il8f13c2x"]
[ext_resource type="Texture2D" uid="uid://hg2kraa5nrnl" path="res://src/ui/textures/blank level symbol.png" id="1_78qrq"]
[ext_resource type="Script" uid="uid://b65cbirtijlii" path="res://src/ui/player_ui/PlayerInfoUI.cs" id="1_d8yyu"]
[ext_resource type="LabelSettings" uid="uid://ca1q6yu8blwxf" path="res://src/ui/label_settings/InventoryMainTextBold.tres" id="2_aa7fx"]
[ext_resource type="LabelSettings" uid="uid://dupifadnagodp" path="res://src/ui/label_settings/MainTextRegular.tres" id="3_xdjh1"]
@@ -15,86 +14,84 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_d8yyu")
[node name="MarginContainer" type="MarginContainer" parent="."]
[node name="AspectRatio" type="AspectRatioContainer" parent="."]
layout_mode = 1
anchors_preset = 9
anchor_bottom = 1.0
offset_right = 426.0
grow_vertical = 2
theme_override_constants/margin_left = 32
theme_override_constants/margin_top = 20
offset_right = 266.0
offset_bottom = 177.0
[node name="PlayerInfo" type="VBoxContainer" parent="MarginContainer"]
[node name="PlayerInfo" type="VBoxContainer" parent="AspectRatio"]
unique_name_in_owner = true
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PlayerInfo"]
[node name="HBoxContainer" type="HBoxContainer" parent="AspectRatio/PlayerInfo"]
layout_mode = 2
[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/PlayerInfo/HBoxContainer"]
[node name="CenterContainer" type="CenterContainer" parent="AspectRatio/PlayerInfo/HBoxContainer"]
layout_mode = 2
[node name="TextureRect" type="TextureRect" parent="MarginContainer/PlayerInfo/HBoxContainer/CenterContainer"]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
size_flags_vertical = 3
texture = ExtResource("1_78qrq")
expand_mode = 1
stretch_mode = 4
[node name="LevelNumber" type="Label" parent="MarginContainer/PlayerInfo/HBoxContainer/CenterContainer"]
unique_name_in_owner = true
custom_minimum_size = Vector2(80, 80)
layout_mode = 2
text = "99"
label_settings = ExtResource("2_aa7fx")
horizontal_alignment = 1
vertical_alignment = 1
[node name="VBox" type="VBoxContainer" parent="MarginContainer/PlayerInfo/HBoxContainer"]
[node name="VBox" type="VBoxContainer" parent="AspectRatio/PlayerInfo/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 4
size_flags_vertical = 4
theme_override_constants/separation = 15
[node name="HBox" type="HBoxContainer" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox"]
[node name="HP Box" type="HBoxContainer" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox"]
layout_mode = 2
size_flags_horizontal = 3
[node name="HP" type="Label" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox"]
[node name="HP" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/HP Box"]
layout_mode = 2
text = "HP: "
label_settings = ExtResource("2_aa7fx")
[node name="ReferenceRect" type="ReferenceRect" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox"]
[node name="ReferenceRect" type="ReferenceRect" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/HP Box"]
custom_minimum_size = Vector2(30, 0)
layout_mode = 2
border_width = 0.0
[node name="HPNumber" type="Label" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox"]
[node name="HPNumber" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/HP Box"]
unique_name_in_owner = true
layout_mode = 2
text = "222/222"
label_settings = ExtResource("3_xdjh1")
[node name="HBox2" type="HBoxContainer" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox"]
[node name="VT Box" type="HBoxContainer" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox"]
layout_mode = 2
[node name="VT" type="Label" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox2"]
[node name="VT" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/VT Box"]
layout_mode = 2
text = "VT:"
label_settings = ExtResource("2_aa7fx")
[node name="ReferenceRect" type="ReferenceRect" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox2"]
[node name="ReferenceRect" type="ReferenceRect" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/VT Box"]
custom_minimum_size = Vector2(30, 0)
layout_mode = 2
border_width = 0.0
[node name="VTNumber" type="Label" parent="MarginContainer/PlayerInfo/HBoxContainer/VBox/HBox2"]
[node name="VTNumber" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/VT Box"]
unique_name_in_owner = true
layout_mode = 2
text = "444/444"
label_settings = ExtResource("3_xdjh1")
[node name="TextureButton" type="TextureButton" parent="MarginContainer"]
[node name="Level Box" type="HBoxContainer" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox"]
layout_mode = 2
[node name="LevelNumber" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/Level Box"]
unique_name_in_owner = true
layout_mode = 2
text = "LVL. 08"
label_settings = ExtResource("2_aa7fx")
horizontal_alignment = 1
vertical_alignment = 1
[node name="EXP Box" type="HBoxContainer" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox"]
layout_mode = 2
[node name="EXPNumber" type="Label" parent="AspectRatio/PlayerInfo/HBoxContainer/VBox/EXP Box"]
unique_name_in_owner = true
layout_mode = 2
text = "XP 901/2002"
label_settings = ExtResource("2_aa7fx")
horizontal_alignment = 1
vertical_alignment = 1