diff --git a/spawner/gemstone_spawner.gd b/spawner/gemstone_spawner.gd deleted file mode 100644 index 6f49e2f..0000000 --- a/spawner/gemstone_spawner.gd +++ /dev/null @@ -1,65 +0,0 @@ -extends Area2D -class_name GemstoneSpawner - -## A node which spawns things! - -## The scene to spawn. -@export var scene: PackedScene - -## The node to add new scenes to. -@export var target: Node - -## Count of how many items should be spawned when possible. -var buffer: int = 0 - -## Maximum amount of items whose spawn can be buffered. -@export var buffer_cap: int - -## Rect in which scenes can be spawned randomly in. -@export var spawn_rect: Rect2 - -## Minimum rotation degrees that an object can spawn with. -@export_range(0, 360) var spawn_rotation_degrees_min: float - -## Maximum rotation degrees that an object can spawn with. -@export_range(0, 360) var spawn_rotation_degrees_max: float - -## Maximum amount of bodies overlapping the spawner's area before the spawner stops spawning. -@export_range(0, 16, 1, "or_greater") var overlapping_body_count_limit: int - - -signal spawned(what: Node2D) - -func gem_roll(): - return Randomizer.rng.randi_range(0,360) - -func spawn(): - buffer += 1 - if buffer > buffer_cap: - buffer = buffer_cap - -func _select_spawn_position() -> Vector2: - return Vector2( - Randomizer.rng.randf_range(spawn_rect.position.x, spawn_rect.end.x), - Randomizer.rng.randf_range(spawn_rect.position.y, spawn_rect.end.y), - ) - -func _select_spawn_rotation() -> float: - return Randomizer.rng.randf_range( - spawn_rotation_degrees_min, - spawn_rotation_degrees_max - ) - -func _do_spawn(): - if len(get_overlapping_bodies()) > overlapping_body_count_limit: - return - var instantiated = scene.instantiate() - instantiated.global_position = global_position + _select_spawn_position() - instantiated.rotation_degrees = _select_spawn_rotation() - target.add_child(instantiated) - spawned.emit() - buffer -= 1 - -func _physics_process(_delta): - if buffer > 0: - _do_spawn() diff --git a/spawner/gemstone_spawner.tscn b/spawner/gemstone_spawner.tscn deleted file mode 100644 index ec0a825..0000000 --- a/spawner/gemstone_spawner.tscn +++ /dev/null @@ -1,20 +0,0 @@ -[gd_scene load_steps=5 format=3 uid="uid://cqbqoc8ftxfos"] - -[ext_resource type="Script" path="res://spawner/gemstone_spawner.gd" id="1_fk8ci"] -[ext_resource type="PackedScene" uid="uid://c67lfbk4gf1ga" path="res://spawner/spawner.tscn" id="2_2di81"] -[ext_resource type="PackedScene" uid="uid://6pp1pebasum3" path="res://entity/gem/gemstone.tscn" id="3_goofg"] -[ext_resource type="Script" path="res://spawner/Node.gd" id="3_ra5b3"] - -[node name="GemstoneSpawner" type="Node2D"] -script = ExtResource("1_fk8ci") -buffer_cap = null -spawn_rect = null -spawn_rotation_degrees_min = null -spawn_rotation_degrees_max = null -overlapping_body_count_limit = null - -[node name="Spawner" parent="." instance=ExtResource("2_2di81")] -scene = ExtResource("3_goofg") - -[node name="GemRandomizer" type="Node" parent="."] -script = ExtResource("3_ra5b3")