extends Node2D var payload: Dictionary = {} var _player: Node2D var _label: Label var _icon: Texture2D var _time := 0.0 func _ready() -> void: add_to_group("loot") z_index = 18 _player = get_parent().get_node_or_null("PlayerShip") _icon = preload("res://scripts/items/special_orbs.gd").icon(str(payload.orb)) if payload.has("orb") else load("res://assets/planets/expedition_navigation.png") _label = Label.new() _label.position = Vector2(-120,24) _label.size.x = 240 _label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER _label.add_theme_font_size_override("font_size",12) _label.text = preload("res://scripts/items/special_orbs.gd").NAMES[str(payload.orb)] if payload.has("orb") else "Mapa odległych systemów · poz. %d" % int(payload.map.level) add_child(_label) func _process(delta: float) -> void: _time += delta queue_redraw() func _draw() -> void: var color := Color("b991ff") if payload.has("map") else Color("f5cf82") draw_circle(Vector2.ZERO,27+sin(_time*3)*2,Color(color,0.15)) draw_arc(Vector2.ZERO,24,_time,_time+TAU*0.8,40,color,1.5,true) if _icon != null: draw_texture_rect(_icon,Rect2(-21,-21,42,42),false) func _physics_process(delta: float) -> void: if not is_instance_valid(_player) or bool(_player.get("_is_destroyed")): return var distance := global_position.distance_to(_player.global_position) if distance <= 48: var progress: Resource = GameState.captain.expedition if payload.has("map"): progress.distant_maps[str(payload.map.id)] = payload.map.duplicate(true) if payload.has("orb"): var id := str(payload.orb) progress.orbs[id] = int(progress.orbs.get(id,0))+1 progress.emit_changed() set_physics_process(false) queue_free() elif distance < 180: global_position = global_position.move_toward(_player.global_position,200*delta)