GMTK-2024/gmtk_2024/scripts/resizable_block.gd

39 lines
1 KiB
GDScript3
Raw Normal View History

2024-08-19 03:15:07 +02:00
extends AnimatableBody2D
2024-08-18 02:48:09 +02:00
2024-08-18 20:13:49 +02:00
@export var scale_up_target: Vector2 = Vector2(1.0, 1.0)
2024-08-18 13:04:09 +02:00
@export var scale_down_target: Vector2 = Vector2(0.5, 0.5)
@export var scale_duration: float = 0.5
@export var ui_actions: Node
@export var small_sprite = preload("res://textures/antivirus-block-small.png")
@export var large_sprite = preload("res://textures/antivirus-block-big.png")
2024-08-18 23:30:19 +02:00
@export var delete_self = false
2024-08-18 02:48:09 +02:00
2024-08-18 13:04:09 +02:00
func _ready():
2024-08-18 15:43:21 +02:00
add_to_group("scalable_blocks")
2024-08-18 13:04:09 +02:00
2024-08-18 20:13:49 +02:00
func _process(delta):
change_sprite_based_on_scale()
2024-08-18 02:48:09 +02:00
func scale_up():
var tween = create_tween()
tween.tween_property(self, "scale", scale_up_target, scale_duration)
2024-08-18 20:13:49 +02:00
change_sprite_based_on_scale()
2024-08-18 23:30:19 +02:00
if delete_self:
queue_free()
2024-08-18 02:48:09 +02:00
func scale_down():
var tween = create_tween()
tween.tween_property(self, "scale", scale_down_target, scale_duration)
2024-08-18 20:13:49 +02:00
change_sprite_based_on_scale()
2024-08-18 23:30:19 +02:00
if delete_self:
queue_free()
2024-08-18 20:13:49 +02:00
func change_sprite_based_on_scale():
var sprite = $Sprite2D
if scale == Vector2(0.5, 0.5):
sprite.texture = small_sprite
elif scale == Vector2(1.0, 1.0):
sprite.texture = large_sprite