diff options
Diffstat (limited to 'client/player/controllable_player.gd')
| -rw-r--r-- | client/player/controllable_player.gd | 19 | 
1 files changed, 11 insertions, 8 deletions
| diff --git a/client/player/controllable_player.gd b/client/player/controllable_player.gd index 8c907efa..3a245e1a 100644 --- a/client/player/controllable_player.gd +++ b/client/player/controllable_player.gd @@ -39,7 +39,7 @@ var current_vibration_strength := 0.  var current_vibration_change := 0.  var target: Vector2i = Vector2i(0, 0) -var last_interaction: Vector2i = Vector2i(0, 0) +var last_interaction = null  func _ready():  	vibration_timer = Timer.new() @@ -205,20 +205,23 @@ func take_item(tile: Tile):  func interact():  	if not is_input_enabled(): return  	var tile = game.map.get_tile_instance(target) -	if tile != null and not last_interaction == target: -		if interacting: +	if tile != null: +		marker.visible = true + +		# clear last interaction if target has moved since +		if last_interaction != null and not last_interaction == target:  			game.mp.send_tile_interact(game.player_id, last_interaction, false) +			marker.set_interacting(false) +			last_interaction = null  		marker.set_interactive(game.get_tile_interactive(target)) -		marker.visible = true  		marker_target = tile.item_base.global_position -		if Input.is_action_just_pressed("interact"): -			interacting = true +		if Input.is_action_just_pressed("interact") and last_interaction == null:  			last_interaction = target  			game.mp.send_tile_interact(game.player_id, target, true)  			tile.interact()  			marker.set_interacting(true) -		elif Input.is_action_just_released("interact"): -			interacting = false +		if Input.is_action_just_released("interact"): +			last_interaction = null  			game.mp.send_tile_interact(game.player_id, target, false)  			marker.set_interacting(false)  	else: | 
