Browse Source

Merge pull request 'Add Block Player is Holding' (#13) from block-holder into master

pull/14/head
Ryan Reed 1 month ago
parent
commit
90643eb425
17 changed files with 165 additions and 111 deletions
  1. +21
    -9
      autoloads/game_settings_manager.gd
  2. +2
    -0
      resources/game_settings/game_options_settings_resource.gd
  3. +7
    -25
      scenes/blocks/block.gd
  4. +8
    -12
      scenes/blocks/block.tscn
  5. +6
    -0
      scenes/blocks/block_mesh.gd
  6. +1
    -0
      scenes/blocks/block_mesh.gd.uid
  7. +15
    -0
      scenes/blocks/block_mesh.tscn
  8. +5
    -20
      scenes/blocks/dropped_block.gd
  9. +17
    -28
      scenes/blocks/dropped_block.tscn
  10. +24
    -0
      scenes/player/player.gd
  11. +5
    -1
      scenes/player/player.tscn
  12. +1
    -1
      scenes/root.gd
  13. +11
    -0
      scenes/ui/menus/settings_menu.gd
  14. +29
    -1
      scenes/ui/menus/settings_menu.tscn
  15. +2
    -2
      scenes/ui/quick_slots.gd
  16. +8
    -11
      scenes/ui/quick_slots.tscn
  17. +3
    -1
      scenes/ui/ui.gd

+ 21
- 9
autoloads/game_settings_manager.gd View File

@ -3,6 +3,8 @@ extends Node
#region Game Options Signals
signal game_options_block_highlight_changed(block_highlight_enabled: bool)
signal game_options_held_block_ui_changed(held_block_enabled: bool)
signal game_options_quickslots_ui_changed(quickslots_enabled: bool)
signal game_options_waila_changed(waila_enabled: bool)
#endregion
@ -14,8 +16,8 @@ signal graphics_vsync_changed(vsync_enabled: bool)
signal graphics_fov_changed(fov: int)
#endregion
signal load_settings
signal save_settings
signal load_game_settings
signal save_game_settings
## See documentation to where this path is: https://docs.godotengine.org/en/stable/tutorials/io/data_paths.html#accessing-persistent-user-data-user[br][br]
@ -32,6 +34,8 @@ var settings: GameSettingsResource = GameSettingsResource.new()
func _init() -> void:
game_options_block_highlight_changed.connect(_on_game_options_block_highlight_changed)
game_options_held_block_ui_changed.connect(_on_game_options_held_block_ui_changed)
game_options_quickslots_ui_changed.connect(_on_game_options_quickslots_ui_changed)
game_options_waila_changed.connect(_on_game_options_waila_changed)
graphics_fov_changed.connect(_on_graphics_fov_changed)
@ -40,18 +44,26 @@ func _init() -> void:
graphics_vsync_changed.connect(_on_graphics_vsync_changed)
apply_graphics_settings.connect(_on_apply_graphics_settings)
load_settings.connect(_on_load_settings)
save_settings.connect(_on_save_settings)
load_game_settings.connect(load_settings)
save_game_settings.connect(save_settings)
#region Game Option Settings
func _on_game_options_block_highlight_changed(highlight_enabled: bool) -> void:
settings.game_options.enable_block_highlight = highlight_enabled
_on_save_settings()
save_settings()
func _on_game_options_held_block_ui_changed(held_block_enabled: bool) -> void:
settings.game_options.enable_held_block = held_block_enabled
save_settings()
func _on_game_options_quickslots_ui_changed(quickslots_enabled: bool) -> void:
settings.game_options.enable_quickslots_ui = quickslots_enabled
save_settings()
func _on_game_options_waila_changed(waila_enabled: bool) -> void:
settings.game_options.enable_waila = waila_enabled
_on_save_settings()
save_settings()
#endregion
#region Graphics Settings
@ -68,7 +80,7 @@ func _on_apply_graphics_settings() -> void:
else:
DisplayServer.window_set_vsync_mode(DisplayServer.VSYNC_DISABLED)
_on_save_settings()
save_settings()
func _on_graphics_fov_changed(fov: int) -> void:
settings.graphics.fov = fov
@ -86,7 +98,7 @@ func _on_graphics_vsync_changed(vsync_enabled: bool) -> void:
#region Saving and Loading Settings
func _on_load_settings(apply_after_load: bool = true) -> void:
func load_settings(apply_after_load: bool = true) -> void:
if !FileAccess.file_exists(settings_file_path):
printerr("Failed to load game settings. File does not exist: ", settings_file_path)
return
@ -99,7 +111,7 @@ func _on_load_settings(apply_after_load: bool = true) -> void:
if apply_after_load:
apply_graphics_settings.emit()
func _on_save_settings() -> void:
func save_settings() -> void:
if !DirAccess.dir_exists_absolute(save_data_path):
DirAccess.make_dir_absolute(save_data_path)


+ 2
- 0
resources/game_settings/game_options_settings_resource.gd View File

@ -4,3 +4,5 @@ extends Resource
@export var enable_waila: bool = true ## Enable `What Am I Looking At` UI
@export var enable_block_highlight: bool = true
@export var enable_quickslots_ui: bool = true
@export var enable_held_block: bool = true

+ 7
- 25
scenes/blocks/block.gd View File

@ -2,21 +2,17 @@ class_name Block
extends StaticBody3D
@onready var collision_shape: CollisionShape3D = $CollisionShape3D
@onready var highlight_mesh: MeshInstance3D = $HighlightMesh
@onready var block_mesh: MeshInstance3D = $BlockMesh
@export var block_mesh: BlockMesh
@export var collision_shape: CollisionShape3D
@export var highlight_mesh: MeshInstance3D
var id: String
var resource: BlockResource
func _exit_tree() -> void:
if Waila.ref.get_target() == self:
Waila.ref.release_target()
func _ready() -> void:
_apply_material()
func get_id() -> String:
return id
@ -36,21 +32,7 @@ func release() -> void:
func set_id(block_id: String) -> void:
id = block_id
_load_resource_data()
_apply_material()
func _apply_material() -> void:
if block_mesh == null: return
if resource == null: return
block_mesh.set_surface_override_material(0, resource.material_texture)
func _load_resource_data() -> void:
if not id:
printerr("Could not load resource data. Block ID was empty.")
return
if not id in DBItems.data:
printerr("Could not load resource data. Unknown Block ID: ", id)
return
resource = DBItems.data[id]
if id in DBItems.data:
block_mesh.apply_material(DBItems.data[id].material_texture)
else:
printerr("Unknown Block ID: ", id)

+ 8
- 12
scenes/blocks/block.tscn View File

@ -1,8 +1,8 @@
[gd_scene load_steps=10 format=3 uid="uid://b8evbp40gnomt"]
[gd_scene load_steps=8 format=3 uid="uid://b8evbp40gnomt"]
[ext_resource type="Script" uid="uid://buvqmrrtmxs2h" path="res://scenes/blocks/block.gd" id="1_7fut1"]
[ext_resource type="Material" uid="uid://bgc6efqf8aiqo" path="res://assets/materials/block_highlight.tres" id="2_524ei"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="3_qi7hx"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="3_60een"]
[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://save_load/components/save_data_component.tscn" id="4_60een"]
[ext_resource type="Resource" uid="uid://dfos8np8agysk" path="res://save_load/resources/node_types/block_data_resource.tres" id="5_60een"]
@ -12,14 +12,11 @@
material = ExtResource("2_524ei")
size = Vector3(1.01, 1.01, 1.01)
[sub_resource type="BoxMesh" id="BoxMesh_e15ke"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4e127"]
albedo_texture = ExtResource("3_qi7hx")
texture_filter = 0
[node name="Block" type="StaticBody3D"]
[node name="Block" type="StaticBody3D" node_paths=PackedStringArray("block_mesh", "collision_shape", "highlight_mesh")]
script = ExtResource("1_7fut1")
block_mesh = NodePath("BlockMesh")
collision_shape = NodePath("CollisionShape3D")
highlight_mesh = NodePath("HighlightMesh")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."]
visible = false
@ -29,9 +26,8 @@ shape = SubResource("BoxShape3D_n5naa")
visible = false
mesh = SubResource("BoxMesh_7fut1")
[node name="BlockMesh" type="MeshInstance3D" parent="."]
mesh = SubResource("BoxMesh_e15ke")
surface_material_override/0 = SubResource("StandardMaterial3D_4e127")
[node name="BlockMesh" parent="." instance=ExtResource("3_60een")]
skeleton = NodePath("")
[node name="SaveDataComponent" parent="." instance=ExtResource("4_60een")]
save_data_resource = ExtResource("5_60een")

+ 6
- 0
scenes/blocks/block_mesh.gd View File

@ -0,0 +1,6 @@
class_name BlockMesh
extends MeshInstance3D
func apply_material(material_texture: StandardMaterial3D) -> void:
set_surface_override_material(0, material_texture)

+ 1
- 0
scenes/blocks/block_mesh.gd.uid View File

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

+ 15
- 0
scenes/blocks/block_mesh.tscn View File

@ -0,0 +1,15 @@
[gd_scene load_steps=5 format=3 uid="uid://c8dch55d3txns"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="1_idwey"]
[ext_resource type="Script" uid="uid://c2rjyhwln6bmh" path="res://scenes/blocks/block_mesh.gd" id="2_06oav"]
[sub_resource type="BoxMesh" id="BoxMesh_idwey"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bqoxu"]
albedo_texture = ExtResource("1_idwey")
texture_filter = 0
[node name="BlockMesh" type="MeshInstance3D"]
mesh = SubResource("BoxMesh_idwey")
surface_material_override/0 = SubResource("StandardMaterial3D_bqoxu")
script = ExtResource("2_06oav")

+ 5
- 20
scenes/blocks/dropped_block.gd View File

@ -6,11 +6,10 @@ extends RigidBody3D
## This is to ensure that the item isn't picked up immediately after throwing
@export var pickup_timeout: int = 1
@export var animation_player: AnimationPlayer
@export var block_mesh: MeshInstance3D
@export var block_mesh: BlockMesh
@export var pickup_area: Area3D
var id: String
var resource: BlockResource
var impulse: Vector3 = Vector3.ZERO
@ -41,24 +40,10 @@ func initialize(block_id: String, start_position: Vector3, drop_direction: Vecto
func set_id(block_id: String) -> void:
id = block_id
_load_resource_data()
_apply_material()
func _apply_material() -> void:
if block_mesh == null: return
if resource == null: return
block_mesh.set_surface_override_material(0, resource.material_texture)
func _load_resource_data() -> void:
if not id:
printerr("Could not load resource data. Block ID was empty.")
return
if not id in DBItems.data:
printerr("Could not load resource data. Unknown Block ID: ", id)
return
resource = DBItems.data[id]
if id in DBItems.data:
block_mesh.apply_material(DBItems.data[id].material_texture)
else:
printerr("Unknown Block ID: ", id)
func _on_pickup_area_body_entered(body: Node3D) -> void:


+ 17
- 28
scenes/blocks/dropped_block.tscn View File

@ -1,21 +1,21 @@
[gd_scene load_steps=10 format=3 uid="uid://dq6alec7d35gc"]
[gd_scene load_steps=8 format=3 uid="uid://dq6alec7d35gc"]
[ext_resource type="Script" uid="uid://d2uws50yjvp6w" path="res://scenes/blocks/dropped_block.gd" id="1_y8usf"]
[ext_resource type="Texture2D" uid="uid://dsvk3faenewrl" path="res://assets/textures/grass-block.png" id="4_jhjal"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="2_5kft2"]
[sub_resource type="Animation" id="Animation_kym7p"]
length = 0.001
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("BlockMesh:position")
tracks/0/path = NodePath("BlockMesh:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.2, 0)]
"values": [Vector3(1, 1, 1)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -27,19 +27,19 @@ tracks/1/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, 0, 0.261799)]
"values": [Vector3(0, 0, 0)]
}
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("BlockMesh:scale")
tracks/2/path = NodePath("BlockMesh:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0.25, 0.25, 0.25)]
"values": [Vector3(0, 0, 0)]
}
[sub_resource type="Animation" id="Animation_50ggx"]
@ -50,14 +50,14 @@ step = 0.1
tracks/0/type = "value"
tracks/0/imported = false
tracks/0/enabled = true
tracks/0/path = NodePath("BlockMesh:position")
tracks/0/path = NodePath("BlockMesh:scale")
tracks/0/interp = 1
tracks/0/loop_wrap = true
tracks/0/keys = {
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"update": 0,
"values": [Vector3(0, -0.2, 0), Vector3(0, -0.3, 0), Vector3(0, -0.2, 0), Vector3(0, -0.1, 0), Vector3(0, -0.2, 0)]
"values": [Vector3(0.25, 0.25, 0.25)]
}
tracks/1/type = "value"
tracks/1/imported = false
@ -74,14 +74,14 @@ tracks/1/keys = {
tracks/2/type = "value"
tracks/2/imported = false
tracks/2/enabled = true
tracks/2/path = NodePath("BlockMesh:scale")
tracks/2/path = NodePath("BlockMesh:position")
tracks/2/interp = 1
tracks/2/loop_wrap = true
tracks/2/keys = {
"times": PackedFloat32Array(0),
"transitions": PackedFloat32Array(1),
"times": PackedFloat32Array(0, 0.5, 1, 1.5, 2),
"transitions": PackedFloat32Array(1, 1, 1, 1, 1),
"update": 0,
"values": [Vector3(0.25, 0.25, 0.25)]
"values": [Vector3(0, -0.2, 0), Vector3(0, -0.3, 0), Vector3(0, -0.2, 0), Vector3(0, -0.1, 0), Vector3(0, -0.2, 0)]
}
[sub_resource type="AnimationLibrary" id="AnimationLibrary_kym7p"]
@ -92,14 +92,7 @@ _data = {
[sub_resource type="BoxShape3D" id="BoxShape3D_kkyxx"]
[sub_resource type="BoxMesh" id="BoxMesh_e15ke"]
[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4e127"]
albedo_texture = ExtResource("4_jhjal")
texture_filter = 0
[sub_resource type="SphereShape3D" id="SphereShape3D_5kft2"]
radius = 1.0
[node name="DroppedBlock" type="RigidBody3D" node_paths=PackedStringArray("animation_player", "block_mesh", "pickup_area")]
collision_layer = 4
@ -118,21 +111,17 @@ autoplay = "RESET"
visible = false
shape = SubResource("BoxShape3D_kkyxx")
[node name="BlockMesh" type="MeshInstance3D" parent="."]
transform = Transform3D(0.241481, -0.0647047, 0, 0.0647047, 0.241481, 0, 0, 0, 0.25, 0, -0.2, 0)
mesh = SubResource("BoxMesh_e15ke")
skeleton = NodePath("")
surface_material_override/0 = SubResource("StandardMaterial3D_4e127")
[node name="BlockMesh" parent="." instance=ExtResource("2_5kft2")]
[node name="PickupArea" type="Area3D" parent="."]
transform = Transform3D(0.965926, -0.258819, 0, 0.258819, 0.965926, 0, 0, 0, 1, 0, 0, 0)
visible = false
collision_layer = 4
collision_mask = 2
monitoring = false
monitorable = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="PickupArea"]
visible = false
shape = SubResource("SphereShape3D_5kft2")
[connection signal="body_entered" from="PickupArea" to="." method="_on_pickup_area_body_entered"]

+ 24
- 0
scenes/player/player.gd View File

@ -19,6 +19,7 @@ extends CharacterBody3D
@export var walk_speed: float = 5.0
@onready var camera: Camera3D = $Head/Camera3D
@onready var block_mesh: BlockMesh = $Head/Camera3D/BlockMesh
@onready var head: Node3D = $Head
@onready var collision_shape_standing: CollisionShape3D = $CollisionShapeStanding
@onready var collision_shape_crouching: CollisionShape3D = $CollisionShapeCrouching
@ -53,6 +54,12 @@ func _physics_process(delta: float) -> void:
func _ready() -> void:
GameSettingsManager.graphics_fov_changed.connect(_on_graphics_fov_changed)
GameSettingsManager.game_options_held_block_ui_changed.connect(_on_game_options_held_block_ui_changed)
InventoryManager.quick_slot_item_changed.connect(_on_quick_slot_item_changed)
SignalManager.resume_game.connect(_on_resume_game)
SignalManager.open_pause_menu.connect(_on_open_pause_menu)
_update_held_block_mesh(InventoryManager.quick_slot_item_id)
func _apply_gravity(delta: float) -> void:
@ -123,6 +130,23 @@ func _set_is_sprinting() -> void:
else:
is_sprinting = Input.is_action_pressed("run")
func _update_held_block_mesh(item_id: String) -> void:
block_mesh.visible = GameSettingsManager.settings.game_options.enable_held_block
if GameSettingsManager.settings.game_options.enable_held_block:
block_mesh.apply_material(DBItems.data[item_id].material_texture)
func _on_game_options_held_block_ui_changed(toggled: bool) -> void:
block_mesh.visible = toggled
func _on_graphics_fov_changed(fov: int) -> void:
camera.fov = fov
func _on_quick_slot_item_changed(item_id: String) -> void:
_update_held_block_mesh(item_id)
func _on_open_pause_menu() -> void:
block_mesh.visible = false
func _on_resume_game() -> void:
block_mesh.visible = GameSettingsManager.settings.game_options.enable_held_block

+ 5
- 1
scenes/player/player.tscn View File

@ -1,7 +1,8 @@
[gd_scene load_steps=7 format=3 uid="uid://beu1b4leqwgh3"]
[gd_scene load_steps=8 format=3 uid="uid://beu1b4leqwgh3"]
[ext_resource type="Script" uid="uid://daly0bs0oat3j" path="res://scenes/player/player.gd" id="1_7sql3"]
[ext_resource type="Script" uid="uid://bruuttf8j7wet" path="res://scenes/player/ray_cast_look.gd" id="2_dovo2"]
[ext_resource type="PackedScene" uid="uid://c8dch55d3txns" path="res://scenes/blocks/block_mesh.tscn" id="2_p47bc"]
[ext_resource type="PackedScene" uid="uid://baki8rbf1ti0r" path="res://save_load/components/save_data_component.tscn" id="3_lvxji"]
[ext_resource type="Resource" uid="uid://bvsurbn5xgchr" path="res://save_load/resources/node_types/player_data_resource.tres" id="4_p47bc"]
@ -33,6 +34,9 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.8, 0)
[node name="Camera3D" type="Camera3D" parent="Head"]
[node name="BlockMesh" parent="Head/Camera3D" instance=ExtResource("2_p47bc")]
transform = Transform3D(1, 0, 0, 0, 0.965926, -0.258819, 0, 0.258819, 0.965926, 0, -0.680035, -1.7196)
[node name="RayCastLook" type="RayCast3D" parent="Head"]
target_position = Vector3(0, 0, -10)
debug_shape_custom_color = Color(0.753415, 4.77457e-05, 0.578804, 1)


+ 1
- 1
scenes/root.gd View File

@ -2,4 +2,4 @@ extends Node
func _enter_tree() -> void:
GameSettingsManager.load_settings.emit()
GameSettingsManager.load_game_settings.emit()

+ 11
- 0
scenes/ui/menus/settings_menu.gd View File

@ -4,6 +4,8 @@ extends Panel
@export_group("Game Option Nodes")
@export var block_highlight_input: CheckButton
@export var held_block_ui_input: CheckButton
@export var quick_slots_ui_input: CheckButton
@export var waila_input: CheckButton
@export_group("Graphics Settings Nodes")
@ -18,9 +20,12 @@ func _ready() -> void:
apply_default_values()
## Sets the default values of all the inputs
func apply_default_values() -> void:
#region Game Options
block_highlight_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_block_highlight)
held_block_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_held_block)
quick_slots_ui_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_quickslots_ui)
waila_input.set_pressed_no_signal(GameSettingsManager.settings.game_options.enable_waila)
#endregion
@ -39,6 +44,12 @@ func apply_default_values() -> void:
func _on_block_highlighting_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_block_highlight_changed.emit(toggled_on)
func _on_held_block_ui_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_held_block_ui_changed.emit(toggled_on)
func _on_quickslots_ui_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_quickslots_ui_changed.emit(toggled_on)
func _on_enable_waila_toggled(toggled_on: bool) -> void:
GameSettingsManager.game_options_waila_changed.emit(toggled_on)
#endregion


+ 29
- 1
scenes/ui/menus/settings_menu.tscn View File

@ -14,7 +14,7 @@ corner_radius_top_right = 2
corner_radius_bottom_right = 2
corner_radius_bottom_left = 2
[node name="SettingsMenu" type="Panel" node_paths=PackedStringArray("block_highlight_input", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label")]
[node name="SettingsMenu" type="Panel" node_paths=PackedStringArray("block_highlight_input", "held_block_ui_input", "quick_slots_ui_input", "waila_input", "resolution_input", "fullscreen_input", "vsync_input", "fov_slider", "fov_value_label")]
process_mode = 3
anchors_preset = 15
anchor_right = 1.0
@ -23,6 +23,8 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_qwcqe")
block_highlight_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton")
held_block_ui_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton")
quick_slots_ui_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton")
waila_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton")
resolution_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Resolution/OptionButton")
fullscreen_input = NodePath("Background/MarginContainer/VBoxContainer/TabContainer/Graphics/Fullscreen/CheckBox")
@ -100,6 +102,30 @@ text = "Enable Waila"
layout_mode = 2
button_pressed = true
[node name="QuickslotsUI" type="HBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game"]
layout_mode = 2
[node name="Label" type="Label" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI"]
layout_mode = 2
size_flags_horizontal = 3
text = "Enable Quickslots UI"
[node name="CheckButton" type="CheckButton" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI"]
layout_mode = 2
button_pressed = true
[node name="HeldBlockUI" type="HBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game"]
layout_mode = 2
[node name="Label" type="Label" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI"]
layout_mode = 2
size_flags_horizontal = 3
text = "Enable Player Held Block"
[node name="CheckButton" type="CheckButton" parent="Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI"]
layout_mode = 2
button_pressed = true
[node name="Graphics" type="VBoxContainer" parent="Background/MarginContainer/VBoxContainer/TabContainer"]
visible = false
layout_mode = 2
@ -216,6 +242,8 @@ text = "Close Settings"
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/BlockHighlight/CheckButton" to="." method="_on_block_highlighting_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/Waila/CheckButton" to="." method="_on_enable_waila_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/QuickslotsUI/CheckButton" to="." method="_on_quickslots_ui_toggled"]
[connection signal="toggled" from="Background/MarginContainer/VBoxContainer/TabContainer/Game/HeldBlockUI/CheckButton" to="." method="_on_held_block_ui_toggled"]
[connection signal="value_changed" from="Background/MarginContainer/VBoxContainer/TabContainer/Graphics/FOV/HSlider" to="." method="_on_fov_slider_changed"]
[connection signal="pressed" from="Background/MarginContainer/VBoxContainer/TabContainer/Graphics/CenterContainer/ApplyButton" to="." method="_on_graphics_apply_button_pressed"]
[connection signal="pressed" from="Background/BottomRow/CloseButton" to="." method="_on_close_button_pressed"]

+ 2
- 2
scenes/ui/quick_slots.gd View File

@ -65,10 +65,10 @@ func select_quick_slot(slot_index: int) -> void:
InventoryManager.quick_slot_item_changed.emit(get_selected_item())
func select_previous_item() -> void:
select_quick_slot(_selected_item - 1)
select_quick_slot(_selected_item + 1)
func select_next_item() -> void:
select_quick_slot(_selected_item + 1)
select_quick_slot(_selected_item - 1)
func update_highlighted_slot() -> void:
var previous_slot: Panel = slots_container.get_child(_previous_selected_item)


+ 8
- 11
scenes/ui/quick_slots.tscn View File

@ -10,16 +10,14 @@
[ext_resource type="Texture2D" uid="uid://cpllegyqnfnrh" path="res://assets/textures/glass.png" id="8_bup65"]
[node name="QuickSlots" type="MarginContainer"]
anchors_preset = 7
anchor_left = 0.5
anchor_top = 1.0
anchor_right = 0.5
anchor_bottom = 1.0
offset_left = -20.0
offset_top = -40.0
offset_right = 20.0
grow_horizontal = 2
grow_vertical = 0
anchors_preset = 4
anchor_top = 0.5
anchor_bottom = 0.5
offset_top = -220.0
offset_right = 80.0
offset_bottom = 220.0
grow_vertical = 2
size_flags_horizontal = 0
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
@ -31,7 +29,6 @@ highlight_theme = ExtResource("2_ps55n")
layout_mode = 2
theme_override_constants/h_separation = 8
theme_override_constants/v_separation = 8
columns = 10
[node name="Slot0" type="Panel" parent="GridContainer"]
custom_minimum_size = Vector2(64, 64)


+ 3
- 1
scenes/ui/ui.gd View File

@ -17,6 +17,8 @@ func _ready() -> void:
SignalManager.open_settings_menu.connect(_on_open_settings_menu)
SignalManager.resume_game.connect(_on_resume_game)
_on_resume_game()
func hide_menus() -> void:
pause_menu.visible = false
@ -58,7 +60,7 @@ func _on_resume_game() -> void:
hide_menus()
crosshair.visible = true
quick_slots.visible = true
quick_slots.visible = true and GameSettingsManager.settings.game_options.enable_quickslots_ui
waila.visible = true
get_tree().paused = false

Loading…
Cancel
Save