37 lines
1.2 KiB
GDScript
37 lines
1.2 KiB
GDScript
extends Node2D
|
|
@onready var fleet: Node2D = get_node("../Fleet")
|
|
var vents: Array[Vector2] = []
|
|
var progress: float = 0.0
|
|
func _ready() -> void:
|
|
var rng := RandomNumberGenerator.new()
|
|
rng.seed = hash(GameState.planet_name)
|
|
for i in range(6): vents.append(Vector2(rng.randf_range(-800,800), rng.randf_range(-650,650)))
|
|
queue_redraw()
|
|
func _process(delta: float) -> void:
|
|
for vent in vents:
|
|
if fleet.get_centroid().distance_to(vent) < 90.0:
|
|
progress += delta
|
|
if progress >= 1.0:
|
|
GameState.collect_gas_cargo(int(progress))
|
|
progress = fmod(progress, 1.0)
|
|
return
|
|
progress = 0.0
|
|
func _draw() -> void:
|
|
for vent in vents:
|
|
_draw_gas_source(vent)
|
|
|
|
|
|
func _draw_gas_source(centre: Vector2) -> void:
|
|
var colour := Color(0.85, 0.52, 1.0)
|
|
var core := Color(0.15, 0.03, 0.22)
|
|
var bubbles: Array = [
|
|
[centre + Vector2(-20.0, 8.0), 20.0],
|
|
[centre + Vector2(18.0, 14.0), 27.0],
|
|
[centre + Vector2(17.0, -22.0), 15.0],
|
|
]
|
|
for bubble in bubbles:
|
|
var ring := PackedVector2Array()
|
|
for i in range(12):
|
|
var angle: float = TAU * float(i) / 12.0
|
|
ring.append(bubble[0] + Vector2(cos(angle), sin(angle)) * float(bubble[1]))
|
|
NeonDraw.draw_glowing_polygon(self, ring, colour, 0.9, core, 0.6)
|