Skip to content

Commit 1cdd479

Browse files
committed
Updated reward selection to use display buttons
1 parent 55de3ec commit 1cdd479

4 files changed

Lines changed: 94 additions & 10 deletions

File tree

scenes/BattleDirector/test_battle_scene.tscn

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,6 @@ metadata/_edit_lock_ = true
1919
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
2020
stream = ExtResource("8_caqms")
2121

22-
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."]
23-
stream = ExtResource("8_caqms")
24-
2522
[node name="UILayer" type="CanvasLayer" parent="."]
2623

2724
[node name="Conductor" type="Node" parent="." node_paths=PackedStringArray("CM")]

scenes/UI/RewardSelectionUI.tscn

Lines changed: 59 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22

33
[ext_resource type="Script" path="res://scenes/UI/scripts/RewardSelect.cs" id="1_1m6an"]
44

5-
[node name="CanvasLayer" type="CanvasLayer" node_paths=PackedStringArray("ButtonContainer")]
5+
[node name="CanvasLayer" type="CanvasLayer" node_paths=PackedStringArray("ButtonContainer", "_description", "_acceptButton", "_skipButton")]
66
process_mode = 2
77
script = ExtResource("1_1m6an")
8-
ButtonContainer = NodePath("MarginContainer/PanelContainer/VBoxContainer")
8+
ButtonContainer = NodePath("MarginContainer/PanelContainer/VBoxContainer/ScrollContainer/CenterContainer/HBoxContainer")
9+
_description = NodePath("MarginContainer/PanelContainer/VBoxContainer/DescBox/Description")
10+
_acceptButton = NodePath("MarginContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/AcceptButton")
11+
_skipButton = NodePath("MarginContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer/SkipButton")
912

1013
[node name="MarginContainer" type="MarginContainer" parent="."]
1114
anchors_preset = 15
@@ -25,3 +28,57 @@ layout_mode = 2
2528

2629
[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/PanelContainer"]
2730
layout_mode = 2
31+
32+
[node name="ScrollContainer" type="ScrollContainer" parent="MarginContainer/PanelContainer/VBoxContainer"]
33+
layout_mode = 2
34+
size_flags_vertical = 3
35+
36+
[node name="CenterContainer" type="CenterContainer" parent="MarginContainer/PanelContainer/VBoxContainer/ScrollContainer"]
37+
layout_mode = 2
38+
size_flags_horizontal = 3
39+
size_flags_vertical = 3
40+
41+
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PanelContainer/VBoxContainer/ScrollContainer/CenterContainer"]
42+
layout_mode = 2
43+
size_flags_vertical = 3
44+
45+
[node name="DescBox" type="MarginContainer" parent="MarginContainer/PanelContainer/VBoxContainer"]
46+
layout_mode = 2
47+
size_flags_vertical = 3
48+
theme_override_constants/margin_left = 5
49+
theme_override_constants/margin_top = 5
50+
theme_override_constants/margin_right = 5
51+
theme_override_constants/margin_bottom = 5
52+
53+
[node name="ColorRect" type="ColorRect" parent="MarginContainer/PanelContainer/VBoxContainer/DescBox"]
54+
layout_mode = 2
55+
color = Color(0, 0, 0, 0.552941)
56+
57+
[node name="Description" type="Label" parent="MarginContainer/PanelContainer/VBoxContainer/DescBox"]
58+
layout_mode = 2
59+
size_flags_vertical = 1
60+
autowrap_mode = 2
61+
clip_text = true
62+
text_overrun_behavior = 1
63+
64+
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/PanelContainer/VBoxContainer"]
65+
layout_mode = 2
66+
theme_override_constants/margin_left = 5
67+
theme_override_constants/margin_top = 5
68+
theme_override_constants/margin_right = 5
69+
theme_override_constants/margin_bottom = 5
70+
71+
[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/PanelContainer/VBoxContainer/MarginContainer"]
72+
layout_mode = 2
73+
size_flags_vertical = 3
74+
75+
[node name="AcceptButton" type="Button" parent="MarginContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
76+
layout_mode = 2
77+
size_flags_horizontal = 3
78+
text = "Accept"
79+
80+
[node name="SkipButton" type="Button" parent="MarginContainer/PanelContainer/VBoxContainer/MarginContainer/HBoxContainer"]
81+
layout_mode = 2
82+
size_flags_horizontal = 3
83+
text = "Skip
84+
"

scenes/UI/scripts/DisplayButton.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
public partial class DisplayButton : Button
55
{
6+
//TODO: Make various menus change descriptions when focus changes, instead of on click.
67
[Export]
78
public Texture2D Texture;
89

scenes/UI/scripts/RewardSelect.cs

Lines changed: 34 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,28 @@
55
public partial class RewardSelect : CanvasLayer
66
{
77
[Export]
8-
public VBoxContainer ButtonContainer;
8+
public HBoxContainer ButtonContainer;
9+
10+
[Export]
11+
private Label _description;
12+
13+
[Export]
14+
private Button _acceptButton;
15+
16+
[Export]
17+
private Button _skipButton;
918

1019
private PlayerStats _player;
1120
private RelicTemplate[] _choices;
21+
private RelicTemplate _selection;
1222

1323
public void Initialize(PlayerStats player, int amount)
1424
{
1525
_player = player;
1626
GenerateRelicChoices(amount);
27+
28+
_acceptButton.Pressed += OnSelect;
29+
_skipButton.Pressed += OnSkip;
1730
}
1831

1932
private void GenerateRelicChoices(int amount = 1)
@@ -24,17 +37,33 @@ private void GenerateRelicChoices(int amount = 1)
2437

2538
foreach (var relic in _choices)
2639
{
27-
var button = new Button();
28-
button.Text = relic.Name;
40+
var button = new DisplayButton();
41+
button.Display(relic.Texture, relic.Tooltip, relic.Name);
2942
button.Pressed += () => OnRelicSelected(relic);
3043
ButtonContainer.AddChild(button);
44+
button.GrabFocus();
3145
}
3246
}
3347

3448
private void OnRelicSelected(RelicTemplate choiceRelic)
3549
{
36-
_player.AddRelic(choiceRelic);
37-
GD.Print("Relic selected: " + choiceRelic.Name);
50+
_selection = choiceRelic;
51+
_description.Text = $"{choiceRelic.Name}: {choiceRelic.Tooltip}";
52+
}
53+
54+
private void OnSelect()
55+
{
56+
if (_selection == null)
57+
return;
58+
GD.Print("Relic selected: " + _selection.Name);
59+
_player.AddRelic(_selection);
60+
GetTree().Paused = false;
61+
QueueFree();
62+
}
63+
64+
private void OnSkip()
65+
{
66+
GD.Print("Relic skipped.");
3867
GetTree().Paused = false;
3968
QueueFree();
4069
}

0 commit comments

Comments
 (0)