All
This commit is contained in:
parent
7a8ee29dcb
commit
0fe23420ab
800 changed files with 16547 additions and 0 deletions
93
scenes/scripts/wood_pile_interaction.gd
Normal file
93
scenes/scripts/wood_pile_interaction.gd
Normal file
|
|
@ -0,0 +1,93 @@
|
|||
extends Node2D
|
||||
|
||||
@onready var area = $ClickArea
|
||||
@onready var arrow = $Arrow
|
||||
|
||||
var respawn_timer: Timer
|
||||
var original_y: float = 0.0
|
||||
|
||||
func _ready():
|
||||
area.input_event.connect(_on_area_input_event)
|
||||
area.mouse_entered.connect(_on_mouse_entered)
|
||||
area.mouse_exited.connect(_on_mouse_exited)
|
||||
|
||||
# Create the respawn timer
|
||||
respawn_timer = Timer.new()
|
||||
respawn_timer.one_shot = true
|
||||
respawn_timer.timeout.connect(_on_respawn_timer_timeout)
|
||||
add_child(respawn_timer)
|
||||
|
||||
func _on_area_input_event(_viewport, event, _shape_idx):
|
||||
if event is InputEventMouseButton:
|
||||
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
|
||||
on_clicked()
|
||||
|
||||
func _on_mouse_entered():
|
||||
Input.set_default_cursor_shape(Input.CURSOR_POINTING_HAND)
|
||||
|
||||
func _on_mouse_exited():
|
||||
Input.set_default_cursor_shape(Input.CURSOR_ARROW)
|
||||
|
||||
func on_clicked():
|
||||
Audio.play_chop_sound()
|
||||
Inventory.add_wood(Unlocks.get_wood_per_click())
|
||||
play_pop_animation()
|
||||
|
||||
func play_pop_animation():
|
||||
arrow.visible = false
|
||||
|
||||
# Store original position for reset
|
||||
original_y = position.y
|
||||
|
||||
# Create a tween for smooth animation
|
||||
var tween = create_tween()
|
||||
tween.set_parallel(true) # Run animations simultaneously
|
||||
|
||||
# Scale up quickly (pop effect)
|
||||
tween.tween_property(self, "scale", scale * 1.3, 0.1).set_ease(Tween.EASE_OUT)
|
||||
|
||||
# Fade out
|
||||
tween.tween_property(self, "modulate:a", 0.0, 0.2)
|
||||
|
||||
# Optional: slight upward movement for extra effect
|
||||
tween.tween_property(self, "position:y", position.y - 3, 0.2)
|
||||
|
||||
# Hide and disable, then start respawn timer
|
||||
tween.finished.connect(func():
|
||||
visible = false
|
||||
area.monitoring = false
|
||||
area.monitorable = false
|
||||
|
||||
# Start the respawn timer with the value from Unlocks
|
||||
var respawn_time = Unlocks.get_wood_respawn_time()
|
||||
respawn_timer.start(respawn_time)
|
||||
)
|
||||
|
||||
func _on_respawn_timer_timeout():
|
||||
pop_back_in()
|
||||
|
||||
func pop_back_in():
|
||||
if visible:
|
||||
return # Already visible
|
||||
|
||||
position.y = original_y
|
||||
|
||||
# Reset properties
|
||||
visible = true
|
||||
arrow.visible = true
|
||||
area.monitoring = true
|
||||
area.monitorable = true
|
||||
|
||||
# Create a tween for the pop-in animation
|
||||
var tween = create_tween()
|
||||
tween.set_parallel(true)
|
||||
|
||||
# Start from scaled down and transparent
|
||||
scale = Vector2.ONE * 0.7
|
||||
modulate.a = 0.0
|
||||
|
||||
# Scale up to normal
|
||||
tween.tween_property(self, "scale", Vector2.ONE, 0.2).set_ease(Tween.EASE_OUT)
|
||||
|
||||
# Fade in
|
||||
tween.tween_property(self, "modulate:a", 1.0, 0.2)
|
||||
Loading…
Add table
Add a link
Reference in a new issue