37 lines
1.3 KiB
GDScript
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:
|
|
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)
|