Added aliens and glow on the numbers

This commit is contained in:
2024-05-08 19:51:02 +01:00
parent 6e2721bef8
commit bff1c6864b
66 changed files with 1552 additions and 135 deletions

34
Alien.gd Normal file
View File

@@ -0,0 +1,34 @@
extends CharacterBody2D
class_name Alien
signal alien_died(value : int)
@export var hits : int = 5
@export var points : int = 500
func _ready() -> void:
$Sprite2D.play("default")
move_random()
func move_random() -> void:
velocity = Vector2(randf() - 0.5, randf() - 0.5).normalized() * 30
get_tree().create_timer(randf() * 3).timeout.connect(move_random)
func _physics_process(delta: float) -> void:
if position.y < 28:
position.y += delta * 30
else:
move_and_slide()
func hit() -> void:
hits -= 1
if hits <= 0:
alien_died.emit(points)
get_parent().call_deferred("remove_child", self)
call_deferred("queue_free")
else:
$AlienSound.play()
var tween = get_tree().create_tween()
$Sprite2D.modulate = Color(1, 1, 1, 0)
tween.tween_property($Sprite2D, "modulate", Color(1, 1, 1, 1), 0.3)

95
Alien.tscn Normal file
View File

@@ -0,0 +1,95 @@
[gd_scene load_steps=21 format=3 uid="uid://bob33k7lrnm6o"]
[ext_resource type="Script" path="res://Alien.gd" id="1_ciw1s"]
[ext_resource type="Texture2D" uid="uid://deqh06kv1anp5" path="res://Aliens/Tri/Tri-0001.png" id="2_1hklp"]
[ext_resource type="AudioStream" uid="uid://sfyq2erohryl" path="res://Sounds/AlienHit.wav" id="2_j1jdb"]
[ext_resource type="Texture2D" uid="uid://dsuvjulxsa5l" path="res://Aliens/Tri/Tri-0002.png" id="3_1x3cl"]
[ext_resource type="Texture2D" uid="uid://b8in8j4yaxowb" path="res://Aliens/Tri/Tri-0003.png" id="4_nyt8o"]
[ext_resource type="Texture2D" uid="uid://0upjpvbh4oeg" path="res://Aliens/Tri/Tri-0004.png" id="5_x2w4f"]
[ext_resource type="Texture2D" uid="uid://dpoftuxompm4s" path="res://Aliens/Tri/Tri-0005.png" id="6_bae3i"]
[ext_resource type="Texture2D" uid="uid://5pwc323g6n8c" path="res://Aliens/Tri/Tri-0006.png" id="7_vmnl7"]
[ext_resource type="Texture2D" uid="uid://btnvtnpebha76" path="res://Aliens/Tri/Tri-0007.png" id="8_06vyj"]
[ext_resource type="Texture2D" uid="uid://bhux6lxg17klj" path="res://Aliens/Tri/Tri-0008.png" id="9_juw8u"]
[ext_resource type="Texture2D" uid="uid://2q8t5flat6dl" path="res://Aliens/Tri/Tri-0009.png" id="10_ig0fr"]
[ext_resource type="Texture2D" uid="uid://bayl5uu7b1akh" path="res://Aliens/Tri/Tri-0010.png" id="11_pvk2s"]
[ext_resource type="Texture2D" uid="uid://d51nga80ks41" path="res://Aliens/Tri/Tri-0011.png" id="12_3racv"]
[ext_resource type="Texture2D" uid="uid://dlvu83w7pugwa" path="res://Aliens/Tri/Tri-0012.png" id="13_5ljjq"]
[ext_resource type="Texture2D" uid="uid://qrrrwetvtu3a" path="res://Aliens/Tri/Tri-0013.png" id="14_wewpv"]
[ext_resource type="Texture2D" uid="uid://i6e0y736pxql" path="res://Aliens/Tri/Tri-0014.png" id="15_arfuj"]
[ext_resource type="Texture2D" uid="uid://cguwuqqbomqx1" path="res://Aliens/Tri/Tri-0015.png" id="16_diyot"]
[ext_resource type="Texture2D" uid="uid://e8700wifkedm" path="res://Aliens/Tri/Tri-0016.png" id="17_8rd6i"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_kcrvk"]
size = Vector2(24, 24)
[sub_resource type="SpriteFrames" id="SpriteFrames_nevay"]
animations = [{
"frames": [{
"duration": 1.0,
"texture": ExtResource("2_1hklp")
}, {
"duration": 1.0,
"texture": ExtResource("3_1x3cl")
}, {
"duration": 1.0,
"texture": ExtResource("4_nyt8o")
}, {
"duration": 1.0,
"texture": ExtResource("5_x2w4f")
}, {
"duration": 1.0,
"texture": ExtResource("6_bae3i")
}, {
"duration": 1.0,
"texture": ExtResource("7_vmnl7")
}, {
"duration": 1.0,
"texture": ExtResource("8_06vyj")
}, {
"duration": 1.0,
"texture": ExtResource("9_juw8u")
}, {
"duration": 1.0,
"texture": ExtResource("10_ig0fr")
}, {
"duration": 1.0,
"texture": ExtResource("11_pvk2s")
}, {
"duration": 1.0,
"texture": ExtResource("12_3racv")
}, {
"duration": 1.0,
"texture": ExtResource("13_5ljjq")
}, {
"duration": 1.0,
"texture": ExtResource("14_wewpv")
}, {
"duration": 1.0,
"texture": ExtResource("15_arfuj")
}, {
"duration": 1.0,
"texture": ExtResource("16_diyot")
}, {
"duration": 1.0,
"texture": ExtResource("17_8rd6i")
}],
"loop": true,
"name": &"default",
"speed": 12.0
}]
[node name="Alien" type="CharacterBody2D"]
position = Vector2(64, 32)
collision_layer = 32
collision_mask = 16
script = ExtResource("1_ciw1s")
[node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("RectangleShape2D_kcrvk")
[node name="Sprite2D" type="AnimatedSprite2D" parent="."]
sprite_frames = SubResource("SpriteFrames_nevay")
[node name="AlienSound" type="AudioStreamPlayer" parent="."]
stream = ExtResource("2_j1jdb")
bus = &"Effects"

BIN
Aliens/Tri/Tri-0001.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://deqh06kv1anp5"
path="res://.godot/imported/Tri-0001.png-add91fcd7a06353d37f4d29009170085.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0001.png"
dest_files=["res://.godot/imported/Tri-0001.png-add91fcd7a06353d37f4d29009170085.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

BIN
Aliens/Tri/Tri-0002.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dsuvjulxsa5l"
path="res://.godot/imported/Tri-0002.png-07e567acb4608321964766495e6492a9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0002.png"
dest_files=["res://.godot/imported/Tri-0002.png-07e567acb4608321964766495e6492a9.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

BIN
Aliens/Tri/Tri-0003.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b8in8j4yaxowb"
path="res://.godot/imported/Tri-0003.png-b1a5ceccf6138637f097330d988dc7f4.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0003.png"
dest_files=["res://.godot/imported/Tri-0003.png-b1a5ceccf6138637f097330d988dc7f4.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

BIN
Aliens/Tri/Tri-0004.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://0upjpvbh4oeg"
path="res://.godot/imported/Tri-0004.png-f18fd6d4cdbff0987da377969c236304.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0004.png"
dest_files=["res://.godot/imported/Tri-0004.png-f18fd6d4cdbff0987da377969c236304.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

BIN
Aliens/Tri/Tri-0005.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dpoftuxompm4s"
path="res://.godot/imported/Tri-0005.png-74cb6ce197fa3f5bf3c377ebb93d3184.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0005.png"
dest_files=["res://.godot/imported/Tri-0005.png-74cb6ce197fa3f5bf3c377ebb93d3184.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

BIN
Aliens/Tri/Tri-0006.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://5pwc323g6n8c"
path="res://.godot/imported/Tri-0006.png-3ac9e8db2165119fccabceee0ff17491.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0006.png"
dest_files=["res://.godot/imported/Tri-0006.png-3ac9e8db2165119fccabceee0ff17491.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

BIN
Aliens/Tri/Tri-0007.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btnvtnpebha76"
path="res://.godot/imported/Tri-0007.png-cab1e046ee6b2bb20c8fe3713ce193c8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0007.png"
dest_files=["res://.godot/imported/Tri-0007.png-cab1e046ee6b2bb20c8fe3713ce193c8.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

BIN
Aliens/Tri/Tri-0008.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhux6lxg17klj"
path="res://.godot/imported/Tri-0008.png-0cdffe76aaafbf0f669005eda804fbfe.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0008.png"
dest_files=["res://.godot/imported/Tri-0008.png-0cdffe76aaafbf0f669005eda804fbfe.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

BIN
Aliens/Tri/Tri-0009.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://2q8t5flat6dl"
path="res://.godot/imported/Tri-0009.png-9648e2e371867637bc89616e26e46b23.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0009.png"
dest_files=["res://.godot/imported/Tri-0009.png-9648e2e371867637bc89616e26e46b23.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

BIN
Aliens/Tri/Tri-0010.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bayl5uu7b1akh"
path="res://.godot/imported/Tri-0010.png-6132c6d355dd292114c6158c50d421dd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0010.png"
dest_files=["res://.godot/imported/Tri-0010.png-6132c6d355dd292114c6158c50d421dd.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

BIN
Aliens/Tri/Tri-0011.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d51nga80ks41"
path="res://.godot/imported/Tri-0011.png-1764b09d0f5a85c6112aa8f0c71fe9ed.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0011.png"
dest_files=["res://.godot/imported/Tri-0011.png-1764b09d0f5a85c6112aa8f0c71fe9ed.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

BIN
Aliens/Tri/Tri-0012.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dlvu83w7pugwa"
path="res://.godot/imported/Tri-0012.png-f92231825c23ffbde964b7e9b2adfb4f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0012.png"
dest_files=["res://.godot/imported/Tri-0012.png-f92231825c23ffbde964b7e9b2adfb4f.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

BIN
Aliens/Tri/Tri-0013.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qrrrwetvtu3a"
path="res://.godot/imported/Tri-0013.png-972d1b6c47a35b932665ee4fceb39c4f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0013.png"
dest_files=["res://.godot/imported/Tri-0013.png-972d1b6c47a35b932665ee4fceb39c4f.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

BIN
Aliens/Tri/Tri-0014.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://i6e0y736pxql"
path="res://.godot/imported/Tri-0014.png-968ab6a7bdcad39d721097ae920e8656.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0014.png"
dest_files=["res://.godot/imported/Tri-0014.png-968ab6a7bdcad39d721097ae920e8656.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

BIN
Aliens/Tri/Tri-0015.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cguwuqqbomqx1"
path="res://.godot/imported/Tri-0015.png-6b6a34ae38c32dd6d88c17be06188759.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0015.png"
dest_files=["res://.godot/imported/Tri-0015.png-6b6a34ae38c32dd6d88c17be06188759.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

BIN
Aliens/Tri/Tri-0016.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://e8700wifkedm"
path="res://.godot/imported/Tri-0016.png-8b3e819334af3e34e7b38877035723d0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Aliens/Tri/Tri-0016.png"
dest_files=["res://.godot/imported/Tri-0016.png-8b3e819334af3e34e7b38877035723d0.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

View File

@@ -8,6 +8,7 @@ signal hit_brick(ball : Node, brick : Node)
signal hit_paddle(ball : Node)
signal hit_floor(ball : Node)
signal hit_wall(ball : Node)
signal hit_alien(ball : Node, alien : Node)
var captured : bool = false
var capture_object : Node2D
@@ -15,7 +16,7 @@ var capture_offset : Vector2 = Vector2.ZERO
var speed : float = 100
func _physics_process(delta: float) -> void:
func _physics_process(_delta: float) -> void:
# angular_velocity = 0
rotation = 0
if captured:
@@ -50,6 +51,10 @@ func release() -> void:
func _on_body_exited(body: Node) -> void:
if body is Alien:
body.hit()
hit_alien.emit(self, body)
return
if body is Brick:
if not body.visible:
return
@@ -81,7 +86,7 @@ func slowdown() -> void:
speed = 100
func _on_body_entered(body: Node) -> void:
func _on_body_entered(_body: Node) -> void:
pass # Replace with function body.
func enable_sparkles() -> void:
@@ -89,3 +94,6 @@ func enable_sparkles() -> void:
func disable_sparkles() -> void:
$CPUParticles2D.emitting = false
func is_sparkles() -> bool:
return $CPUParticles2D.emitting

View File

@@ -14,8 +14,8 @@ radius = 3.0
colors = PackedColorArray(1, 1, 0, 1, 1, 1, 0, 0)
[node name="Ball" type="RigidBody2D"]
collision_layer = 4
collision_mask = 5
collision_layer = 8
collision_mask = 37
mass = 0.01
physics_material_override = ExtResource("1_vk3rj")
gravity_scale = 0.0

View File

@@ -47,7 +47,7 @@ func _show_block() -> void:
tween.tween_property($TextureRect, "modulate", original_color, 0.25)
visible = true
if not pass_mode:
collision_layer = 1
collision_layer = 0b10001
func type(base : int, color : Color) -> void:
@@ -78,15 +78,13 @@ func type(base : int, color : Color) -> void:
func _on_area_2d_body_entered(body: Node2D) -> void:
if not pass_mode: return
if body is Ball:
print("Area hit ball")
body._on_body_exited(self)
pass # Replace with function body.
func enable_pass() -> void:
collision_layer = 0
collision_layer = 0b10000
pass_mode = true
func disable_pass() -> void:
if visible:
collision_layer = 1
collision_layer = 0b10001
pass_mode = false

View File

@@ -11,6 +11,8 @@ size = Vector2(32, 16)
size = Vector2(32, 16)
[node name="Brick" type="StaticBody2D"]
collision_layer = 17
collision_mask = 17
input_pickable = true
physics_material_override = ExtResource("1_it5u2")
script = ExtResource("1_eylhu")
@@ -38,8 +40,8 @@ texture = ExtResource("2_v230s")
stretch_mode = 2
[node name="Area2D" type="Area2D" parent="."]
collision_layer = 4
collision_mask = 4
collision_layer = 8
collision_mask = 8
[node name="CollisionShape2D" type="CollisionShape2D" parent="Area2D"]
shape = SubResource("RectangleShape2D_wi5j7")

View File

@@ -3,6 +3,27 @@ extends Node2D
var _Brick = preload("res://Brick/Brick.tscn")
var _Ball = preload("res://Ball/Ball.tscn")
var _Upgrade = preload("res://Upgrade/Upgrade.tscn")
var _Alien = preload("res://Alien.tscn")
@onready var ScoreNode = $ScoreCard/Score/ScoreBox
@onready var LivesNode = $ScoreCard/Lives/LivesBox
@onready var RunTimeNode = $ScoreCard/RunTime/RunTime
@onready var BestTimeNode = $ScoreCard/BestTime/BestTime
@onready var BricksNode = $Bricks
@onready var BackgroundNode = $Background
@onready var PaddleNode = $Paddle
@onready var PipesNode = $Pipes
@onready var AliensNode = $Aliens
@onready var RunTimerNode = $RunTimer
@onready var NewBestNode = $NewBestTime
@onready var NewBestTimeNode = $NewBestTime/HBoxContainer/BestTime
@onready var StartTitleNode = $Start/VBoxContainer/PanelContainer/VBoxContainer/Title
@onready var StartRoundNode = $Start/VBoxContainer/PanelContainer/VBoxContainer/Round
@onready var StartNode = $Start
@onready var PowerballTimerNode = $PowerBallTimer
@onready var FloorSoundNode = $Sounds/FloorSound
@onready var UpgradeSoundNode = $Sounds/UpgradeCollected
@onready var AlienDieSoundNode = $Sounds/AlienDie
var bricks : Array = []
var balls : Array[Node] = []
@@ -42,44 +63,51 @@ func _ready() -> void:
new_level()
Music.play_game()
var opened: bool = false
func _process(delta : float) -> void:
if OS.has_feature("editor"):
if Input.is_action_just_pressed("cheat"):
for i in 10:
spawn_alien()
for i in 50:
add_ball()
if mode == MODE_EXIT:
if $Paddle.global_position.x - ($Paddle.width / 2) <= 20:
if PaddleNode.global_position.x - (PaddleNode.width / 2) <= 20:
level = level_data.left
leave(-1)
if $Paddle.global_position.x + ($Paddle.width / 2) >= 412:
if PaddleNode.global_position.x + (PaddleNode.width / 2) >= 412:
level = level_data.right
leave(+1)
if mode == MODE_LEAVE:
$Paddle.global_position.x += (delta * leave_direction * 20.0)
if $Paddle.global_position.x < -16 or $Paddle.global_position.x > 428:
PaddleNode.global_position.x += (delta * leave_direction * 20.0)
if PaddleNode.global_position.x < -16 or PaddleNode.global_position.x > 462:
if opened:
PipesNode.close_door(Pipes.BOTTOM_LEFT)
PipesNode.close_door(Pipes.BOTTOM_RIGHT)
opened = false
if not Music.jingle_playing:
new_level()
else:
if Input.is_action_pressed("left"):
var leftmost = 16 + $Paddle.width / 2
$Paddle.position.x -= delta * PADDLE_SPEED
$Paddle.position.y = 340
if $Paddle.position.x < leftmost:
$Paddle.position.x = leftmost
var leftmost = 16 + PaddleNode.width / 2
PaddleNode.position.x -= delta * PADDLE_SPEED
PaddleNode.position.y = 340
if PaddleNode.position.x < leftmost:
PaddleNode.position.x = leftmost
if Input.is_action_pressed("right"):
var rightmost = 432 - $Paddle.width / 2
$Paddle.position.x += delta * PADDLE_SPEED
$Paddle.position.y = 340
if $Paddle.position.x > rightmost:
$Paddle.position.x = rightmost
var rightmost = 432 - PaddleNode.width / 2
PaddleNode.position.x += delta * PADDLE_SPEED
PaddleNode.position.y = 340
if PaddleNode.position.x > rightmost:
PaddleNode.position.x = rightmost
if Input.is_action_just_pressed("fire"):
if mode == MODE_PLAY:
if level_starting:
level_starting = false
$RunTimer.start()
RunTimerNode.start()
time_run = true
for ball in balls:
if (ball.captured):
@@ -87,7 +115,7 @@ func _process(delta : float) -> void:
if time_run:
$ScoreCard/RunTime.text = "%02d:%05.2f" % [$RunTimer.elapsed_time / 60000, $RunTimer.elapsed_time % 60000 / 1000.0]
RunTimeNode.text = "%02d:%05.2f" % [RunTimerNode.elapsed_time / 60000, RunTimerNode.elapsed_time % 60000 / 1000.0]
func leave(dir : int) -> void:
@@ -95,37 +123,38 @@ func leave(dir : int) -> void:
leave_direction = dir
func new_level() -> void:
$NewBestTime.visible = false
NewBestNode.visible = false
time_run = false
level_starting = true
$Paddle.normal()
$Paddle.position.x = 224
PaddleNode.normal()
PaddleNode.position.x = 224
mode = MODE_WAIT
$Exits.visible = false
for ball in balls:
if ball.get_parent() != self:
print("For some reason this ball's parent has got lost")
remove_child(ball)
ball.queue_free()
balls.clear()
for brick in bricks:
$Bricks.remove_child(brick)
BricksNode.remove_child(brick)
brick.queue_free()
bricks.clear()
chr += 1
level_data = load_level_from_disk(level)
$ScoreCard/BestTime.text = format_time(Global.get_best_time(level_data.name))
$Start/VBoxContainer/PanelContainer/VBoxContainer/Title.text = level
$Start/VBoxContainer/PanelContainer/VBoxContainer/Round.text = "ROUND %3d" % [chr]
$Background.texture = load("res://Backgrounds/%s.png" % level_data.background)
$Background.modulate = Color("#%s" % level_data.get("tint", "FFFFFF"))
BestTimeNode.text = format_time(Global.get_best_time(level_data.name))
StartTitleNode.text = level
StartRoundNode.text = "ROUND %3d" % [chr]
BackgroundNode.texture = load("res://Backgrounds/%s.png" % level_data.background)
BackgroundNode.modulate = Color("#%s" % level_data.get("tint", "FFFFFF"))
load_level(level_data.data)
var ball = _Ball.instantiate()
ball.capture($Paddle, Vector2((randf() * 32) - 16, 8))
ball.capture(PaddleNode, Vector2((randf() * 32) - 16, 8))
ball.hit_paddle.connect(_on_hit_paddle)
ball.hit_floor.connect(_on_hit_floor)
add_child(ball)
balls.push_back(ball)
$Start.visible = true
StartNode.visible = true
Music.jingle_finished.connect(_on_start_round_finished)
Music.jingle(Music.JINGLE_LEVEL_START)
@@ -148,7 +177,7 @@ func _brick_destroyed(brick) -> void:
upgrade.set_upgrade("R", Color.LIGHT_CORAL)
5:
upgrade.set_upgrade("P", Color.AQUAMARINE)
add_child(upgrade)
call_deferred("add_child", upgrade)
bricks.erase(brick)
var brick_count = 0
for abrick in bricks:
@@ -157,30 +186,36 @@ func _brick_destroyed(brick) -> void:
if brick_count == 0:
for ball in balls:
remove_child(ball)
ball.queue_free()
call_deferred("remove_child", ball)
ball.call_deferred("queue_free")
balls.clear()
for c in get_children():
if c is Upgrade:
remove_child(c)
c.queue_free()
call_deferred("remove_child", c)
c.call_deferred("queue_free")
for c in AliensNode.get_children():
AliensNode.call_deferred("remove_child", c)
c.call_deferred("queue_free")
mode = MODE_EXIT
$Exits.visible = true
PipesNode.open_door(Pipes.BOTTOM_LEFT)
PipesNode.open_door(Pipes.BOTTOM_RIGHT)
opened = true
Music.jingle(Music.JINGLE_LEVEL_WON)
var elapsed = $RunTimer.elapsed_time
var elapsed = RunTimerNode.elapsed_time
var best = Global.get_best_time(level_data.name)
if elapsed < best:
Global.set_best_time(level_data.name, elapsed)
$RunTimer.pause()
$NewBestTime/BestTime.text = format_time(elapsed)
$NewBestTime.visible = true
RunTimerNode.pause()
NewBestTimeNode.text = format_time(elapsed)
NewBestNode.visible = true
func format_time(time : int) -> String:
if time > 3600000:
return "--:--.--"
return "%02d:%05.2f" % [time / 60000, time % 60000 / 1000.0]
return "%02d:%05.2f" % [int(time / 60000.0), time % 60000 / 1000.0]
func _input(event: InputEvent) -> void:
if paused:
@@ -188,20 +223,20 @@ func _input(event: InputEvent) -> void:
if event is InputEventMouseMotion:
if mode != MODE_LEAVE:
if Global.relative_mouse:
var leftmost = 16 + $Paddle.width / 2
var rightmost = 432 - $Paddle.width / 2
$Paddle.position.x += event.relative.x
$Paddle.position.y = 340
if $Paddle.position.x < leftmost:
$Paddle.position.x = leftmost
if $Paddle.position.x > rightmost:
$Paddle.position.x = rightmost
var leftmost = 16 + PaddleNode.width / 2
var rightmost = 432 - PaddleNode.width / 2
PaddleNode.position.x += event.relative.x
PaddleNode.position.y = 340
if PaddleNode.position.x < leftmost:
PaddleNode.position.x = leftmost
if PaddleNode.position.x > rightmost:
PaddleNode.position.x = rightmost
else:
$Paddle.position = Vector2(min(max(16 + $Paddle.width/2, event.position.x), 432-$Paddle.width/2), 340)
PaddleNode.position = Vector2(min(max(16 + PaddleNode.width/2, event.position.x), 432-PaddleNode.width/2), 340)
if event is InputEventMouseButton:
if mode == MODE_PLAY:
if level_starting:
$RunTimer.start()
RunTimerNode.start()
level_starting = false
time_run = true
@@ -210,30 +245,30 @@ func _input(event: InputEvent) -> void:
ball.release()
func _on_hit_paddle(ball) -> void:
if $Paddle.is_capture():
var diff = $Paddle.global_position.x - ball.global_position.x
ball.capture($Paddle, Vector2(diff, 8))
if PaddleNode.is_capture():
var diff = PaddleNode.global_position.x - ball.global_position.x
ball.capture(PaddleNode, Vector2(diff, 8))
func _on_hit_floor(ball) -> void:
$Sounds/FloorSound.play()
FloorSoundNode.play()
balls.erase(ball)
remove_child(ball)
call_deferred("remove_child", ball)
ball.call_deferred("queue_free")
if balls.size() == 0:
for c in get_children():
if c is Upgrade:
remove_child(c)
c.queue_free()
$Paddle.normal()
PaddleNode.normal()
ball = _Ball.instantiate()
ball.capture($Paddle, Vector2((randf() * 32) - 16, 8))
ball.capture(PaddleNode, Vector2((randf() * 32) - 16, 8))
ball.hit_paddle.connect(_on_hit_paddle)
ball.hit_floor.connect(_on_hit_floor)
add_child(ball)
balls.push_back(ball)
Music.jingle_finished.connect(_on_start_round_finished)
Music.jingle(Music.JINGLE_LEVEL_START)
$Start.visible = true
StartNode.visible = true
mode = MODE_WAIT
lives -= 1
if lives <= 0:
@@ -245,14 +280,14 @@ func _on_round_won_finished() -> void:
func _on_update_score(score) -> void:
$ScoreCard/ScoreBox.text = "%08d" % score
ScoreNode.text = "%08d" % score
pass # Replace with function body.
func _on_upgrade_collected(code : String) -> void:
$Sounds/UpgradeCollected.play()
UpgradeSoundNode.play()
match code:
"C":
$Paddle.capture()
PaddleNode.capture()
"T":
add_ball()
add_ball()
@@ -260,9 +295,9 @@ func _on_upgrade_collected(code : String) -> void:
for ball in balls:
ball.slowdown()
"E":
$Paddle.big()
PaddleNode.big()
"R":
$Paddle.small()
PaddleNode.small()
"P":
start_powerball()
@@ -276,9 +311,11 @@ func add_ball() -> void:
newball.hit_paddle.connect(_on_hit_paddle)
newball.hit_floor.connect(_on_hit_floor)
newball.speed = balls[0].speed
if balls[0].is_sparkles():
newball.enable_sparkles()
if balls[0].captured:
newball.capture($Paddle, Vector2((randf() - 0.5) * 32, 8))
add_child(newball)
newball.capture(PaddleNode, Vector2((randf() - 0.5) * 32, 8))
call_deferred("add_child", newball)
balls.push_back(newball)
@@ -319,21 +356,21 @@ func load_level(data) -> void:
brick.position = Vector2(x * 32 + 16 + 16, y * 16 + 8 + 16)
bricks.push_back(brick)
brick.brick_destroyed.connect(_brick_destroyed)
$Bricks.add_child(brick)
BricksNode.add_child(brick)
func _on_start_round_finished(item : int) -> void:
func _on_start_round_finished(_item : int) -> void:
Music.jingle_finished.disconnect(_on_start_round_finished)
$Start.visible = false
StartNode.visible = false
mode = MODE_PLAY
func _on_update_lives() -> void:
$ScoreCard/LivesBox.text = "%d" % lives
LivesNode.text = "%d" % lives
func load_level_from_disk(name : String) -> Dictionary:
if FileAccess.file_exists("user://Levels/%s.json" % name):
return JSON.parse_string(FileAccess.get_file_as_string("user://Levels/%s.json" % name))
if FileAccess.file_exists("res://Levels/%s.json" % name):
return JSON.parse_string(FileAccess.get_file_as_string("res://Levels/%s.json" % name))
func load_level_from_disk(lname : String) -> Dictionary:
if FileAccess.file_exists("user://Levels/%s.json" % lname):
return JSON.parse_string(FileAccess.get_file_as_string("user://Levels/%s.json" % lname))
if FileAccess.file_exists("res://Levels/%s.json" % lname):
return JSON.parse_string(FileAccess.get_file_as_string("res://Levels/%s.json" % lname))
return JSON.parse_string(FileAccess.get_file_as_string("res://Levels/NOTFOUND.json"))
func _on_paddle_effect_finished(effect: int) -> void:
@@ -345,16 +382,53 @@ func _on_paddle_effect_finished(effect: int) -> void:
func start_powerball() -> void:
for ball in balls:
ball.enable_sparkles()
for brick in $Bricks.get_children():
for brick in BricksNode.get_children():
brick.enable_pass()
$PowerBallTimer.start(10)
PowerballTimerNode.start(10)
func stop_powerball() -> void:
for ball in balls:
ball.disable_sparkles()
for brick in $Bricks.get_children():
for brick in BricksNode.get_children():
brick.disable_pass()
func _on_power_ball_timer_timeout() -> void:
stop_powerball()
func spawn_alien() -> void:
if AliensNode.get_child_count() < 3:
var door : int = Pipes.TOP_LEFT if randf() < 0.5 else Pipes.TOP_RIGHT
PipesNode.open_door(door)
func _on_pipes_door_opened(door) -> void:
match door:
Pipes.TOP_LEFT:
var alien = _Alien.instantiate()
alien.position = Vector2(128, -12)
alien.velocity = Vector2(0, 50)
alien.alien_died.connect(_alien_died)
AliensNode.add_child(alien)
get_tree().create_timer(2).timeout.connect(_close_top_left)
pass
Pipes.TOP_RIGHT:
var alien = _Alien.instantiate()
alien.position = Vector2(320, -12)
alien.velocity = Vector2(0, 50)
alien.alien_died.connect(_alien_died)
AliensNode.add_child(alien)
get_tree().create_timer(2).timeout.connect(_close_top_right)
pass
func _close_top_left() -> void:
PipesNode.close_door(Pipes.TOP_LEFT)
func _close_top_right() -> void:
PipesNode.close_door(Pipes.TOP_RIGHT)
func _on_alien_timer_timeout() -> void:
spawn_alien()
func _alien_died(points : int) -> void:
Global.score += points
AlienDieSoundNode.play()

View File

@@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://4q0epdnb0x4s"]
[gd_scene load_steps=27 format=3 uid="uid://4q0epdnb0x4s"]
[ext_resource type="Script" path="res://Dunkanoid.gd" id="1_kv4if"]
[ext_resource type="PackedScene" uid="uid://dndemjw7up2r6" path="res://Paddle/Paddle.tscn" id="2_26c5i"]
@@ -9,9 +9,19 @@
[ext_resource type="PhysicsMaterial" uid="uid://cql6t5hd40fgn" path="res://CorePhysics.tres" id="7_300m5"]
[ext_resource type="AudioStream" uid="uid://bojc0es7165ed" path="res://Sounds/Collected.wav" id="8_fpbsr"]
[ext_resource type="Theme" uid="uid://cfvww0geatnnk" path="res://MainTheme.tres" id="8_wcf7g"]
[ext_resource type="AudioStream" uid="uid://cpf0y72o6wrv2" path="res://Sounds/AlienDie.wav" id="9_lt28f"]
[ext_resource type="Material" uid="uid://bv4vhjg83fqpn" path="res://ArkanoidMaterial.tres" id="9_ouuij"]
[ext_resource type="Script" path="res://Paused.gd" id="12_8qv0d"]
[ext_resource type="Script" path="res://RunTimer.gd" id="12_nyw3s"]
[ext_resource type="Script" path="res://Pipes.gd" id="13_12te1"]
[ext_resource type="Texture2D" uid="uid://biqt5k34w683i" path="res://Pipes/vPipe.png" id="14_33cmo"]
[ext_resource type="Texture2D" uid="uid://cg5olju1mcceh" path="res://Pipes/hPipe.png" id="15_n2p48"]
[ext_resource type="Texture2D" uid="uid://bh8om6bv1qumy" path="res://Pipes/vPipeEndLow.png" id="16_osyku"]
[ext_resource type="Texture2D" uid="uid://n81u6nrroi18" path="res://Pipes/CornerTopLeft.png" id="17_jvxfq"]
[ext_resource type="Texture2D" uid="uid://btiaapyjul68s" path="res://Pipes/CornerTopRight.png" id="18_2ed71"]
[ext_resource type="Texture2D" uid="uid://1ar54kb0l0sm" path="res://Pipes/vPipeEndHigh.png" id="19_6cngp"]
[ext_resource type="Texture2D" uid="uid://bj28rs6816gn8" path="res://Pipes/hPipeEndLeft.png" id="20_fr68l"]
[ext_resource type="Texture2D" uid="uid://dnm2slmsm5wnw" path="res://Pipes/hPipeEndRight.png" id="21_hha8q"]
[sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_jsudl"]
normal = Vector2(0, 1)
@@ -47,6 +57,8 @@ input_pickable = false
physics_material_override = null
[node name="Wall" type="StaticBody2D" parent="."]
collision_layer = 17
collision_mask = 17
physics_material_override = ExtResource("7_300m5")
script = ExtResource("4_evt42")
@@ -60,7 +72,8 @@ shape = SubResource("WorldBoundaryShape2D_3e48c")
shape = SubResource("WorldBoundaryShape2D_jt2f6")
[node name="Floor" type="StaticBody2D" parent="."]
collision_layer = 3
collision_layer = 19
collision_mask = 17
script = ExtResource("5_sravy")
[node name="Bottom" type="CollisionShape2D" parent="Floor"]
@@ -76,33 +89,9 @@ bus = &"Effects"
stream = ExtResource("8_fpbsr")
bus = &"Effects"
[node name="ColorRect" type="ColorRect" parent="."]
offset_right = 16.0
offset_bottom = 360.0
[node name="ColorRect2" type="ColorRect" parent="."]
offset_left = 432.0
offset_right = 448.0
offset_bottom = 360.0
[node name="ColorRect3" type="ColorRect" parent="."]
offset_right = 432.0
offset_bottom = 16.0
[node name="Exits" type="Node2D" parent="."]
[node name="Left" type="ColorRect" parent="Exits"]
offset_top = 312.0
offset_right = 16.0
offset_bottom = 360.0
color = Color(0, 0, 1, 1)
[node name="Right" type="ColorRect" parent="Exits"]
offset_left = 432.0
offset_top = 312.0
offset_right = 448.0
offset_bottom = 360.0
color = Color(0, 0, 1, 1)
[node name="AlienDie" type="AudioStreamPlayer" parent="Sounds"]
stream = ExtResource("9_lt28f")
bus = &"Effects"
[node name="ColorRect4" type="ColorRect" parent="."]
offset_left = 448.0
@@ -113,11 +102,12 @@ color = Color(0, 0, 0, 1)
[node name="Bricks" type="Node2D" parent="."]
[node name="Aliens" type="Node2D" parent="."]
[node name="RunTimer" type="Node" parent="."]
script = ExtResource("12_nyw3s")
[node name="NewBestTime" type="VBoxContainer" parent="."]
visible = false
offset_right = 448.0
offset_bottom = 360.0
@@ -133,14 +123,27 @@ text = "NEW BEST TIME"
horizontal_alignment = 1
vertical_alignment = 1
[node name="BestTime" type="Label" parent="NewBestTime"]
[node name="HBoxContainer" type="HBoxContainer" parent="NewBestTime"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="NewBestTime/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="BestTime" type="Label" parent="NewBestTime/HBoxContainer"]
layout_mode = 2
theme = ExtResource("8_wcf7g")
theme_type_variation = &"Numbers"
text = "00:00"
text = "00:00.00"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="NewBestTime/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="VSeparator2" type="VSeparator" parent="NewBestTime"]
layout_mode = 2
size_flags_vertical = 3
@@ -149,7 +152,7 @@ theme = ExtResource("8_wcf7g")
[node name="ScoreCard" type="VBoxContainer" parent="."]
offset_left = 448.0
offset_top = 40.0
offset_right = 640.0
offset_right = 641.0
offset_bottom = 312.0
[node name="ScoreLabel" type="Label" parent="ScoreCard"]
@@ -159,7 +162,15 @@ text = "SCORE"
horizontal_alignment = 1
vertical_alignment = 1
[node name="ScoreBox" type="Label" parent="ScoreCard"]
[node name="Score" type="HBoxContainer" parent="ScoreCard"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="ScoreCard/Score"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="ScoreBox" type="Label" parent="ScoreCard/Score"]
layout_mode = 2
theme = ExtResource("8_wcf7g")
theme_type_variation = &"Numbers"
@@ -167,6 +178,11 @@ text = "00000000"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="ScoreCard/Score"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="VSeparator" type="VSeparator" parent="ScoreCard"]
layout_mode = 2
size_flags_vertical = 3
@@ -179,7 +195,15 @@ text = "LIVES"
horizontal_alignment = 1
vertical_alignment = 1
[node name="LivesBox" type="Label" parent="ScoreCard"]
[node name="Lives" type="HBoxContainer" parent="ScoreCard"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="ScoreCard/Lives"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="LivesBox" type="Label" parent="ScoreCard/Lives"]
layout_mode = 2
theme = ExtResource("8_wcf7g")
theme_type_variation = &"Numbers"
@@ -187,6 +211,11 @@ text = "3"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="ScoreCard/Lives"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="VSeparator2" type="VSeparator" parent="ScoreCard"]
layout_mode = 2
size_flags_vertical = 3
@@ -199,7 +228,15 @@ text = "TIME"
horizontal_alignment = 1
vertical_alignment = 1
[node name="RunTime" type="Label" parent="ScoreCard"]
[node name="RunTime" type="HBoxContainer" parent="ScoreCard"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="ScoreCard/RunTime"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="RunTime" type="Label" parent="ScoreCard/RunTime"]
layout_mode = 2
theme = ExtResource("8_wcf7g")
theme_type_variation = &"Numbers"
@@ -207,6 +244,11 @@ text = "00:00.00"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="ScoreCard/RunTime"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="VSeparator3" type="VSeparator" parent="ScoreCard"]
layout_mode = 2
size_flags_vertical = 3
@@ -219,7 +261,15 @@ text = "BEST TIME"
horizontal_alignment = 1
vertical_alignment = 1
[node name="BestTime" type="Label" parent="ScoreCard"]
[node name="BestTime" type="HBoxContainer" parent="ScoreCard"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="ScoreCard/BestTime"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="BestTime" type="Label" parent="ScoreCard/BestTime"]
layout_mode = 2
theme = ExtResource("8_wcf7g")
theme_type_variation = &"Numbers"
@@ -227,6 +277,11 @@ text = "00:00.00"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="ScoreCard/BestTime"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("8_wcf7g")
[node name="Start" type="Node2D" parent="."]
[node name="VBoxContainer" type="VBoxContainer" parent="Start"]
@@ -328,7 +383,182 @@ theme = ExtResource("8_wcf7g")
[node name="PowerBallTimer" type="Timer" parent="."]
one_shot = true
[node name="Pipes" type="Node2D" parent="."]
script = ExtResource("13_12te1")
[node name="LeftDoor" type="TextureRect" parent="Pipes"]
offset_top = 312.0
offset_right = 16.0
offset_bottom = 360.0
texture = ExtResource("14_33cmo")
metadata/open = Vector2(0, 265)
metadata/closed = Vector2(0, 312)
[node name="RightDoor" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_top = 312.0
offset_right = 448.0
offset_bottom = 360.0
texture = ExtResource("14_33cmo")
metadata/open = Vector2(432, 265)
metadata/closed = Vector2(432, 312)
[node name="TopDoor1L" type="TextureRect" parent="Pipes"]
offset_left = 112.0
offset_right = 128.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
metadata/open = Vector2(96, 0)
metadata/closed = Vector2(112, 0)
[node name="TopDoor1R" type="TextureRect" parent="Pipes"]
offset_left = 128.0
offset_right = 144.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
metadata/open = Vector2(144, 0)
metadata/closed = Vector2(128, 0)
[node name="TopDoor2L" type="TextureRect" parent="Pipes"]
offset_left = 304.0
offset_right = 320.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
metadata/open = Vector2(288, 0)
metadata/closed = Vector2(304, 0)
[node name="TopDoor2R" type="TextureRect" parent="Pipes"]
offset_left = 320.0
offset_right = 336.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
metadata/open = Vector2(336, 0)
metadata/closed = Vector2(320, 0)
[node name="LeftWall" type="TextureRect" parent="Pipes"]
offset_top = 16.0
offset_right = 16.0
offset_bottom = 296.0
texture = ExtResource("14_33cmo")
[node name="RightWall" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_top = 16.0
offset_right = 448.0
offset_bottom = 296.0
texture = ExtResource("14_33cmo")
[node name="LeftLowEnd" type="TextureRect" parent="Pipes"]
offset_top = 296.0
offset_right = 16.0
offset_bottom = 312.0
texture = ExtResource("16_osyku")
[node name="RightLowEnd" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_top = 296.0
offset_right = 448.0
offset_bottom = 312.0
texture = ExtResource("16_osyku")
[node name="LeftCorner" type="TextureRect" parent="Pipes"]
offset_right = 16.0
offset_bottom = 16.0
texture = ExtResource("17_jvxfq")
[node name="RightCorner" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_right = 448.0
offset_bottom = 16.0
texture = ExtResource("18_2ed71")
[node name="LeftJoin1" type="TextureRect" parent="Pipes"]
offset_top = 96.0
offset_right = 16.0
offset_bottom = 112.0
texture = ExtResource("16_osyku")
[node name="LeftJoin15" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_top = 162.0
offset_right = 448.0
offset_bottom = 178.0
texture = ExtResource("16_osyku")
[node name="LeftJoin2" type="TextureRect" parent="Pipes"]
offset_top = 16.0
offset_right = 16.0
offset_bottom = 32.0
texture = ExtResource("19_6cngp")
[node name="LeftJoin16" type="TextureRect" parent="Pipes"]
offset_left = 432.0
offset_top = 16.0
offset_right = 448.0
offset_bottom = 32.0
texture = ExtResource("19_6cngp")
[node name="LeftJoin3" type="TextureRect" parent="Pipes"]
offset_left = 16.0
offset_right = 32.0
offset_bottom = 16.0
texture = ExtResource("20_fr68l")
[node name="LeftJoin5" type="TextureRect" parent="Pipes"]
offset_left = 144.0
offset_right = 160.0
offset_bottom = 16.0
texture = ExtResource("20_fr68l")
[node name="LeftJoin11" type="TextureRect" parent="Pipes"]
offset_left = 336.0
offset_right = 352.0
offset_bottom = 16.0
texture = ExtResource("20_fr68l")
[node name="LeftJoin6" type="TextureRect" parent="Pipes"]
offset_left = 96.0
offset_right = 112.0
offset_bottom = 16.0
texture = ExtResource("21_hha8q")
[node name="LeftJoin9" type="TextureRect" parent="Pipes"]
offset_left = 288.0
offset_right = 304.0
offset_bottom = 16.0
texture = ExtResource("21_hha8q")
[node name="LeftJoin4" type="TextureRect" parent="Pipes"]
offset_left = 32.0
offset_right = 96.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
[node name="LeftJoin8" type="TextureRect" parent="Pipes"]
offset_left = 160.0
offset_right = 288.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
[node name="LeftJoin12" type="TextureRect" parent="Pipes"]
offset_left = 352.0
offset_right = 416.0
offset_bottom = 16.0
texture = ExtResource("15_n2p48")
[node name="LeftJoin17" type="TextureRect" parent="Pipes"]
offset_left = 416.0
offset_right = 432.0
offset_bottom = 16.0
texture = ExtResource("21_hha8q")
[node name="AlienTimer" type="Timer" parent="."]
wait_time = 30.0
autostart = true
[connection signal="update_lives" from="." to="." method="_on_update_lives"]
[connection signal="effect_finished" from="Paddle" to="." method="_on_paddle_effect_finished"]
[connection signal="pressed" from="Paused/VBoxContainer/HBoxContainer/Quit" to="Paused" method="_on_quit_pressed"]
[connection signal="timeout" from="PowerBallTimer" to="." method="_on_power_ball_timer_timeout"]
[connection signal="door_opened" from="Pipes" to="." method="_on_pipes_door_opened"]
[connection signal="timeout" from="AlienTimer" to="." method="_on_alien_timer_timeout"]

View File

@@ -43,7 +43,15 @@ text = "Score"
horizontal_alignment = 1
vertical_alignment = 1
[node name="ScoreBox" type="Label" parent="VBoxContainer"]
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"]
layout_mode = 2
[node name="HSeparator" type="HSeparator" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("3_km2fx")
[node name="ScoreBox" type="Label" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
theme = ExtResource("3_km2fx")
theme_type_variation = &"Numbers"
@@ -51,6 +59,11 @@ text = "00000000"
horizontal_alignment = 1
vertical_alignment = 1
[node name="HSeparator2" type="HSeparator" parent="VBoxContainer/HBoxContainer"]
layout_mode = 2
size_flags_horizontal = 3
theme = ExtResource("3_km2fx")
[node name="VSeparator3" type="VSeparator" parent="VBoxContainer"]
layout_mode = 2
size_flags_vertical = 3

View File

@@ -48,8 +48,8 @@ func _ready() -> void:
else:
highscore = 0
relative_mouse = true
music_volume = AudioServer.get_bus_volume_db(1)
effects_volume = AudioServer.get_bus_volume_db(2)
music_volume = int(AudioServer.get_bus_volume_db(1))
effects_volume = int(AudioServer.get_bus_volume_db(2))
best_times = {}
_loading = false

View File

@@ -1,4 +1,4 @@
[gd_resource type="Theme" load_steps=16 format=3 uid="uid://cfvww0geatnnk"]
[gd_resource type="Theme" load_steps=17 format=3 uid="uid://cfvww0geatnnk"]
[ext_resource type="FontFile" uid="uid://dfkm2dibf0c3b" path="res://Fonts/fonts-DSEG_v046/DSEG7-Classic-MINI/DSEG7ClassicMini-Italic.ttf" id="1_17to7"]
[ext_resource type="FontFile" uid="uid://bx41ej4o03nbx" path="res://Fonts/arkanoid/Arka_solid.ttf" id="1_s07ae"]
@@ -85,6 +85,15 @@ corner_radius_top_right = 3
corner_radius_bottom_right = 3
corner_radius_bottom_left = 3
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_8xhb1"]
bg_color = Color(0.6, 0.6, 0.6, 0)
corner_radius_top_left = 40
corner_radius_top_right = 40
corner_radius_bottom_right = 40
corner_radius_bottom_left = 40
shadow_color = Color(0.909804, 0.584314, 0.207843, 0.235294)
shadow_size = 10
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_sf0ln"]
bg_color = Color(0, 0, 0, 1)
@@ -138,6 +147,7 @@ Numbers/constants/shadow_offset_y = 0
Numbers/constants/shadow_outline_size = 3
Numbers/font_sizes/font_size = 18
Numbers/fonts/font = ExtResource("1_17to7")
Numbers/styles/normal = SubResource("StyleBoxFlat_8xhb1")
PanelContainer/styles/panel = SubResource("StyleBoxFlat_sf0ln")
RoundStart/base_type = &"PanelContainer"
RoundStart/styles/panel = SubResource("StyleBoxFlat_mruxx")

81
Pipes.gd Normal file
View File

@@ -0,0 +1,81 @@
extends Node2D
class_name Pipes
signal door_opened(door : int)
signal door_closed(door : int)
enum {
TOP_LEFT,
TOP_RIGHT,
BOTTOM_LEFT,
BOTTOM_RIGHT
}
func open_door(door : int) -> void:
match door:
TOP_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor1L, "position", $TopDoor1L.get_meta("open"), 1)
tween.tween_property($TopDoor1R, "position", $TopDoor1R.get_meta("open"), 1)
tween.finished.connect(_top_left_opened)
TOP_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor2L, "position", $TopDoor2L.get_meta("open"), 1)
tween.tween_property($TopDoor2R, "position", $TopDoor2R.get_meta("open"), 1)
tween.finished.connect(_top_right_opened)
BOTTOM_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($LeftDoor, "position", $LeftDoor.get_meta("open"), 1)
tween.finished.connect(_bottom_left_opened)
BOTTOM_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($RightDoor, "position", $RightDoor.get_meta("open"), 1)
tween.finished.connect(_bottom_right_opened)
func _top_left_opened() -> void:
door_opened.emit(TOP_LEFT)
func _top_right_opened() -> void:
door_opened.emit(TOP_RIGHT)
func _bottom_left_opened() -> void:
door_opened.emit(BOTTOM_LEFT)
func _bottom_right_opened() -> void:
door_opened.emit(BOTTOM_LEFT)
func close_door(door : int) -> void:
match door:
TOP_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor1L, "position", $TopDoor1L.get_meta("closed"), 1)
tween.tween_property($TopDoor1R, "position", $TopDoor1R.get_meta("closed"), 1)
tween.finished.connect(_top_left_closed)
TOP_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($TopDoor2L, "position", $TopDoor2L.get_meta("closed"), 1)
tween.tween_property($TopDoor2R, "position", $TopDoor2R.get_meta("closed"), 1)
tween.finished.connect(_top_right_closed)
BOTTOM_LEFT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($LeftDoor, "position", $LeftDoor.get_meta("closed"), 1)
tween.finished.connect(_bottom_left_closed)
BOTTOM_RIGHT:
var tween = get_tree().create_tween().set_parallel(true)
tween.tween_property($RightDoor, "position", $RightDoor.get_meta("closed"), 1)
tween.finished.connect(_bottom_right_closed)
func _top_left_closed() -> void:
door_closed.emit(TOP_LEFT)
func _top_right_closed() -> void:
door_closed.emit(TOP_RIGHT)
func _bottom_left_closed() -> void:
door_closed.emit(BOTTOM_LEFT)
func _bottom_right_closed() -> void:
door_closed.emit(BOTTOM_LEFT)

BIN
Pipes/CornerTopLeft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 613 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://n81u6nrroi18"
path="res://.godot/imported/CornerTopLeft.png-9c7801ca96786af1b30bcf44c473aade.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/CornerTopLeft.png"
dest_files=["res://.godot/imported/CornerTopLeft.png-9c7801ca96786af1b30bcf44c473aade.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

BIN
Pipes/CornerTopRight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btiaapyjul68s"
path="res://.godot/imported/CornerTopRight.png-95804b50e9085e82822dd334fc2012c2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/CornerTopRight.png"
dest_files=["res://.godot/imported/CornerTopRight.png-95804b50e9085e82822dd334fc2012c2.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

BIN
Pipes/hPipe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 505 B

34
Pipes/hPipe.png.import Normal file
View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cg5olju1mcceh"
path="res://.godot/imported/hPipe.png-dd737fb114781ca561fdf4c32a7a82f5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/hPipe.png"
dest_files=["res://.godot/imported/hPipe.png-dd737fb114781ca561fdf4c32a7a82f5.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

BIN
Pipes/hPipeEndLeft.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 626 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bj28rs6816gn8"
path="res://.godot/imported/hPipeEndLeft.png-25343b46ddf5e7283a3aba2a3b5f9576.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/hPipeEndLeft.png"
dest_files=["res://.godot/imported/hPipeEndLeft.png-25343b46ddf5e7283a3aba2a3b5f9576.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

BIN
Pipes/hPipeEndRight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dnm2slmsm5wnw"
path="res://.godot/imported/hPipeEndRight.png-e22e44e2c095687eff82351e852cfc9a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/hPipeEndRight.png"
dest_files=["res://.godot/imported/hPipeEndRight.png-e22e44e2c095687eff82351e852cfc9a.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

BIN
Pipes/vPipe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 501 B

34
Pipes/vPipe.png.import Normal file
View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://biqt5k34w683i"
path="res://.godot/imported/vPipe.png-8c7ec6430c180095d6ace49edd67760d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/vPipe.png"
dest_files=["res://.godot/imported/vPipe.png-8c7ec6430c180095d6ace49edd67760d.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

BIN
Pipes/vPipeEndHigh.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 601 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://1ar54kb0l0sm"
path="res://.godot/imported/vPipeEndHigh.png-f79454df341f72f97605f3dd6885d0f8.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/vPipeEndHigh.png"
dest_files=["res://.godot/imported/vPipeEndHigh.png-f79454df341f72f97605f3dd6885d0f8.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

BIN
Pipes/vPipeEndLow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 577 B

View File

@@ -0,0 +1,34 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bh8om6bv1qumy"
path="res://.godot/imported/vPipeEndLow.png-aa228021fc62aafe6d852b4176ec3de7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Pipes/vPipeEndLow.png"
dest_files=["res://.godot/imported/vPipeEndLow.png-aa228021fc62aafe6d852b4176ec3de7.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

BIN
Sounds/AlienDie.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://cpf0y72o6wrv2"
path="res://.godot/imported/AlienDie.wav-f584a9487163e66e8e70219dc289f113.sample"
[deps]
source_file="res://Sounds/AlienDie.wav"
dest_files=["res://.godot/imported/AlienDie.wav-f584a9487163e66e8e70219dc289f113.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=0

BIN
Sounds/AlienHit.wav Normal file

Binary file not shown.

View File

@@ -0,0 +1,24 @@
[remap]
importer="wav"
type="AudioStreamWAV"
uid="uid://sfyq2erohryl"
path="res://.godot/imported/AlienHit.wav-fc14161267e2dcec4bd378e6681216e1.sample"
[deps]
source_file="res://Sounds/AlienHit.wav"
dest_files=["res://.godot/imported/AlienHit.wav-fc14161267e2dcec4bd378e6681216e1.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=0

View File

@@ -16,11 +16,11 @@ func set_upgrade(chr : String, color : Color) -> void:
func _on_body_entered(body: Node) -> void:
if body is Floor:
get_parent().remove_child(self)
queue_free()
get_parent().call_deferred("remove_child", self)
call_deferred("queue_free")
return
if body is Paddle:
upgrade_collected.emit(character)
get_parent().remove_child(self)
queue_free()
get_parent().call_deferred("remove_child", self)
call_deferred("queue_free")

View File

@@ -11,7 +11,7 @@ config_version=5
[application]
config/name="Dunkanoid"
config/version="0.5.5"
config/version="0.6.1"
run/main_scene="res://Intro.tscn"
config/features=PackedStringArray("4.2", "Forward Plus")
run/max_fps=30
@@ -103,6 +103,13 @@ play={
]
}
[layer_names]
2d_physics/layer_1="Brick Bounce"
2d_physics/layer_2="Upgrade"
2d_physics/layer_5="Brick Pass"
2d_physics/layer_6="Alien Hit"
[physics]
2d/default_gravity=0.0
@@ -112,5 +119,6 @@ play={
[rendering]
textures/vram_compression/import_etc2_astc=true
anti_aliasing/screen_space_roughness_limiter/enabled=false
environment/defaults/default_clear_color=Color(0, 0, 0, 1)