diff --git a/Ball/Ball.gd b/Ball/Ball.gd index 9383853..60417b8 100644 --- a/Ball/Ball.gd +++ b/Ball/Ball.gd @@ -60,7 +60,7 @@ func _on_body_exited(body: Node) -> void: if not body.visible: return $BrickSound.play() - body.hit(1) + body.hit(1, false) hit_brick.emit(self, body, 1) speed += 1 return diff --git a/Brick/Brick.gd b/Brick/Brick.gd index 5db2aa7..98d528a 100644 --- a/Brick/Brick.gd +++ b/Brick/Brick.gd @@ -8,7 +8,7 @@ enum { INVULNERABLE } -signal brick_destroyed(brick : StaticBody2D) +signal brick_destroyed(brick : StaticBody2D, is_laser : bool ) var hits : int = 1 var value : int = 100 @@ -22,7 +22,7 @@ func _ready() -> void: func _process(_delta) -> void: pass -func hit(power : int) -> void: +func hit(power : int, is_laser : bool = false) -> void: if hits <= 0: return hits -= power @@ -33,7 +33,7 @@ func hit(power : int) -> void: visible = false get_tree().create_timer(5).timeout.connect(_show_block) return - brick_destroyed.emit(self) + brick_destroyed.emit(self, is_laser) get_parent().call_deferred("remove_child", self) call_deferred("queue_free") else: diff --git a/Dunkanoid.gd b/Dunkanoid.gd index 5daa1b4..8bf26de 100644 --- a/Dunkanoid.gd +++ b/Dunkanoid.gd @@ -6,6 +6,7 @@ var _Upgrade = preload("res://Upgrade/Upgrade.tscn") var _Alien = preload("res://Alien.tscn") var _Bullet = preload("res://Bullet.tscn") var _Coin = preload("res://Coin/Coin.tscn") +var _Explosion = preload("res://Explosion.tscn") @onready var ScoreNode = $ScoreCard/Score/ScoreBox @onready var LivesNode = $ScoreCard/Lives/LivesBox @@ -172,11 +173,18 @@ func new_level() -> void: add_child(ball) balls.push_back(ball) + get_tree().create_timer(2).timeout.connect(show_start) + +func show_start() -> void: StartNode.visible = true Music.jingle_finished.connect(_on_start_round_finished) Music.jingle(Music.JINGLE_LEVEL_START) -func _brick_destroyed(brick) -> void: +func _brick_destroyed(brick, is_laser) -> void: + if is_laser: + var exp = _Explosion.instantiate() + exp.global_position = brick.global_position + add_child(exp) Global.score += brick.value if randf() >= Global.get_powerup_percent(): var upgrade = _Upgrade.instantiate() @@ -287,7 +295,8 @@ func _on_hit_floor(ball, _power) -> void: if lives <= 0: var tween = get_tree().create_tween() tween.tween_property($ColorRect, "color", Color(0, 0, 0, 1), 2) - tween.finished.connect(_go_to_game_over) + tween.finished.connect(_go_to_game_over) + mode = MODE_WAIT else: PaddleNode.normal() ball = _Ball.instantiate() @@ -478,7 +487,7 @@ func fire_bullet() -> void: bullet.linear_velocity = Vector2(0, -500) func _on_bullet_hit_brick(node, power) -> void: - node.hit(power) + node.hit(power, true) func _on_bullet_hit_alien(node, power) -> void: node.hit(power) diff --git a/Dunkanoid.tscn b/Dunkanoid.tscn index f844688..943d4c7 100644 --- a/Dunkanoid.tscn +++ b/Dunkanoid.tscn @@ -45,8 +45,8 @@ distance = -360.0 [sub_resource type="ShaderMaterial" id="ShaderMaterial_kyxd5"] shader = ExtResource("12_ljnes") -shader_parameter/rect_global_position = Vector2(0, 0) -shader_parameter/rect_size = Vector2(150, 25) +shader_parameter/rect_global_position = Vector2(0, 0.233687) +shader_parameter/rect_size = Vector2(448, 25) shader_parameter/ColourTexture = ExtResource("13_u52d1") [sub_resource type="ShaderMaterial" id="ShaderMaterial_48a5y"] @@ -304,6 +304,7 @@ size_flags_horizontal = 3 theme = ExtResource("8_wcf7g") [node name="Start" type="Node2D" parent="."] +visible = false [node name="VBoxContainer" type="VBoxContainer" parent="Start"] offset_right = 448.0 diff --git a/Explosion.gd b/Explosion.gd new file mode 100644 index 0000000..e1f83a8 --- /dev/null +++ b/Explosion.gd @@ -0,0 +1,8 @@ +extends AnimatedSprite2D + +func _ready() -> void: + play() + +func _on_animation_finished() -> void: + get_parent().remove_child(self) + queue_free() diff --git a/Explosion.tscn b/Explosion.tscn new file mode 100644 index 0000000..02a75ae --- /dev/null +++ b/Explosion.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=20 format=3 uid="uid://cbbviq2amktyg"] + +[ext_resource type="Texture2D" uid="uid://ujw718ywd8u0" path="res://Sprites/exp2_0.png" id="1_cyvtr"] +[ext_resource type="Script" path="res://Explosion.gd" id="2_8h5ot"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_s33bc"] +atlas = ExtResource("1_cyvtr") +region = Rect2(0, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3xd2h"] +atlas = ExtResource("1_cyvtr") +region = Rect2(64, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_uwrba"] +atlas = ExtResource("1_cyvtr") +region = Rect2(128, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_88v8p"] +atlas = ExtResource("1_cyvtr") +region = Rect2(192, 0, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_yyvey"] +atlas = ExtResource("1_cyvtr") +region = Rect2(0, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_j5vsi"] +atlas = ExtResource("1_cyvtr") +region = Rect2(64, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dsnkr"] +atlas = ExtResource("1_cyvtr") +region = Rect2(128, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_admx1"] +atlas = ExtResource("1_cyvtr") +region = Rect2(192, 64, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3wnhv"] +atlas = ExtResource("1_cyvtr") +region = Rect2(0, 128, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_y72wd"] +atlas = ExtResource("1_cyvtr") +region = Rect2(64, 128, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3gddx"] +atlas = ExtResource("1_cyvtr") +region = Rect2(128, 128, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_3hlpl"] +atlas = ExtResource("1_cyvtr") +region = Rect2(192, 128, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_7ln8e"] +atlas = ExtResource("1_cyvtr") +region = Rect2(0, 192, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_8gc3j"] +atlas = ExtResource("1_cyvtr") +region = Rect2(64, 192, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_wu4v4"] +atlas = ExtResource("1_cyvtr") +region = Rect2(128, 192, 64, 64) + +[sub_resource type="AtlasTexture" id="AtlasTexture_0r171"] +atlas = ExtResource("1_cyvtr") +region = Rect2(192, 192, 64, 64) + +[sub_resource type="SpriteFrames" id="SpriteFrames_hqhkv"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_s33bc") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3xd2h") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_uwrba") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_88v8p") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_yyvey") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_j5vsi") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dsnkr") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_admx1") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3wnhv") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_y72wd") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3gddx") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_3hlpl") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_7ln8e") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_8gc3j") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_wu4v4") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_0r171") +}], +"loop": false, +"name": &"default", +"speed": 12.0 +}] + +[node name="Explosion" type="AnimatedSprite2D"] +sprite_frames = SubResource("SpriteFrames_hqhkv") +frame = 15 +frame_progress = 1.0 +script = ExtResource("2_8h5ot") + +[connection signal="animation_finished" from="." to="." method="_on_animation_finished"] diff --git a/Music.gd b/Music.gd index dea25a1..9bfb9c5 100644 --- a/Music.gd +++ b/Music.gd @@ -1,6 +1,7 @@ extends Node var MusicPlayer : AudioStreamPlayer +var JinglePlayer : AudioStreamPlayer enum { MUSIC_INTRO, @@ -44,6 +45,13 @@ func _ready() -> void: MusicPlayer.play() music = MUSIC_INTRO + JinglePlayer = AudioStreamPlayer.new(); + JinglePlayer.bus = "Music" + JinglePlayer.process_mode = Node.PROCESS_MODE_ALWAYS + JinglePlayer.finished.connect(_jingle_done) + add_child(JinglePlayer) + + func fade_up(time : int = 1) -> void: if MusicPlayer.volume_db < 0: if tween != null: @@ -99,32 +107,32 @@ func resume() -> void: MusicPlayer.play(pausepos) func jingle(item : int) -> void: - MusicPlayer.volume_db = 0 + fade_down() +# MusicPlayer.volume_db = 0 jingle_number = item - MusicPlayer.finished.connect(_jingle_done) - pause() +# pause() match item: JINGLE_LEVEL_START: - MusicPlayer.stream = JingleFileStart - MusicPlayer.play() + JinglePlayer.stream = JingleFileStart + JinglePlayer.play() JINGLE_LEVEL_WON: - MusicPlayer.stream = JingleFileWin - MusicPlayer.play() + JinglePlayer.stream = JingleFileWin + JinglePlayer.play() JINGLE_GAME_OVER: - MusicPlayer.stream = JingleFileGameOver - MusicPlayer.play() + JinglePlayer.stream = JingleFileGameOver + JinglePlayer.play() jingle_playing = true pass func _jingle_done() -> void: - MusicPlayer.finished.disconnect(_jingle_done) - match music: - MUSIC_INTRO: - MusicPlayer.stream = MP3["Through The Crystal"] - MUSIC_GAME: - MusicPlayer.stream = MP3["Powerup"] - MUSIC_GAME_OVER: - MusicPlayer.stream = MP3["I'll Remember You"] - resume() + fade_up() + #match music: + #MUSIC_INTRO: + #MusicPlayer.stream = MP3["Through The Crystal"] + #MUSIC_GAME: + #MusicPlayer.stream = MP3["Powerup"] + #MUSIC_GAME_OVER: + #MusicPlayer.stream = MP3["I'll Remember You"] + #resume() jingle_playing = false jingle_finished.emit(jingle_number) diff --git a/Sprites/exp2_0.png b/Sprites/exp2_0.png new file mode 100644 index 0000000..addc212 Binary files /dev/null and b/Sprites/exp2_0.png differ diff --git a/Sprites/exp2_0.png.import b/Sprites/exp2_0.png.import new file mode 100644 index 0000000..35abb76 --- /dev/null +++ b/Sprites/exp2_0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://ujw718ywd8u0" +path="res://.godot/imported/exp2_0.png-44152cc6931a7ec14bd09dd90235659d.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Sprites/exp2_0.png" +dest_files=["res://.godot/imported/exp2_0.png-44152cc6931a7ec14bd09dd90235659d.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/project.godot b/project.godot index 4976714..08b6eaa 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=5 [application] config/name="Dunkanoid" -config/version="1.0.1" +config/version="1.0.2" run/main_scene="res://Intro.tscn" config/features=PackedStringArray("4.2", "Forward Plus") run/max_fps=30