diff --git a/client/scripts/main.gd b/client/scripts/main.gd index c466e42..41a44d5 100644 --- a/client/scripts/main.gd +++ b/client/scripts/main.gd @@ -10,6 +10,10 @@ extends Node3D @onready var _radius_preview: Node3D = $World/InteractionMarkers @onready var _move_reject_label: Label = $UICanvas/MoveRejectLabel +## Bump on each rejection so older one-shot timers do not clear a newer message. +var _move_reject_msg_token: int = 0 +const MOVE_REJECT_MSG_SECONDS: float = 4.0 + func _ready() -> void: _ground_pick.set("fallback_camera", _camera) @@ -33,4 +37,12 @@ func _on_authoritative_position(world: Vector3) -> void: func _on_move_rejected(reason_code: String) -> void: push_warning("Move rejected: %s" % reason_code) + _move_reject_msg_token += 1 + var token: int = _move_reject_msg_token _move_reject_label.text = "Move rejected: %s" % reason_code + get_tree().create_timer(MOVE_REJECT_MSG_SECONDS).timeout.connect( + func(): + if token == _move_reject_msg_token: + _move_reject_label.text = "", + CONNECT_ONE_SHOT + )