aboutsummaryrefslogtreecommitdiff
path: root/client/map
diff options
context:
space:
mode:
Diffstat (limited to 'client/map')
-rw-r--r--client/map/items/item.gd13
-rw-r--r--client/map/tiles/tile.gd5
2 files changed, 15 insertions, 3 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()
diff --git a/client/map/tiles/tile.gd b/client/map/tiles/tile.gd
index 4bee3ced..98be64aa 100644
--- a/client/map/tiles/tile.gd
+++ b/client/map/tiles/tile.gd
@@ -77,10 +77,9 @@ func pass_to(tile: Tile):
tile.set_item(i)
func set_item(i: Item):
- if item != null:
- item.queue_free()
+ if item != null: item.remove()
item = i
- i.owned_by = item_base
+ if i != null: i.owned_by = item_base
func take_item() -> Item:
var i = item