From 5060bd8f0bcc904a3b38ad0b1c9c770f55089e6e Mon Sep 17 00:00:00 2001 From: Ruslan Ignatov Date: Mon, 5 Jan 2026 19:12:50 +0300 Subject: [PATCH] Added tesla shot sound --- .../tesla/abstract_tesla_projectile.gd | 13 ++++++++++ game/entities/world/game.gd | 5 +++- game/managers/sound_manager.gd | 1 + game/managers/sound_manager.tscn | 4 +++- sound/sfx/weapon/tesla_shot.wav | 3 +++ sound/sfx/weapon/tesla_shot.wav.import | 24 +++++++++++++++++++ 6 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 sound/sfx/weapon/tesla_shot.wav create mode 100644 sound/sfx/weapon/tesla_shot.wav.import diff --git a/game/entities/weapons/tesla/abstract_tesla_projectile.gd b/game/entities/weapons/tesla/abstract_tesla_projectile.gd index af03773..0ee1b39 100644 --- a/game/entities/weapons/tesla/abstract_tesla_projectile.gd +++ b/game/entities/weapons/tesla/abstract_tesla_projectile.gd @@ -10,6 +10,7 @@ extends AbstractDirectHitProjectile var _collided_foes : Array[AbstractShip] = [] var _current_line: Line2D +var _audio_player: AudioStreamPlayer2D @onready var jink_timer : Timer = $JinkTimer @@ -29,6 +30,9 @@ func _ready() -> void: _prepare_line(line_thin) _prepare_line(line_thick) + + var stream : AudioStream = SoundManager.sfx_weapon_tesla_shot + _audio_player = SoundManager.play_sfx_stream(stream, global_position) func _prepare_line(line: Line2D) -> void: @@ -131,6 +135,15 @@ func _start_fading() -> void: _current_line = line_thin life_timer.start() + + if _audio_player.playing: + var old_volume := _audio_player.volume_linear + var tween := create_tween() + tween.tween_property(_audio_player, "volume_linear", 0, life_timer.wait_time) + tween.finished.connect(func() -> void: + _audio_player.stop(); + _audio_player.volume_linear = old_volume + ) func _on_life_timer_timeout() -> void: diff --git a/game/entities/world/game.gd b/game/entities/world/game.gd index e4db833..4b11b7b 100644 --- a/game/entities/world/game.gd +++ b/game/entities/world/game.gd @@ -160,7 +160,10 @@ func _on_passage_completion() -> void: _current_passage_scene.queue_free() var projectiles := get_tree().get_nodes_in_group("projectiles") for projectile in projectiles: - projectile.queue_free() + if projectile is AbstractProjectile: + projectile.delete() + else: + projectile.queue_free() current_sector = current_passage.next_sector if current_sector.next_passages.size() == 0: diff --git a/game/managers/sound_manager.gd b/game/managers/sound_manager.gd index 918f7dd..c8de196 100644 --- a/game/managers/sound_manager.gd +++ b/game/managers/sound_manager.gd @@ -34,6 +34,7 @@ const MUSIC_BUS = "Music" @export var sfx_weapon_plasma_shot : AudioStream @export var sfx_weapon_railgun_shot : AudioStream @export var sfx_weapon_sharapnel_shot : AudioStream +@export var sfx_weapon_tesla_shot : AudioStream var _ui_players : Array[AudioStreamPlayer] = [] diff --git a/game/managers/sound_manager.tscn b/game/managers/sound_manager.tscn index 3282b6e..5f802e3 100644 --- a/game/managers/sound_manager.tscn +++ b/game/managers/sound_manager.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=14 format=3 uid="uid://bc0np3ldfspq4"] +[gd_scene load_steps=15 format=3 uid="uid://bc0np3ldfspq4"] [ext_resource type="Script" uid="uid://cx5qcukr66whc" path="res://game/managers/sound_manager.gd" id="1_cg0sy"] [ext_resource type="AudioStream" uid="uid://bqcqigmj23ub5" path="res://sound/ui/ui_accept.wav" id="2_agyxs"] @@ -13,6 +13,7 @@ [ext_resource type="AudioStream" uid="uid://dmp6cimf8uy0x" path="res://sound/sfx/weapon/minelayer_shot.wav" id="8_q7cyi"] [ext_resource type="AudioStream" uid="uid://hv28c6ivh4fx" path="res://sound/sfx/weapon/minelayer_tick_high.wav" id="9_wyfta"] [ext_resource type="AudioStream" uid="uid://dew2108vd3e1d" path="res://sound/sfx/weapon/minelayer_tick_low.wav" id="10_814q3"] +[ext_resource type="AudioStream" uid="uid://cwl47v6j32ho2" path="res://sound/sfx/weapon/tesla_shot.wav" id="14_814q3"] [node name="SoundManager" type="Node"] script = ExtResource("1_cg0sy") @@ -34,3 +35,4 @@ sfx_weapon_minelayer_tick_low = ExtResource("10_814q3") sfx_weapon_plasma_shot = ExtResource("8_6ll5c") sfx_weapon_railgun_shot = ExtResource("8_ab171") sfx_weapon_sharapnel_shot = ExtResource("8_22ptj") +sfx_weapon_tesla_shot = ExtResource("14_814q3") diff --git a/sound/sfx/weapon/tesla_shot.wav b/sound/sfx/weapon/tesla_shot.wav new file mode 100644 index 0000000..8a5c7d1 --- /dev/null +++ b/sound/sfx/weapon/tesla_shot.wav @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f231a52b81454fb6d1d8ebbd37ba1f5a5c59e33ce918265a3619d0b18bdad846 +size 336192 diff --git a/sound/sfx/weapon/tesla_shot.wav.import b/sound/sfx/weapon/tesla_shot.wav.import new file mode 100644 index 0000000..8ee88fc --- /dev/null +++ b/sound/sfx/weapon/tesla_shot.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cwl47v6j32ho2" +path="res://.godot/imported/tesla_shot.wav-d6b3bc5599b5d536d85e36820ce139eb.sample" + +[deps] + +source_file="res://sound/sfx/weapon/tesla_shot.wav" +dest_files=["res://.godot/imported/tesla_shot.wav-d6b3bc5599b5d536d85e36820ce139eb.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=2