menu rework - add submenu for more options in overlay list

This commit is contained in:
Crispy 2021-06-05 00:00:12 +02:00
parent 6b18c51391
commit 670df66b38
7 changed files with 163 additions and 70 deletions

View file

@ -0,0 +1 @@
<svg height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg"><path d="m3.7578 2.3438-1.4141 1.4141 4.2422 4.2422-4.2422 4.2422 1.4141 1.4141 4.2422-4.2422 4.2422 4.2422 1.4141-1.4141-4.2422-4.2422 4.2422-4.2422-1.4141-1.4141-4.2422 4.2422z" fill="#e0e0e0"/></svg>

After

Width:  |  Height:  |  Size: 286 B

View file

@ -0,0 +1,34 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/close.svg-4ddfafaefba273b37f7839c4b0365913.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icons/close.svg"
dest_files=[ "res://.import/close.svg-4ddfafaefba273b37f7839c4b0365913.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=true
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
stream=false
size_limit=0
detect_3d=true
svg/scale=10.0

Binary file not shown.

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=10 format=2]
[gd_scene load_steps=12 format=2]
[ext_resource path="res://ui/overlay_list_item.gd" type="Script" id=1]
[ext_resource path="res://icons/remove.svg" type="Texture" id=2]
@ -9,84 +9,134 @@
[ext_resource path="res://icons/person.svg" type="Texture" id=7]
[ext_resource path="res://icons/visible.svg" type="Texture" id=8]
[ext_resource path="res://styles/menu.theme" type="Theme" id=9]
[ext_resource path="res://icons/list.svg" type="Texture" id=10]
[ext_resource path="res://icons/close.svg" type="Texture" id=11]
[node name="ListOverlayItem" type="PanelContainer"]
[node name="ListOverlayItem" type="MarginContainer"]
margin_top = 1727.0
margin_right = 2048.0
margin_bottom = 1920.0
rect_min_size = Vector2( 100, 128 )
theme = ExtResource( 9 )
custom_constants/margin_right = 8
custom_constants/margin_top = 8
custom_constants/margin_left = 8
custom_constants/margin_bottom = 8
script = ExtResource( 1 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="."]
margin_left = 8.0
margin_top = 16.0
margin_right = 2040.0
margin_bottom = 191.0
text = "Main Menu"
[node name="HBoxContainer" type="HBoxContainer" parent="."]
[node name="BasicOptions" type="PanelContainer" parent="."]
margin_left = 8.0
margin_top = 8.0
margin_right = 2040.0
margin_bottom = 215.0
[node name="Label" type="Label" parent="BasicOptions"]
margin_left = 8.0
margin_top = 16.0
margin_right = 2024.0
margin_bottom = 191.0
text = "Main Menu"
__meta__ = {
"_edit_use_anchors_": false
}
[node name="List" type="HBoxContainer" parent="BasicOptions"]
margin_left = 8.0
margin_top = 8.0
margin_right = 2024.0
margin_bottom = 199.0
alignment = 2
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Remove" type="Button" parent="HBoxContainer"]
margin_left = 952.0
margin_right = 1128.0
margin_bottom = 191.0
focus_mode = 0
icon = ExtResource( 2 )
[node name="Reset" type="Button" parent="HBoxContainer"]
margin_left = 1132.0
margin_right = 1308.0
margin_bottom = 191.0
focus_mode = 0
icon = ExtResource( 5 )
[node name="Target" type="OptionButton" parent="HBoxContainer"]
margin_left = 1312.0
margin_right = 1492.0
margin_bottom = 191.0
focus_mode = 0
text = "Left"
icon = ExtResource( 6 )
clip_text = true
items = [ "Head", ExtResource( 7 ), false, 0, null, "Left", ExtResource( 6 ), false, 1, null, "Right", ExtResource( 6 ), false, 2, null, "World", ExtResource( 3 ), false, 3, null ]
selected = 1
[node name="Size" type="Button" parent="HBoxContainer"]
margin_left = 1496.0
margin_right = 1672.0
margin_bottom = 191.0
focus_mode = 0
toggle_mode = true
icon = ExtResource( 4 )
[node name="Grab" type="Button" parent="HBoxContainer"]
margin_left = 1676.0
margin_right = 1852.0
[node name="Grab" type="Button" parent="BasicOptions/List"]
margin_left = 1480.0
margin_right = 1656.0
margin_bottom = 191.0
focus_mode = 0
toggle_mode = true
icon = ExtResource( 3 )
[node name="Visibility" type="Button" parent="HBoxContainer"]
margin_left = 1856.0
margin_right = 2032.0
[node name="Visibility" type="Button" parent="BasicOptions/List"]
margin_left = 1660.0
margin_right = 1836.0
margin_bottom = 191.0
focus_mode = 0
toggle_mode = true
pressed = true
icon = ExtResource( 8 )
[connection signal="pressed" from="HBoxContainer/Remove" to="." method="_on_Remove_pressed"]
[connection signal="pressed" from="HBoxContainer/Reset" to="." method="_on_Reset_pressed"]
[connection signal="item_selected" from="HBoxContainer/Target" to="." method="_on_Target_item_selected"]
[connection signal="toggled" from="HBoxContainer/Grab" to="." method="_on_Grab_toggled"]
[connection signal="toggled" from="HBoxContainer/Visibility" to="." method="_on_Visibility_toggled"]
[node name="Options" type="Button" parent="BasicOptions/List"]
margin_left = 1840.0
margin_right = 2016.0
margin_bottom = 191.0
icon = ExtResource( 10 )
[node name="MoreOptions" type="HSplitContainer" parent="."]
margin_left = 8.0
margin_top = 8.0
margin_right = 2040.0
margin_bottom = 215.0
[node name="Spacer" type="Control" parent="MoreOptions"]
margin_right = 1104.0
margin_bottom = 207.0
size_flags_horizontal = 3
[node name="Container" type="PanelContainer" parent="MoreOptions"]
margin_left = 1116.0
margin_right = 2032.0
margin_bottom = 207.0
[node name="List" type="HBoxContainer" parent="MoreOptions/Container"]
margin_left = 8.0
margin_top = 8.0
margin_right = 908.0
margin_bottom = 199.0
alignment = 2
[node name="Remove" type="Button" parent="MoreOptions/Container/List"]
margin_right = 176.0
margin_bottom = 191.0
icon = ExtResource( 2 )
[node name="Size" type="Button" parent="MoreOptions/Container/List"]
margin_left = 180.0
margin_right = 356.0
margin_bottom = 191.0
toggle_mode = true
icon = ExtResource( 4 )
[node name="Target" type="OptionButton" parent="MoreOptions/Container/List"]
margin_left = 360.0
margin_right = 540.0
margin_bottom = 191.0
text = "Left"
icon = ExtResource( 6 )
clip_text = true
items = [ "Head", ExtResource( 7 ), false, 0, null, "Left", ExtResource( 6 ), false, 1, null, "Right", ExtResource( 6 ), false, 2, null, "World", ExtResource( 3 ), false, 3, null ]
selected = 1
[node name="Reset" type="Button" parent="MoreOptions/Container/List"]
margin_left = 544.0
margin_right = 720.0
margin_bottom = 191.0
icon = ExtResource( 5 )
[node name="CloseOptions" type="Button" parent="MoreOptions/Container/List"]
margin_left = 724.0
margin_right = 900.0
margin_bottom = 191.0
icon = ExtResource( 11 )
[connection signal="toggled" from="BasicOptions/List/Grab" to="." method="_on_Grab_toggled"]
[connection signal="toggled" from="BasicOptions/List/Visibility" to="." method="_on_Visibility_toggled"]
[connection signal="pressed" from="BasicOptions/List/Options" to="." method="_on_Options_pressed"]
[connection signal="pressed" from="MoreOptions/Container/List/Remove" to="." method="_on_Remove_pressed"]
[connection signal="item_selected" from="MoreOptions/Container/List/Target" to="." method="_on_Target_item_selected"]
[connection signal="pressed" from="MoreOptions/Container/List/Reset" to="." method="_on_Reset_pressed"]
[connection signal="pressed" from="MoreOptions/Container/List/CloseOptions" to="." method="_on_CloseOptions_pressed"]

