1
Fork 0
mirror of https://github.com/Steffo99/swear-jar.git synced 2024-11-21 15:24:18 +00:00

Randomize sound

This commit is contained in:
Steffo 2023-10-02 22:09:19 +02:00
parent 0d378f16d4
commit 9bcda63b84
Signed by: steffo
GPG key ID: 2A24051445686895
3 changed files with 45 additions and 21 deletions

View file

@ -1,8 +1,6 @@
extends StaticBody2D
class_name Converter
var coda : int = 0
@export var sprite_front: AnimatedSprite2D
@export var sprite_back: AnimatedSprite2D
@export var conversion_timer: Timer
@ -10,25 +8,38 @@ var coda : int = 0
@export var sound_complete: AudioStreamPlayer
@export var spawner: Spawner
func _on_collector_goal():
coda+=1
## Amount of scenes this converter should produce.
var to_produce: int = 0
func _process(_delta):
if coda>=1 and conversion_timer.is_stopped():
## Amount of scenes this converter should spawn.
var to_spawn: int = 0
func _on_collector_goal():
to_produce += 1
func _physics_process(_delta):
if to_produce >= 1 and conversion_timer.is_stopped():
to_produce -= 1
produce()
func produce():
conversion_timer.start()
if sprite_front:
sprite_front.play()
if not sprite_back==null:
sprite_back.play()
conversion_timer.start()
if sprite_back:
sprite_back.play()
if sound_working:
sound_working.play()
func _on_timer_timeout():
coda-=1
sprite_front.stop()
if not sprite_back==null:
sprite_back.stop()
sound_working.stop()
sound_complete.play()
spawner.spawn()
if sprite_front:
sprite_front.stop()
if sprite_back:
sprite_back.stop()
if sound_working:
sound_working.stop()
var is_pending_deletion: bool = false
@ -40,7 +51,7 @@ func ending_deletion():
sprite_front.modulate = Color.WHITE
is_pending_deletion = false
func _on_input_event(viewport: Node, event: InputEvent, shape_idx: int):
func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int):
if is_pending_deletion:
if event is InputEventMouseButton or event is InputEventScreenTouch:
queue_free()

View file

@ -71,7 +71,7 @@ script = ExtResource("1_mas6k")
sprite_front = NodePath("SpriteFront")
conversion_timer = NodePath("ConversionTimer")
sound_working = NodePath("SoundWorking")
sound_complete = NodePath("SoundComplete")
sound_complete = NodePath("Spawner/SoundComplete")
spawner = NodePath("Spawner")
[node name="SpriteBack" type="Sprite2D" parent="."]
@ -110,7 +110,7 @@ collecting_amount = 10
shape = SubResource("RectangleShape2D_k11if")
debug_color = Color(0, 0.701961, 0.188235, 0.419608)
[node name="Spawner" parent="." instance=ExtResource("9_2wvgu")]
[node name="Spawner" parent="." node_paths=PackedStringArray("sound_complete") instance=ExtResource("9_2wvgu")]
position = Vector2(0, 8)
scene = ExtResource("2_h5aul")
buffer_cap = 1
@ -118,6 +118,7 @@ spawn_rect = Rect2(-8, 0, 16, 4)
spawn_rotation_degrees_min = 80.0
spawn_rotation_degrees_max = 100.0
overlapping_body_count_limit = 4
sound_complete = NodePath("SoundComplete")
[node name="PreventSpawnShape" type="CollisionShape2D" parent="Spawner"]
z_index = 3
@ -125,6 +126,10 @@ position = Vector2(0, 3.5)
shape = SubResource("RectangleShape2D_jeo5f")
debug_color = Color(0.701961, 0, 0, 0.419608)
[node name="SoundComplete" type="AudioStreamPlayer" parent="Spawner"]
stream = ExtResource("11_r8505")
max_polyphony = 4
[node name="ConversionTimer" type="Timer" parent="."]
wait_time = 0.5
one_shot = true
@ -132,9 +137,6 @@ one_shot = true
[node name="SoundWorking" type="AudioStreamPlayer" parent="."]
stream = ExtResource("10_6hhch")
[node name="SoundComplete" type="AudioStreamPlayer" parent="."]
stream = ExtResource("11_r8505")
[node name="ConverterPlacementBody" parent="." instance=ExtResource("12_5qhgs")]
[connection signal="input_event" from="." to="." method="_on_input_event"]

View file

@ -27,6 +27,14 @@ var buffer: int = 0
## 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
## Sound to play when spawning an item.
##
## Doesn't spawn anything if not set.
@export var sound_complete: AudioStreamPlayer
@export_range(0.01, 8.0, 0.01, "or_greater") var sound_complete_pitch_min: float = 0.98
@export_range(0.01, 8.0, 0.01, "or_greater") var sound_complete_pitch_max: float = 1.02
signal spawned(what: Node2D)
@ -62,6 +70,9 @@ func _do_spawn():
instantiated.global_position = global_position + _select_spawn_position()
instantiated.rotation_degrees = _select_spawn_rotation()
target.add_child(instantiated)
if sound_complete:
sound_complete.pitch_scale = Randomizer.rng.randf_range(sound_complete_pitch_min, sound_complete_pitch_max)
sound_complete.play()
spawned.emit()
buffer -= 1