This commit is contained in:
Eric Vande Voort
2025-01-07 16:10:03 -06:00
commit 7eb0dea424
147 changed files with 9096 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
extends Node2D
const ASTEROID = preload("res://scenes/asteroid.tscn")
const FUEL_TANK = preload("res://scenes/fuel_tank.tscn")
const STAR_FRAGMENT = preload("res://scenes/star_fragment.tscn")
@onready var rocket: Rocket = %Rocket
@onready var spawn_timer = %SpawnTimer
var noise: Noise
@export var delim_value: float = 0.34
@export var fuel_value: float = 0.3#-0.58
@export var star_rarity: float = 0.5#0.1
func _ready():
noise = FastNoiseLite.new()
noise.seed = randi() % 1000000
noise.frequency = 0.007
for pod: SpacePod in DataHandler.spawn_pods():
add_child(pod)
func _on_spawn_timer_timeout():
spawn_timer.wait_time = 9.5 / max(rocket.velocity.length(), 8)
for a in range(-36, 36):
var angle = rocket.rotation + (a / 30.0) + (randf() / 25.0)
var pos = rocket.position + (Vector2.from_angle(angle) * 420.0)
var value = noise.get_noise_2d(pos.x, pos.y)
if value > delim_value:
if _check_spawn_loc(pos, 13):
var asteroid_spawn = ASTEROID.instantiate()
asteroid_spawn.position = pos
add_child(asteroid_spawn)
if value < fuel_value:
var rand_pickup = randf()
if _check_spawn_loc(pos, 82):
if rand_pickup < star_rarity:
var star = STAR_FRAGMENT.instantiate()
star.position = pos
add_child(star)
else:
var fuel_spawn = FUEL_TANK.instantiate()
fuel_spawn.position = pos
add_child(fuel_spawn)
func _check_spawn_loc(pos: Vector2, radius: int):
var shape_rid = PhysicsServer2D.circle_shape_create()
PhysicsServer2D.shape_set_data(shape_rid, radius)
var params = PhysicsShapeQueryParameters2D.new()
params.shape_rid = shape_rid
params.transform = Transform2D(0.0, pos)
params.collision_mask = 1
# Execute physics queries here...
var space_state = get_world_2d().direct_space_state
var results = space_state.intersect_shape(params)
# Release the shape when done with physics queries.
PhysicsServer2D.free_rid(shape_rid)
return results.is_empty()