View file

@ -39,7 +39,7 @@ __meta__ = {
}
[node name="ListOverlayItem" parent="VSplitContainer/Control/Overlays" instance=ExtResource( 7 )]
margin_top = 1638.0
margin_top = 1717.0
margin_bottom = 1845.0
overlay_name = "MainOverlay"

View file

@ -14,7 +14,7 @@ func _ready() -> void:
func add_overlay(type):
OverlayManager.add_overlay(type, type + str(randi()%100))
OverlayManager.add_overlay(type, type + " " + str(randi()%1000))
visible = false

View file

@ -1,13 +1,14 @@
extends PanelContainer
extends Control
export var overlay_name: String
var overlay
func _ready() -> void:
overlay = OverlayManager.get_node(overlay_name)
$Label.text = overlay_name
$MoreOptions.visible = false
$BasicOptions/Label.text = overlay_name
name = overlay_name
$HBoxContainer/Target.selected = overlay.TARGETS.find(Settings.s.overlays[overlay_name].target)
$MoreOptions/Container/List/Target.selected = overlay.TARGETS.find(Settings.s.overlays[overlay_name].target)
overlay.connect("overlay_visibility_changed", self, "_overlay_visibility_changed")
@ -16,27 +17,34 @@ func _on_Visibility_toggled(state: bool) -> void:
overlay.overlay_visible = state
func _on_Target_item_selected(index: int) -> void:
overlay.target = overlay.TARGETS[index]
func _on_Reset_pressed() -> void:
overlay.reset_offset()
func _on_Grab_toggled(state: bool) -> void:
overlay.get_node("OverlayInteraction").grab_mode = state
func _overlay_visibility_changed(state: bool):
$HBoxContainer/Visibility.pressed = state
$BasicOptions/List/Visibility.pressed = state
if state:
$HBoxContainer/Visibility.icon = preload("res://icons/visible.svg")
$BasicOptions/List/Visibility.icon = preload("res://icons/visible.svg")
else:
$HBoxContainer/Visibility.icon = preload("res://icons/hidden.svg")
$BasicOptions/List/Visibility.icon = preload("res://icons/hidden.svg")
func _on_Remove_pressed() -> void:
if overlay.type and overlay.type != "main":
OverlayManager.remove_overlay(overlay_name)
func _on_Reset_pressed() -> void:
overlay.reset_offset()
func _on_Target_item_selected(index: int) -> void:
overlay.target = overlay.TARGETS[index]
func _on_Options_pressed() -> void:
$MoreOptions.visible = true
func _on_CloseOptions_pressed() -> void:
$MoreOptions.visible = false