Randoloot/scripts/items/credit_pickup.gd
2026-10-11 18:42:15 +02:00

37 lines
1.3 KiB
GDScript

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:
draw_circle(Vector2.ZERO, 13.0, Color("46351b"))
draw_arc(Vector2.ZERO, 13.0, 0, TAU, 32, Color("ffd56a"), 2.0, true)
draw_arc(Vector2.ZERO, 6.0, PI * 0.3, PI * 1.7, 20, Color("ffd56a"), 2.0, true)
draw_line(Vector2(-2, -8), Vector2(-2, 8), Color("ffd56a"), 1.5, true)
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)