Browse Source

Adding a simple options menu

pull/1/head
Ryan Reed 1 month ago
parent
commit
c653407822
9 changed files with 123 additions and 1 deletions
  1. +4
    -0
      autoloads/global.gd
  2. +1
    -0
      autoloads/global.gd.uid
  3. +1
    -0
      project.godot
  4. +2
    -0
      scenes/blocks/block.gd
  5. +60
    -0
      scenes/ui/options_menu.tscn
  6. +38
    -0
      scenes/ui/ui.gd
  7. +1
    -0
      scenes/ui/ui.gd.uid
  8. +14
    -1
      scenes/ui/ui.tscn
  9. +2
    -0
      scenes/ui/waila.gd

+ 4
- 0
autoloads/global.gd View File

@ -0,0 +1,4 @@
extends Node
var enable_waila: bool = true ## Enable `What Am I Looking At` UI
var enable_block_highlight: bool = true

+ 1
- 0
autoloads/global.gd.uid View File

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

+ 1
- 0
project.godot View File

@ -17,6 +17,7 @@ config/icon="res://icon.svg"
[autoload]
Global="*res://autoloads/global.gd"
EntityManager="*res://autoloads/entity_manager.gd"
[debug]


+ 2
- 0
scenes/blocks/block.gd View File

@ -27,6 +27,8 @@ func get_id() -> String:
return id
func hook() -> void:
if not Global.enable_block_highlight: return
highlight_mesh.visible = true
# TODO: Rename to something else (maybe remove())


+ 60
- 0
scenes/ui/options_menu.tscn View File

@ -0,0 +1,60 @@
[gd_scene format=3 uid="uid://w6wtjosjn1qu"]
[node name="OptionsMenu" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="PanelContainer" type="PanelContainer" parent="."]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="PanelContainer"]
layout_mode = 2
theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 20
[node name="VBoxContainer" type="VBoxContainer" parent="PanelContainer/MarginContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
theme_type_variation = &"HeaderMedium"
text = "Options Menu"
horizontal_alignment = 1
[node name="Waila" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="PanelContainer/MarginContainer/VBoxContainer/Waila"]
layout_mode = 2
button_pressed = true
text = "Enable Waila"
[node name="BlockHighlights" type="HBoxContainer" parent="PanelContainer/MarginContainer/VBoxContainer"]
layout_mode = 2
[node name="CheckButton" type="CheckButton" parent="PanelContainer/MarginContainer/VBoxContainer/BlockHighlights"]
layout_mode = 2
button_pressed = true
text = "Enable Block Highlighting"
[node name="CenterContainer" type="CenterContainer" parent="PanelContainer/MarginContainer"]
layout_mode = 2
size_flags_vertical = 8
[node name="HBoxContainer" type="HBoxContainer" parent="PanelContainer/MarginContainer/CenterContainer"]
layout_mode = 2
[node name="CloseButton" type="Button" parent="PanelContainer/MarginContainer/CenterContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "Close Menu"
[node name="ExitButton" type="Button" parent="PanelContainer/MarginContainer/CenterContainer/HBoxContainer"]
layout_mode = 2
theme_override_font_sizes/font_size = 20
text = "Exit Game"

+ 38
- 0
scenes/ui/ui.gd View File

@ -0,0 +1,38 @@
class_name UI
extends CanvasLayer
@onready var crosshair: CenterContainer = $Crosshair
@onready var options_menu: MarginContainer = $OptionsMenu
@onready var waila: Waila = $Waila
func _process(_delta: float) -> void:
if Input.is_action_just_pressed("ui_cancel"):
toggle_options_menu()
func toggle_options_menu() -> void:
crosshair.visible = !options_menu.visible
options_menu.visible = !options_menu.visible
if options_menu.visible:
waila.visible = false
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
else:
Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
# Options
func _on_block_highlights_toggled(toggled_on: bool) -> void:
Global.enable_block_highlight = toggled_on
func _on_waila_toggled(toggled_on: bool) -> void:
Global.enable_waila = toggled_on
# Signals
func _on_close_button_pressed() -> void:
toggle_options_menu()
func _on_exit_button_pressed() -> void:
get_tree().quit()

+ 1
- 0
scenes/ui/ui.gd.uid View File

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

+ 14
- 1
scenes/ui/ui.tscn View File

@ -1,8 +1,11 @@
[gd_scene load_steps=2 format=3 uid="uid://c7fj7wla8bd70"]
[gd_scene load_steps=4 format=3 uid="uid://c7fj7wla8bd70"]
[ext_resource type="Script" uid="uid://bslimr2y4lnvq" path="res://scenes/ui/ui.gd" id="1_aac20"]
[ext_resource type="PackedScene" uid="uid://dvogu3djluqsn" path="res://scenes/ui/waila.tscn" id="1_u7n8c"]
[ext_resource type="PackedScene" uid="uid://w6wtjosjn1qu" path="res://scenes/ui/options_menu.tscn" id="2_f5cxw"]
[node name="UI" type="CanvasLayer"]
script = ExtResource("1_aac20")
[node name="Crosshair" type="CenterContainer" parent="."]
anchors_preset = 15
@ -22,3 +25,13 @@ layout_mode = 2
mouse_filter = 2
[node name="Waila" parent="." instance=ExtResource("1_u7n8c")]
[node name="OptionsMenu" parent="." instance=ExtResource("2_f5cxw")]
visible = false
[connection signal="toggled" from="OptionsMenu/PanelContainer/MarginContainer/VBoxContainer/Waila/CheckButton" to="." method="_on_waila_toggled"]
[connection signal="toggled" from="OptionsMenu/PanelContainer/MarginContainer/VBoxContainer/BlockHighlights/CheckButton" to="." method="_on_block_highlights_toggled"]
[connection signal="pressed" from="OptionsMenu/PanelContainer/MarginContainer/CenterContainer/HBoxContainer/CloseButton" to="." method="_on_close_button_pressed"]
[connection signal="pressed" from="OptionsMenu/PanelContainer/MarginContainer/CenterContainer/HBoxContainer/ExitButton" to="." method="_on_exit_button_pressed"]
[editable path="OptionsMenu"]

+ 2
- 0
scenes/ui/waila.gd View File

@ -28,6 +28,8 @@ func get_target() -> Block:
return _target
func hook_target(id: String) -> void:
if not Global.enable_waila: return
var item: ItemResource = DBItems.ref.data[id]
name_label.text = item.name + " (" + id + ")"
description_label.text = item.description


Loading…
Cancel
Save