extends Node2D const PICKUP_RADIUS := 48.0 const ATTRACTION_RADIUS := 150.0 const POPUP := preload("res://scenes/game/damage_popup.tscn") var amount: int = 0 var _player: CharacterBody2D var _collected := false func _ready() -> void: add_to_group("credit_pickups") _player = get_parent().get_node_or_null("PlayerShip") as CharacterBody2D z_index = 18 func _draw() -> void: var gold := Color("ffd56a") for radius in [27.0, 22.0, 18.0]: draw_circle(Vector2.ZERO, radius, Color(gold, 0.06)) draw_texture_rect(preload("res://assets/icons/resources/credits.svg"), Rect2(-18, -18, 36, 36), false) func _physics_process(delta: float) -> void: if _collected or not is_instance_valid(_player) or bool(_player.get("_is_destroyed")): return var distance := global_position.distance_to(_player.global_position) if distance <= PICKUP_RADIUS: _collected = true GameState.captain.add_rewards(0, amount) var popup := POPUP.instantiate() as Label popup.text = "+%d KREDYTÓW" % amount popup.set("text_color", Color("ffd56a")) popup.position = _player.position + Vector2(-48, -60) get_parent().add_child(popup) set_physics_process(false) queue_free() elif distance <= ATTRACTION_RADIUS: global_position = global_position.move_toward(_player.global_position, 180.0 * delta)