diff options
Diffstat (limited to 'client/map/items')
-rw-r--r-- | client/map/items/item.gd | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/client/map/items/item.gd b/client/map/items/item.gd index d24cd36b..710d0081 100644 --- a/client/map/items/item.gd +++ b/client/map/items/item.gd @@ -26,6 +26,8 @@ var take_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate var put_sound: PlayRandom = preload("res://audio/play_random.tscn").instantiate() var sound_id +var destroy_timeout = null + func _init(owned_by_: Node3D): progress_instance.position.y = 1 progress_instance.visible = false @@ -42,6 +44,7 @@ func _init(owned_by_: Node3D): owned_by = owned_by_ func _process(delta): + if not is_instance_valid(owned_by): return if owned_by.get_parent() is Item or owned_by is Item: return var p = owned_by.get_parent().get_parent() is Player @@ -49,6 +52,13 @@ func _process(delta): position = G.interpolate(position, owned_by.global_position, delta * ispeed) if p: rotation.y = G.interpolate_angle(rotation.y, owned_by.global_rotation.y, delta * ispeed) else: rotation.y = G.interpolate_angle_closest_quarter(rotation.y, owned_by.global_rotation.y, delta * ispeed) + if destroy_timeout != null: + if is_instance_valid(progress_instance): + progress_instance.queue_free() + destroy_timeout -= delta * 5. + scale = Vector3.ONE * destroy_timeout + if destroy_timeout <= 0: + queue_free() func progress(position_: float, speed: float, warn: bool): progress_instance.visible = true @@ -65,6 +75,9 @@ func setup_sounds(): take_sound.setup([preload("res://map/items/sounds/generic_take.ogg")]) put_sound.setup([preload("res://map/items/sounds/plate_put.ogg")]) +func remove(): + destroy_timeout = 1 + func take(): take_sound.play_random() |