Tools are deactivated and tool HUD hidden when holding object

This commit is contained in:
Rob Kelly 2025-07-04 15:20:26 -06:00
parent 6b3ac1311e
commit 73afb696a2
6 changed files with 48 additions and 18 deletions

View File

@ -1,6 +1,9 @@
class_name HoldComponent extends Node3D class_name HoldComponent extends Node3D
## Component for managing physics object holding ## Component for managing physics object holding
signal held
signal dropped
## Held object position lerp acceleration. ## Held object position lerp acceleration.
@export var hold_accel := 20.0 @export var hold_accel := 20.0
@ -43,7 +46,7 @@ func attach(prop: RigidBody3D, hold_distance: float) -> void:
_original_collision_mask = prop.collision_mask _original_collision_mask = prop.collision_mask
prop.collision_mask = hold_collision_physics prop.collision_mask = hold_collision_physics
Player.instance.hud.hold_hud.prop_held() held.emit()
func drop() -> void: func drop() -> void:
@ -52,7 +55,7 @@ func drop() -> void:
_held_object.collision_mask = _original_collision_mask _held_object.collision_mask = _original_collision_mask
_held_object = null _held_object = null
Player.instance.hud.hold_hud.reset() dropped.emit()
func holding_object() -> bool: func holding_object() -> bool:

View File

@ -204,16 +204,18 @@ func _physics_process(delta: float) -> void:
elif Input.is_action_just_pressed("select_stickers"): elif Input.is_action_just_pressed("select_stickers"):
tool_mount.set_active(sticker_pack) tool_mount.set_active(sticker_pack)
var tool := get_tool()
firing = false
if tool:
# Tool use # Tool use
if Input.is_action_pressed("fire"): if Input.is_action_pressed("fire"):
get_tool().fire() tool.fire()
firing = true firing = true
else: else:
get_tool().idle() tool.idle()
firing = false
if Input.is_action_just_pressed("switch_mode"): if Input.is_action_just_pressed("switch_mode"):
get_tool().switch_mode() tool.switch_mode()
# Two sneaking modes -- hold and toggle # Two sneaking modes -- hold and toggle
if Game.settings.hold_to_sneak: if Game.settings.hold_to_sneak:

View File

@ -8,11 +8,27 @@ var _active: Tool
func _ready() -> void: func _ready() -> void:
set_active(initial_tool) set_active(initial_tool)
_deferred_init.call_deferred()
func _deferred_init() -> void:
Player.instance.hold_component.dropped.connect(show_tool)
Player.instance.hold_component.held.connect(hide_tool)
func hide_tool() -> void:
# TODO maybe animate?
visible = false
func show_tool() -> void:
# TODO maybe animate?
visible = true
## Returns the currently-active tool. ## Returns the currently-active tool.
func get_active() -> Tool: func get_active() -> Tool:
return _active return _active if visible else null
## Sets the given tool as active. ## Sets the given tool as active.

View File

@ -13,6 +13,15 @@ var _selected_this_frame := false
@onready var closed_hand: Label = %ClosedHand @onready var closed_hand: Label = %ClosedHand
func _ready() -> void:
_deferred_init.call_deferred()
func _deferred_init() -> void:
Player.instance.hold_component.dropped.connect(reset)
Player.instance.hold_component.held.connect(prop_held)
func prop_selected() -> void: func prop_selected() -> void:
state = State.SELECTED state = State.SELECTED
open_hand.visible = true open_hand.visible = true

View File

@ -427,10 +427,10 @@ anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_left = -23.5555 offset_left = -19.5065
offset_top = -20.5418 offset_top = -22.2032
offset_right = -23.5555 offset_right = -19.5065
offset_bottom = -20.5418 offset_bottom = -22.2032
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
script = ExtResource("4_ud8na") script = ExtResource("4_ud8na")

View File

@ -167,8 +167,8 @@
- [ ] wraparound desk - [ ] wraparound desk
- [ ] etc - [ ] etc
- [ ] Make sofa cushions separate physics objects - [ ] Make sofa cushions separate physics objects
- [ ] Object hold UX - [x] Object hold UX
- [x] holdable object HUD icon - [x] holdable object HUD icon
- [ ] highlight holdable objects? - [ ] highlight holdable objects?
- [ ] hide tool UI when holding - [x] hide tool UI when holding
- [ ] Keep bonus tracks, taco fiesta, maybe stickers in upgrade track. Everything else comes from the [[company store]], as well as upgrades. - [ ] Keep bonus tracks, taco fiesta, maybe stickers in upgrade track. Everything else comes from the [[company store]], as well as upgrades.