diff --git a/graphics/hud/hslider_grabber.png b/graphics/hud/hslider_grabber.png index 2553c0f..feefd58 100644 Binary files a/graphics/hud/hslider_grabber.png and b/graphics/hud/hslider_grabber.png differ diff --git a/graphics/hud/hslider_grabber_focused.png b/graphics/hud/hslider_grabber_focused.png new file mode 100644 index 0000000..b0f5270 Binary files /dev/null and b/graphics/hud/hslider_grabber_focused.png differ diff --git a/graphics/hud/hslider_grabber_focused.png.import b/graphics/hud/hslider_grabber_focused.png.import new file mode 100644 index 0000000..0f7fb70 --- /dev/null +++ b/graphics/hud/hslider_grabber_focused.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/hslider_grabber_focused.png-48312a8e36afc2eacf49d5c4ba2472b9.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/hslider_grabber_focused.png" +dest_files=[ "res://.import/hslider_grabber_focused.png-48312a8e36afc2eacf49d5c4ba2472b9.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/hud/hslider_slider.png b/graphics/hud/hslider_slider.png index 0aa1d39..d7a4adc 100644 Binary files a/graphics/hud/hslider_slider.png and b/graphics/hud/hslider_slider.png differ diff --git a/objects/hud/options_screen.gd b/objects/hud/options_screen.gd new file mode 100644 index 0000000..b985db3 --- /dev/null +++ b/objects/hud/options_screen.gd @@ -0,0 +1,27 @@ +extends Control + +export (StyleBox) var tab_selected_style + +onready var tabs = $Tabs + +func focus(): + visible = true + grab_focus() + +func _gui_input(event): + if event.is_action_pressed("ui_left"): + tabs.current_tab = posmod(tabs.current_tab - 1, tabs.get_child_count()) + elif event.is_action_pressed("ui_right"): + tabs.current_tab = posmod(tabs.current_tab + 1, tabs.get_child_count()) + elif event.is_action_pressed("ui_down"): + var current_tab = tabs.get_current_tab_control() + current_tab.get_node(current_tab.focus_neighbour_bottom).grab_focus() + accept_event() + + +func _on_tabs_focus_entered(): + tabs.set("custom_styles/tab_fg", tab_selected_style) + + +func _on_tabs_focus_exited(): + tabs.set("custom_styles/tab_fg", null) diff --git a/objects/hud/options_screen.tscn b/objects/hud/options_screen.tscn index 5b69260..e2f874f 100644 --- a/objects/hud/options_screen.tscn +++ b/objects/hud/options_screen.tscn @@ -1,11 +1,23 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=11 format=2] -[ext_resource path="res://tilesets/t_gui.tres" type="TileSet" id=1] +[ext_resource path="res://objects/hud/options_screen.gd" type="Script" id=1] [ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://ui/border.png" type="Texture" id=3] +[ext_resource path="res://objects/hud/selection_group.gd" type="Script" id=4] + +[sub_resource type="StyleBoxFlat" id=6] +content_margin_left = 4.0 +content_margin_right = 4.0 +content_margin_bottom = 0.0 +bg_color = Color( 0.6, 0.6, 0.6, 0 ) +border_width_bottom = 1 +border_color = Color( 1, 1, 1, 1 ) +expand_margin_bottom = 5.0 +anti_aliasing = false [sub_resource type="ButtonGroup" id=1] -[sub_resource type="ButtonGroup" id=2] +[sub_resource type="ButtonGroup" id=7] [sub_resource type="ButtonGroup" id=3] @@ -13,15 +25,23 @@ [sub_resource type="ButtonGroup" id=5] -[node name="OptionsScreen" type="CanvasLayer"] -layer = 101 +[node name="OptionsScreen" type="Control"] +focus_mode = 2 +theme = ExtResource( 2 ) +script = ExtResource( 1 ) +tab_selected_style = SubResource( 6 ) -[node name="TileMap" type="TileMap" parent="."] -position = Vector2( 0, 4 ) -tile_set = ExtResource( 1 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 65537, 0, 0, 65538, 0, 1, 65539, 0, 1, 65540, 0, 1, 65541, 0, 1, 65542, 0, 1, 65543, 0, 1, 65544, 0, 1, 65545, 0, 1, 65546, 0, 1, 65547, 0, 1, 65548, 0, 1, 65549, 0, 1, 65550, 0, 1, 65551, 0, 1, 65552, 0, 1, 65553, 0, 1, 65554, 0, 1, 65555, 0, 1, 65556, 0, 1, 65557, 0, 1, 65558, 0, 1, 65559, 0, 1, 65560, 0, 1, 65561, 0, 1, 65562, 0, 1, 65563, 0, 1, 65564, 0, 1, 65565, 0, 1, 65566, 536870912, 0, 131073, 0, 2, 131102, 536870912, 2, 196609, 0, 2, 196638, 536870912, 2, 262145, 0, 2, 262174, 536870912, 2, 327681, 0, 2, 327710, 536870912, 2, 393217, 0, 2, 393246, 536870912, 2, 458753, 0, 2, 458782, 536870912, 2, 524289, 0, 2, 524318, 536870912, 2, 589825, 0, 2, 589854, 536870912, 2, 655361, 0, 2, 655390, 536870912, 2, 720897, 0, 2, 720926, 536870912, 2, 786433, 0, 2, 786462, 536870912, 2, 851969, 0, 2, 851998, 536870912, 2, 917505, 0, 2, 917534, 536870912, 2, 983041, 0, 2, 983070, 536870912, 2, 1048577, 0, 2, 1048606, 536870912, 2, 1114113, 0, 2, 1114142, 536870912, 2, 1179649, 0, 2, 1179678, 536870912, 2, 1245185, 0, 2, 1245214, 536870912, 2, 1310721, 0, 2, 1310750, 536870912, 2, 1376257, 1073741824, 0, 1376258, 1073741824, 1, 1376259, 1073741824, 1, 1376260, 1073741824, 1, 1376261, 1073741824, 1, 1376262, 1073741824, 1, 1376263, 1073741824, 1, 1376264, 1073741824, 1, 1376265, 1073741824, 1, 1376266, 1073741824, 1, 1376267, 1073741824, 1, 1376268, 1073741824, 1, 1376269, 1073741824, 1, 1376270, 1073741824, 1, 1376271, 1073741824, 1, 1376272, 1073741824, 1, 1376273, 1073741824, 1, 1376274, 1073741824, 1, 1376275, 1073741824, 1, 1376276, 1073741824, 1, 1376277, 1073741824, 1, 1376278, 1073741824, 1, 1376279, 1073741824, 1, 1376280, 1073741824, 1, 1376281, 1073741824, 1, 1376282, 1073741824, 1, 1376283, 1073741824, 1, 1376284, 1073741824, 1, 1376285, 1073741824, 1, 1376286, 1610612736, 0 ) +[node name="Border" type="NinePatchRect" parent="."] +show_behind_parent = true +margin_left = 8.0 +margin_top = 17.0 +margin_right = 248.0 +margin_bottom = 175.0 +texture = ExtResource( 3 ) +patch_margin_left = 3 +patch_margin_top = 3 +patch_margin_right = 3 +patch_margin_bottom = 3 [node name="ColorRect" type="ColorRect" parent="."] margin_left = 11.0 @@ -39,137 +59,160 @@ theme = ExtResource( 2 ) text = "-OPTIONS-" align = 1 -[node name="TabContainer" type="TabContainer" parent="."] +[node name="Tabs" type="TabContainer" parent="."] margin_left = 16.0 margin_top = 40.0 margin_right = 240.0 margin_bottom = 152.0 theme = ExtResource( 2 ) -[node name="Game" type="VBoxContainer" parent="TabContainer"] -visible = false +[node name="Game" type="VBoxContainer" parent="Tabs"] anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 7.0 +focus_neighbour_bottom = NodePath("Rumble") custom_constants/separation = 0 -[node name="Spacer" type="Control" parent="TabContainer/Game"] +[node name="Spacer" type="Control" parent="Tabs/Game"] margin_right = 224.0 margin_bottom = 8.0 rect_min_size = Vector2( 0, 8 ) -[node name="Rumble" type="HBoxContainer" parent="TabContainer/Game"] +[node name="Rumble" type="HBoxContainer" parent="Tabs/Game"] margin_top = 8.0 margin_right = 224.0 margin_bottom = 28.0 rect_min_size = Vector2( 0, 20 ) +focus_neighbour_top = NodePath("../../..") +script = ExtResource( 4 ) +group = SubResource( 1 ) -[node name="Label" type="Label" parent="TabContainer/Game/Rumble"] -margin_right = 71.0 +[node name="Label" type="Label" parent="Tabs/Game/Rumble"] +margin_right = 53.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Rumble: " -[node name="None" type="Button" parent="TabContainer/Game/Rumble"] -margin_left = 75.0 -margin_right = 103.0 +[node name="None" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 69.0 +margin_right = 97.0 margin_bottom = 7.0 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true +pressed = true action_mode = 0 group = SubResource( 1 ) text = "None" -[node name="Normal" type="Button" parent="TabContainer/Game/Rumble"] -margin_left = 107.0 -margin_right = 149.0 +[node name="Normal" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 119.0 +margin_right = 161.0 margin_bottom = 7.0 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 1 ) text = "Normal" -[node name="BPM" type="Button" parent="TabContainer/Game/Rumble"] -margin_left = 153.0 -margin_right = 224.0 +[node name="BPM" type="Button" parent="Tabs/Game/Rumble"] +margin_left = 187.0 +margin_right = 208.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 +custom_colors/font_color_focus = Color( 1, 0, 0, 1 ) toggle_mode = true -pressed = true action_mode = 0 group = SubResource( 1 ) text = "BPM" align = 0 -[node name="Video" type="VBoxContainer" parent="TabContainer"] +[node name="Video" type="VBoxContainer" parent="Tabs"] visible = false anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 7.0 +focus_neighbour_bottom = NodePath("Fullscreen") custom_constants/separation = 0 -[node name="Spacer" type="Control" parent="TabContainer/Video"] +[node name="Spacer" type="Control" parent="Tabs/Video"] margin_right = 224.0 margin_bottom = 8.0 rect_min_size = Vector2( 0, 8 ) -[node name="Fullscreen" type="HBoxContainer" parent="TabContainer/Video"] +[node name="Fullscreen" type="HBoxContainer" parent="Tabs/Video"] margin_top = 8.0 margin_right = 224.0 margin_bottom = 28.0 rect_min_size = Vector2( 0, 20 ) +focus_neighbour_top = NodePath("../../..") +focus_neighbour_bottom = NodePath("../WindowSize") +script = ExtResource( 4 ) +group = SubResource( 7 ) -[node name="Label" type="Label" parent="TabContainer/Video/Fullscreen"] +[node name="Label" type="Label" parent="Tabs/Video/Fullscreen"] margin_right = 140.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Start in fullscreen:" -[node name="Off" type="Button" parent="TabContainer/Video/Fullscreen"] -margin_left = 144.0 -margin_right = 206.0 +[node name="Off" type="Button" parent="Tabs/Video/Fullscreen"] +margin_left = 152.0 +margin_right = 173.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_left = NodePath(".") +focus_neighbour_right = NodePath("../On") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 -group = SubResource( 2 ) +group = SubResource( 7 ) text = "Off" -[node name="On" type="Button" parent="TabContainer/Video/Fullscreen"] -margin_left = 210.0 -margin_right = 224.0 +[node name="On" type="Button" parent="Tabs/Video/Fullscreen"] +margin_left = 198.0 +margin_right = 212.0 margin_bottom = 7.0 +focus_neighbour_left = NodePath("../Off") +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true pressed = true action_mode = 0 -group = SubResource( 2 ) +group = SubResource( 7 ) text = "on" -[node name="WindowSize" type="HBoxContainer" parent="TabContainer/Video"] +[node name="WindowSize" type="HBoxContainer" parent="Tabs/Video"] margin_top = 28.0 margin_right = 224.0 margin_bottom = 48.0 rect_min_size = Vector2( 0, 20 ) +focus_neighbour_top = NodePath("../Fullscreen") +focus_neighbour_bottom = NodePath("../ScalingMode") +script = ExtResource( 4 ) +group = SubResource( 3 ) -[node name="Label" type="Label" parent="TabContainer/Video/WindowSize"] +[node name="Label" type="Label" parent="Tabs/Video/WindowSize"] margin_right = 84.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Window Size:" -[node name="1x" type="Button" parent="TabContainer/Video/WindowSize"] -margin_left = 88.0 -margin_right = 112.0 +[node name="1x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 93.0 +margin_right = 107.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true pressed = true @@ -177,68 +220,75 @@ action_mode = 0 group = SubResource( 3 ) text = "1x" -[node name="2x" type="Button" parent="TabContainer/Video/WindowSize"] -margin_left = 116.0 -margin_right = 140.0 +[node name="2x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 121.0 +margin_right = 135.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 3 ) text = "2x" -[node name="3x" type="Button" parent="TabContainer/Video/WindowSize"] -margin_left = 144.0 -margin_right = 168.0 +[node name="3x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 149.0 +margin_right = 163.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 3 ) text = "3x" -[node name="4x" type="Button" parent="TabContainer/Video/WindowSize"] -margin_left = 172.0 -margin_right = 196.0 +[node name="4x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 177.0 +margin_right = 191.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_left = NodePath("../3x") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 3 ) text = "4x" -[node name="5x" type="Button" parent="TabContainer/Video/WindowSize"] -margin_left = 200.0 -margin_right = 224.0 +[node name="5x" type="Button" parent="Tabs/Video/WindowSize"] +margin_left = 205.0 +margin_right = 219.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 3 ) text = "5x" -[node name="ScalingMode" type="HBoxContainer" parent="TabContainer/Video"] +[node name="ScalingMode" type="HBoxContainer" parent="Tabs/Video"] margin_top = 48.0 margin_right = 224.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) +focus_neighbour_top = NodePath("../WindowSize") +focus_neighbour_bottom = NodePath("../TransitionSpeed") +script = ExtResource( 4 ) +group = SubResource( 4 ) -[node name="Label" type="Label" parent="TabContainer/Video/ScalingMode"] +[node name="Label" type="Label" parent="Tabs/Video/ScalingMode"] margin_right = 56.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Scaling:" -[node name="Integer" type="Button" parent="TabContainer/Video/ScalingMode"] -margin_left = 60.0 -margin_right = 113.0 +[node name="Integer" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 61.0 +margin_right = 110.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true pressed = true @@ -246,21 +296,23 @@ action_mode = 0 group = SubResource( 4 ) text = "integer" -[node name="Aspect" type="Button" parent="TabContainer/Video/ScalingMode"] -margin_left = 117.0 -margin_right = 171.0 +[node name="Aspect" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 121.0 +margin_right = 163.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 4 ) text = "aspect" -[node name="Stretch" type="Button" parent="TabContainer/Video/ScalingMode"] -margin_left = 175.0 -margin_right = 224.0 +[node name="Stretch" type="Button" parent="Tabs/Video/ScalingMode"] +margin_left = 173.0 +margin_right = 222.0 margin_bottom = 7.0 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 @@ -268,46 +320,50 @@ group = SubResource( 4 ) text = "stretch" align = 0 -[node name="TransitionSpeed" type="HBoxContainer" parent="TabContainer/Video"] +[node name="TransitionSpeed" type="HBoxContainer" parent="Tabs/Video"] margin_top = 68.0 margin_right = 224.0 margin_bottom = 88.0 rect_min_size = Vector2( 0, 20 ) +focus_neighbour_top = NodePath("../ScalingMode") +script = ExtResource( 4 ) +group = SubResource( 5 ) -[node name="Label" type="Label" parent="TabContainer/Video/TransitionSpeed"] +[node name="Label" type="Label" parent="Tabs/Video/TransitionSpeed"] margin_right = 77.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Fade speed:" -[node name="None" type="Button" parent="TabContainer/Video/TransitionSpeed"] +[node name="None" type="Button" parent="Tabs/Video/TransitionSpeed"] margin_left = 81.0 -margin_right = 110.0 +margin_right = 109.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_left = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 5 ) text = "None" -[node name="Slow" type="Button" parent="TabContainer/Video/TransitionSpeed"] -margin_left = 114.0 -margin_right = 144.0 +[node name="Slow" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 115.0 +margin_right = 143.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 5 ) text = "slow" -[node name="Medium" type="Button" parent="TabContainer/Video/TransitionSpeed"] +[node name="Medium" type="Button" parent="Tabs/Video/TransitionSpeed"] margin_left = 148.0 margin_right = 190.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true pressed = true @@ -315,53 +371,58 @@ action_mode = 0 group = SubResource( 5 ) text = "Medium" -[node name="Fast" type="Button" parent="TabContainer/Video/TransitionSpeed"] -margin_left = 194.0 -margin_right = 224.0 +[node name="Fast" type="Button" parent="Tabs/Video/TransitionSpeed"] +margin_left = 195.0 +margin_right = 223.0 margin_bottom = 7.0 -size_flags_horizontal = 3 +focus_neighbour_right = NodePath(".") +size_flags_horizontal = 6 size_flags_vertical = 0 toggle_mode = true action_mode = 0 group = SubResource( 5 ) text = "Fast" -[node name="Audio" type="VBoxContainer" parent="TabContainer"] +[node name="Audio" type="VBoxContainer" parent="Tabs"] +visible = false anchor_right = 1.0 anchor_bottom = 1.0 margin_top = 7.0 +focus_neighbour_bottom = NodePath("MasterVolume/MasterSlider") custom_constants/separation = 0 -[node name="Spacer" type="Control" parent="TabContainer/Audio"] +[node name="Spacer" type="Control" parent="Tabs/Audio"] margin_right = 224.0 margin_bottom = 8.0 rect_min_size = Vector2( 0, 8 ) -[node name="MasterVolume" type="HBoxContainer" parent="TabContainer/Audio"] +[node name="MasterVolume" type="HBoxContainer" parent="Tabs/Audio"] margin_top = 8.0 margin_right = 224.0 margin_bottom = 28.0 rect_min_size = Vector2( 0, 20 ) -[node name="Label" type="Label" parent="TabContainer/Audio/MasterVolume"] +[node name="Label" type="Label" parent="Tabs/Audio/MasterVolume"] margin_right = 95.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "Master vol.:" -[node name="HSlider" type="HSlider" parent="TabContainer/Audio/MasterVolume"] +[node name="MasterSlider" type="HSlider" parent="Tabs/Audio/MasterVolume"] margin_left = 99.0 margin_right = 199.0 margin_bottom = 10.0 rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../../..") +focus_neighbour_bottom = NodePath("../../MusicVolume/MusicSlider") size_flags_horizontal = 3 value = 100.0 __meta__ = { "_edit_group_": true } -[node name="Volume" type="Label" parent="TabContainer/Audio/MasterVolume"] +[node name="Volume" type="Label" parent="Tabs/Audio/MasterVolume"] margin_left = 203.0 margin_right = 224.0 margin_bottom = 20.0 @@ -369,31 +430,33 @@ size_flags_horizontal = 9 size_flags_vertical = 1 text = "100" -[node name="MusicVolume" type="HBoxContainer" parent="TabContainer/Audio"] +[node name="MusicVolume" type="HBoxContainer" parent="Tabs/Audio"] margin_top = 28.0 margin_right = 224.0 margin_bottom = 48.0 rect_min_size = Vector2( 0, 20 ) -[node name="Label" type="Label" parent="TabContainer/Audio/MusicVolume"] +[node name="Label" type="Label" parent="Tabs/Audio/MusicVolume"] margin_right = 95.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "music vol.:" -[node name="HSlider" type="HSlider" parent="TabContainer/Audio/MusicVolume"] +[node name="MusicSlider" type="HSlider" parent="Tabs/Audio/MusicVolume"] margin_left = 99.0 margin_right = 199.0 margin_bottom = 10.0 rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../MasterVolume/MasterSlider") +focus_neighbour_bottom = NodePath("../../SoundVolume/SoundSlider") size_flags_horizontal = 3 value = 100.0 __meta__ = { "_edit_group_": true } -[node name="Volume" type="Label" parent="TabContainer/Audio/MusicVolume"] +[node name="Volume" type="Label" parent="Tabs/Audio/MusicVolume"] margin_left = 203.0 margin_right = 224.0 margin_bottom = 20.0 @@ -401,31 +464,32 @@ size_flags_horizontal = 9 size_flags_vertical = 1 text = "100" -[node name="SoundVolume" type="HBoxContainer" parent="TabContainer/Audio"] +[node name="SoundVolume" type="HBoxContainer" parent="Tabs/Audio"] margin_top = 48.0 margin_right = 224.0 margin_bottom = 68.0 rect_min_size = Vector2( 0, 20 ) -[node name="Label" type="Label" parent="TabContainer/Audio/SoundVolume"] +[node name="Label" type="Label" parent="Tabs/Audio/SoundVolume"] margin_right = 95.0 margin_bottom = 20.0 size_flags_horizontal = 3 size_flags_vertical = 1 text = "SOund vol.:" -[node name="HSlider" type="HSlider" parent="TabContainer/Audio/SoundVolume"] +[node name="SoundSlider" type="HSlider" parent="Tabs/Audio/SoundVolume"] margin_left = 99.0 margin_right = 199.0 margin_bottom = 10.0 rect_min_size = Vector2( 100, 0 ) +focus_neighbour_top = NodePath("../../MusicVolume/MusicSlider") size_flags_horizontal = 3 value = 100.0 __meta__ = { "_edit_group_": true } -[node name="Volume" type="Label" parent="TabContainer/Audio/SoundVolume"] +[node name="Volume" type="Label" parent="Tabs/Audio/SoundVolume"] margin_left = 203.0 margin_right = 224.0 margin_bottom = 20.0 @@ -444,3 +508,7 @@ theme = ExtResource( 2 ) margin_right = 224.0 margin_bottom = 7.0 text = "Z: back, X: apply, C: defaults" + +[connection signal="focus_entered" from="." to="." method="_on_tabs_focus_entered"] +[connection signal="focus_exited" from="." to="." method="_on_tabs_focus_exited"] +[connection signal="gui_input" from="OptionsTitle" to="." method="_on_Tabs_gui_input"] diff --git a/objects/hud/pause_screen.gd b/objects/hud/pause_screen.gd index 7e8e693..f2e6614 100644 --- a/objects/hud/pause_screen.gd +++ b/objects/hud/pause_screen.gd @@ -1,5 +1,7 @@ extends CanvasLayer +onready var options_screen = $OptionsScreen + # Called when the node enters the scene tree for the first time. func _ready(): get_tree().paused = true @@ -24,6 +26,10 @@ func _on_Restart_pressed(): queue_free() +func _on_Settings_pressed(): + options_screen.focus() + + func _on_ExitLevel_pressed(): get_tree().paused = false Game.change_map(load("res://maps/level_select.tscn")) diff --git a/objects/hud/pause_screen.tscn b/objects/hud/pause_screen.tscn index 816e65a..729388a 100644 --- a/objects/hud/pause_screen.tscn +++ b/objects/hud/pause_screen.tscn @@ -1,23 +1,28 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=8 format=2] -[ext_resource path="res://tilesets/t_gui.tres" type="TileSet" id=1] [ext_resource path="res://ui/theme.tres" type="Theme" id=2] [ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=3] [ext_resource path="res://objects/hud/pause_screen.gd" type="Script" id=4] [ext_resource path="res://ui/2ndpuberty_no_dropshadow.tres" type="Theme" id=5] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=6] +[ext_resource path="res://objects/hud/options_screen.tscn" type="PackedScene" id=7] +[ext_resource path="res://ui/border.png" type="Texture" id=8] [node name="PauseScreen" type="CanvasLayer"] pause_mode = 2 layer = 100 script = ExtResource( 4 ) -[node name="TileMap" type="TileMap" parent="."] -pause_mode = 2 -tile_set = ExtResource( 1 ) -cell_size = Vector2( 8, 8 ) -format = 1 -tile_data = PoolIntArray( 524296, 0, 0, 524297, 536870912, 1, 524298, 536870912, 1, 524299, 536870912, 1, 524300, 536870912, 1, 524301, 536870912, 1, 524302, 536870912, 1, 524303, 536870912, 1, 524304, 536870912, 1, 524305, 536870912, 1, 524306, 536870912, 1, 524307, 536870912, 1, 524308, 536870912, 1, 524309, 536870912, 1, 524310, 536870912, 1, 524311, 536870912, 0, 589832, 0, 2, 589847, 536870912, 2, 655368, 0, 2, 655383, 536870912, 2, 720904, 0, 2, 720919, 536870912, 2, 786440, 0, 2, 786455, 536870912, 2, 851976, 0, 2, 851991, 536870912, 2, 917512, 0, 2, 917527, 536870912, 2, 983048, 1073741824, 0, 983049, 1610612736, 1, 983050, 1610612736, 1, 983051, 1610612736, 1, 983052, 1610612736, 1, 983053, 1610612736, 1, 983054, 1610612736, 1, 983055, 1610612736, 1, 983056, 1610612736, 1, 983057, 1610612736, 1, 983058, 1610612736, 1, 983059, 1610612736, 1, 983060, 1610612736, 1, 983061, 1610612736, 1, 983062, 1610612736, 1, 983063, 1610612736, 0 ) +[node name="Border" type="NinePatchRect" parent="."] +margin_left = 64.0 +margin_top = 69.0 +margin_right = 192.0 +margin_bottom = 123.0 +texture = ExtResource( 8 ) +patch_margin_left = 3 +patch_margin_top = 3 +patch_margin_right = 3 +patch_margin_bottom = 3 [node name="ColorRect" type="ColorRect" parent="."] pause_mode = 2 @@ -43,7 +48,7 @@ pause_mode = 2 margin_left = 64.0 margin_top = 74.0 margin_right = 192.0 -margin_bottom = 122.0 +margin_bottom = 120.0 theme = ExtResource( 2 ) text = "RESUME RESTART @@ -89,6 +94,10 @@ margin_bottom = 41.0 focus_neighbour_top = NodePath("../Settings") texture_focused = ExtResource( 3 ) +[node name="OptionsScreen" parent="." instance=ExtResource( 7 )] +visible = false + [connection signal="pressed" from="Body/Resume" to="." method="_on_Resume_pressed"] [connection signal="pressed" from="Body/Restart" to="." method="_on_Restart_pressed"] +[connection signal="pressed" from="Body/Settings" to="." method="_on_Settings_pressed"] [connection signal="pressed" from="Body/ExitLevel" to="." method="_on_ExitLevel_pressed"] diff --git a/objects/hud/selection_group.gd b/objects/hud/selection_group.gd new file mode 100644 index 0000000..08cb3c6 --- /dev/null +++ b/objects/hud/selection_group.gd @@ -0,0 +1,15 @@ +extends HBoxContainer + +export (ButtonGroup) var group + +func _ready(): + focus_mode = FOCUS_ALL + for child in get_children(): + if child is BaseButton: + child.focus_neighbour_top = "../%s" % focus_neighbour_top + child.focus_neighbour_bottom = "../%s" % focus_neighbour_bottom + child.connect("focus_entered", child, "set_pressed", [true]) + connect("focus_entered", self, "_focused") + +func _focused(): + group.get_pressed_button().grab_focus() diff --git a/ui/border.png b/ui/border.png new file mode 100644 index 0000000..87d458a Binary files /dev/null and b/ui/border.png differ diff --git a/ui/border.png.import b/ui/border.png.import new file mode 100644 index 0000000..3a810b9 --- /dev/null +++ b/ui/border.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/border.png-1616a5cc9a11b0652c0316a2cd685d5e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ui/border.png" +dest_files=[ "res://.import/border.png-1616a5cc9a11b0652c0316a2cd685d5e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/ui/theme.tres b/ui/theme.tres index 059a340..03d019d 100644 --- a/ui/theme.tres +++ b/ui/theme.tres @@ -1,14 +1,24 @@ -[gd_resource type="Theme" load_steps=10 format=2] +[gd_resource type="Theme" load_steps=13 format=2] [ext_resource path="res://ui/2ndpuberty..fnt" type="BitmapFont" id=1] [ext_resource path="res://graphics/hud/hslider_slider.png" type="Texture" id=2] [ext_resource path="res://graphics/hud/hslider_grabber.png" type="Texture" id=3] +[ext_resource path="res://graphics/hud/hslider_grabber_focused.png" type="Texture" id=4] [sub_resource type="StyleBoxEmpty" id=3] +[sub_resource type="StyleBoxFlat" id=9] +content_margin_bottom = 0.0 +bg_color = Color( 0, 0, 0, 0 ) +border_width_bottom = 1 +border_color = Color( 1, 1, 1, 1 ) +expand_margin_bottom = 6.0 + +[sub_resource type="StyleBoxEmpty" id=8] + [sub_resource type="StyleBoxEmpty" id=4] -[sub_resource type="StyleBoxEmpty" id=5] +[sub_resource type="StyleBoxEmpty" id=10] [sub_resource type="StyleBoxTexture" id=6] texture = ExtResource( 2 ) @@ -24,14 +34,16 @@ content_margin_right = 4.0 default_font = ExtResource( 1 ) Button/colors/font_color = Color( 0.690196, 0.690196, 0.690196, 1 ) Button/styles/disabled = SubResource( 3 ) -Button/styles/focus = SubResource( 3 ) -Button/styles/hover = SubResource( 3 ) +Button/styles/focus = SubResource( 9 ) +Button/styles/hover = SubResource( 8 ) Button/styles/normal = SubResource( 3 ) Button/styles/pressed = SubResource( 3 ) HSlider/icons/grabber = ExtResource( 3 ) +HSlider/icons/grabber_highlight = ExtResource( 4 ) HSlider/styles/grabber_area = SubResource( 4 ) -HSlider/styles/grabber_area_highlight = SubResource( 5 ) +HSlider/styles/grabber_area_highlight = SubResource( 10 ) HSlider/styles/slider = SubResource( 6 ) +TabContainer/colors/font_color_fg = Color( 1, 1, 1, 1 ) TabContainer/styles/panel = SubResource( 1 ) TabContainer/styles/tab_bg = SubResource( 2 ) TabContainer/styles/tab_disabled = SubResource( 2 )