Randoloot/scripts/game/wormhole.gd

34 lines
1.2 KiB
GDScript

extends Node2D
var _time := 0.0
func _ready() -> void:
z_index = -2
var label := Label.new()
label.text = "WORMHOLE\nWleć, aby przejść do następnego układu"
label.position = Vector2(-180, 72)
label.size = Vector2(360, 44)
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
label.mouse_filter = Control.MOUSE_FILTER_IGNORE
label.add_theme_font_size_override("font_size", 13)
label.add_theme_color_override("font_color", Color("89e8ff"))
add_child(label)
func _process(delta: float) -> void:
_time += delta
queue_redraw()
func _draw() -> void:
var pulse := 1.0 + sin(_time * 2.5) * 0.06
for ring in range(6, 0, -1):
draw_circle(Vector2.ZERO, (48.0 + ring * 4.0) * pulse, Color(0.28, 0.35, 0.95, 0.025 * (7 - ring)))
draw_circle(Vector2.ZERO, 43.0, Color("040917"))
for arm in 3:
var points := PackedVector2Array()
for segment in 65:
var progress := segment / 64.0
var angle := progress * TAU * 1.3 + _time * 1.6 + TAU * arm / 3.0
points.append(Vector2.RIGHT.rotated(angle) * (8.0 + progress * 44.0) * pulse)
draw_polyline(points, Color(0.35 + arm * 0.12, 0.55, 1.0, 0.8), 3.0, true)
draw_arc(Vector2.ZERO, 49.0 * pulse, 0, TAU, 96, Color("8beaff"), 2.0, true)