diff --git a/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.md5 b/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.md5 index 4b02031..8536f51 100644 --- a/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.md5 +++ b/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.md5 @@ -1,3 +1,3 @@ -source_md5="6d2b131152ff4c12a5d330d6f862f330" -dest_md5="cbb7597b1e76bec657145883a9d348e8" +source_md5="14824d611b8b2304d2f105c934a4fb69" +dest_md5="2d9d5bae626c7b63ec55cc11d298e64d" diff --git a/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.sample b/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.sample index e5b7eaf..73e262a 100644 Binary files a/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.sample and b/.import/HoverButton.wav-b4f06b94508ef6329b16866b11deca55.sample differ diff --git a/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.md5 b/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.md5 new file mode 100644 index 0000000..60c71a9 --- /dev/null +++ b/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.md5 @@ -0,0 +1,3 @@ +source_md5="8da2ceb0a95bfe836dba34188ff0db46" +dest_md5="aad4aa76aff17c284ffebc24cee69b33" + diff --git a/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.stex b/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.stex new file mode 100644 index 0000000..4584003 Binary files /dev/null and b/.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.stex differ diff --git a/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.md5 b/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.md5 new file mode 100644 index 0000000..5427e34 --- /dev/null +++ b/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.md5 @@ -0,0 +1,3 @@ +source_md5="3e7b8d3bc36e5e71d2f99b700bcb8859" +dest_md5="17a596be2505bea6b965a79bedd0ede7" + diff --git a/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.stex b/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.stex new file mode 100644 index 0000000..dd6d575 Binary files /dev/null and b/.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.stex differ diff --git a/.import/stab.wav-19e7aa04662bc0373354bab034382235.md5 b/.import/stab.wav-19e7aa04662bc0373354bab034382235.md5 new file mode 100644 index 0000000..d0530fe --- /dev/null +++ b/.import/stab.wav-19e7aa04662bc0373354bab034382235.md5 @@ -0,0 +1,3 @@ +source_md5="d674f93aa94b3a7221d23af012ba824f" +dest_md5="60273cb6ce548a77565526f73284002a" + diff --git a/.import/stab.wav-19e7aa04662bc0373354bab034382235.sample b/.import/stab.wav-19e7aa04662bc0373354bab034382235.sample new file mode 100644 index 0000000..4d2f3b0 Binary files /dev/null and b/.import/stab.wav-19e7aa04662bc0373354bab034382235.sample differ diff --git a/Aseprite/bubble.ase b/Aseprite/bubble.ase new file mode 100644 index 0000000..53d4d91 Binary files /dev/null and b/Aseprite/bubble.ase differ diff --git a/Aseprite/bubble.png b/Aseprite/bubble.png new file mode 100644 index 0000000..8188152 Binary files /dev/null and b/Aseprite/bubble.png differ diff --git a/Aseprite/bubble.png.import b/Aseprite/bubble.png.import new file mode 100644 index 0000000..18cf0db --- /dev/null +++ b/Aseprite/bubble.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Aseprite/bubble.png" +dest_files=[ "res://.import/bubble.png-331ca4f2049fae98613a0ccdc7c1eaa1.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Ball/Ball.gd b/Ball/Ball.gd index a0b72c6..3c7c8ae 100644 --- a/Ball/Ball.gd +++ b/Ball/Ball.gd @@ -39,6 +39,8 @@ func turn_pegs_green(collider): if (collider.has_method("make_green")): #if yes then do it collider.make_green() + if GameStats.pinks_left <= 0: + $Sprite/WinParticles.visible = true func set_particle_direction(collider): if (collider.has_method("set_particle_direction")): diff --git a/Ball/Ball.tscn b/Ball/Ball.tscn index 401482a..6ac0324 100644 --- a/Ball/Ball.tscn +++ b/Ball/Ball.tscn @@ -1,13 +1,24 @@ -[gd_scene load_steps=7 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://Ball/sprite.png" type="Texture" id=1] [ext_resource path="res://Ball/Ball.gd" type="Script" id=2] [ext_resource path="res://Ball/Ball.tres" type="PhysicsMaterial" id=3] [ext_resource path="res://Ball/BallCollision.tscn" type="PackedScene" id=4] [ext_resource path="res://SFX/Scratch/BallReset.wav" type="AudioStream" id=5] +[ext_resource path="res://Effects/greenParticle.png" type="Texture" id=6] -[sub_resource type="Animation" id=1] -resource_name = "reset" +[sub_resource type="ParticlesMaterial" id=1] +lifetime_randomness = 0.5 +emission_shape = 1 +emission_sphere_radius = 8.0 +flag_disable_z = true +spread = 0.0 +gravity = Vector3( 0, -30, 0 ) +orbit_velocity = 0.0 +orbit_velocity_random = 0.0 +linear_accel = 20.0 + +[sub_resource type="Animation" id=2] length = 1.5 step = 0.05 tracks/0/type = "method" @@ -67,6 +78,15 @@ remote_path = NodePath("../../../Camera2D") position = Vector2( 0, -10 ) texture = ExtResource( 1 ) +[node name="WinParticles" type="Particles2D" parent="Sprite"] +visible = false +z_index = 10 +amount = 64 +lifetime = 1.5 +local_coords = false +process_material = SubResource( 1 ) +texture = ExtResource( 6 ) + [node name="BallCollision" parent="." instance=ExtResource( 4 )] visible = true @@ -74,7 +94,7 @@ visible = true wait_time = 0.1 [node name="AnimationPlayer" type="AnimationPlayer" parent="."] -anims/reset = SubResource( 1 ) +anims/reset = SubResource( 2 ) [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] stream = ExtResource( 5 ) diff --git a/Bucket/Confetti.tscn b/Bucket/Confetti.tscn index 0dbbdb5..0f56a83 100644 --- a/Bucket/Confetti.tscn +++ b/Bucket/Confetti.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Effects/confetti2.png" type="Texture" id=1] [ext_resource path="res://Bucket/Confetti.tres" type="Material" id=2] @@ -7,6 +7,7 @@ [ext_resource path="res://Bucket/Confetti.gd" type="Script" id=5] [ext_resource path="res://Menu/Theme.tres" type="Theme" id=6] [ext_resource path="res://Ball/sprite.png" type="Texture" id=7] +[ext_resource path="res://SFX/stab.wav" type="AudioStream" id=8] [sub_resource type="Animation" id=1] resource_name = "+1Ball" @@ -88,4 +89,9 @@ __meta__ = { position = Vector2( -13, -5 ) texture = ExtResource( 7 ) +[node name="AudioStreamPlayer2D" type="AudioStreamPlayer2D" parent="."] +stream = ExtResource( 8 ) +volume_db = 4.0 +autoplay = true + [connection signal="timeout" from="KillTimer" to="." method="_on_KillTimer_timeout"] diff --git a/Effects/bubble.png b/Effects/bubble.png new file mode 100644 index 0000000..946f4eb Binary files /dev/null and b/Effects/bubble.png differ diff --git a/Effects/bubble.png.import b/Effects/bubble.png.import new file mode 100644 index 0000000..31dc064 --- /dev/null +++ b/Effects/bubble.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Effects/bubble.png" +dest_files=[ "res://.import/bubble.png-be029d8fe1cae70c486a083042aa2d2d.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/Menu/MainMenu.tscn b/Menu/MainMenu.tscn index 5664b28..a0858a2 100644 --- a/Menu/MainMenu.tscn +++ b/Menu/MainMenu.tscn @@ -198,3 +198,4 @@ scene = "res://Stages/EmptyStage.tscn" [node name="Transition" parent="." instance=ExtResource( 3 )] [node name="Cannon" parent="." instance=ExtResource( 4 )] +visible = false diff --git a/Menu/Pause.gd b/Menu/Pause.gd index 6db261b..e9a2129 100644 --- a/Menu/Pause.gd +++ b/Menu/Pause.gd @@ -1,9 +1,10 @@ extends CenterContainer -func _process(delta): +func _process(_delta): if Input.is_action_just_pressed("pause"): _on_pause_button_pressed() func _on_pause_button_pressed(): - get_tree().paused = !get_tree().paused - visible = !visible + if !GameStats.level_won: + get_tree().paused = !get_tree().paused + visible = !visible diff --git a/Menu/Pause.tscn b/Menu/Pause.tscn index 7065fc6..d091ba0 100644 --- a/Menu/Pause.tscn +++ b/Menu/Pause.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=17 format=2] +[gd_scene load_steps=18 format=2] [ext_resource path="res://Menu/Buttons/RestartButton.tscn" type="PackedScene" id=1] [ext_resource path="res://Menu/Icons/Play/Play2.png" type="Texture" id=2] @@ -16,6 +16,7 @@ [ext_resource path="res://Menu/Buttons/AudioSliders/MusicVolume2.png" type="Texture" id=14] [ext_resource path="res://Menu/Theme.tres" type="Theme" id=15] [ext_resource path="res://Menu/Buttons/Fullscreen/FullscreenButton.tscn" type="PackedScene" id=16] +[ext_resource path="res://Menu/Buttons/ButtonSFX.tscn" type="PackedScene" id=17] [node name="Pause" type="CanvasLayer"] pause_mode = 2 @@ -74,6 +75,8 @@ texture_normal = ExtResource( 8 ) texture_pressed = ExtResource( 9 ) texture_hover = ExtResource( 2 ) +[node name="ButtonSFX" parent="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume" instance=ExtResource( 17 )] + [node name="SFX Volume" parent="Pause/PanelContainer/HBoxContainer" instance=ExtResource( 12 )] margin_top = 36.0 margin_right = 140.0 @@ -92,4 +95,7 @@ bus_channel = "Music" [connection signal="pressed" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/LevelSelectIconButton" to="Pause" method="_on_pause_button_pressed"] [connection signal="pressed" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/RestartButton" to="Pause" method="_on_pause_button_pressed"] +[connection signal="focus_entered" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume" to="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume/ButtonSFX" method="on_hover"] +[connection signal="mouse_entered" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume" to="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume/ButtonSFX" method="on_hover"] [connection signal="pressed" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume" to="Pause" method="_on_pause_button_pressed"] +[connection signal="pressed" from="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume" to="Pause/PanelContainer/HBoxContainer/VBoxContainer/Resume/ButtonSFX" method="on_select"] diff --git a/Menu/Theme.tres b/Menu/Theme.tres index afb0df6..abdbe1c 100644 --- a/Menu/Theme.tres +++ b/Menu/Theme.tres @@ -101,7 +101,7 @@ border_width_right = 1 border_width_bottom = 1 border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) -[sub_resource type="StyleBoxFlat" id=23] +[sub_resource type="StyleBoxFlat" id=12] content_margin_left = 2.0 content_margin_right = 2.0 content_margin_top = 2.0 @@ -118,39 +118,39 @@ expand_margin_right = 2.0 expand_margin_top = 2.0 expand_margin_bottom = 2.0 -[sub_resource type="StyleBoxFlat" id=12] +[sub_resource type="StyleBoxFlat" id=13] content_margin_left = 2.0 content_margin_right = 2.0 content_margin_top = 2.0 content_margin_bottom = 2.0 bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) -[sub_resource type="StyleBoxFlat" id=13] -content_margin_left = 4.0 -content_margin_right = 4.0 -content_margin_top = 4.0 -content_margin_bottom = 4.0 -bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) -anti_aliasing = false - [sub_resource type="StyleBoxFlat" id=14] content_margin_left = 4.0 content_margin_right = 4.0 content_margin_top = 4.0 content_margin_bottom = 4.0 bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) +anti_aliasing = false + +[sub_resource type="StyleBoxFlat" id=15] +content_margin_left = 4.0 +content_margin_right = 4.0 +content_margin_top = 4.0 +content_margin_bottom = 4.0 +bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) border_width_left = 1 border_width_top = 1 border_width_right = 1 border_width_bottom = 1 border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) -[sub_resource type="StyleBoxFlat" id=15] +[sub_resource type="StyleBoxFlat" id=16] content_margin_left = 4.0 content_margin_right = 4.0 content_margin_top = 4.0 @@ -163,24 +163,16 @@ border_width_bottom = 1 border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) anti_aliasing = false -[sub_resource type="StyleBoxFlat" id=16] +[sub_resource type="StyleBoxFlat" id=17] bg_color = Color( 0.454902, 0.337255, 0.607843, 1 ) -[sub_resource type="StyleBoxFlat" id=17] - [sub_resource type="StyleBoxFlat" id=18] -bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) [sub_resource type="StyleBoxFlat" id=19] bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) -border_width_left = 2 -border_width_top = 2 -border_width_right = 2 -border_width_bottom = 2 -border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) [sub_resource type="StyleBoxFlat" id=20] -bg_color = Color( 1, 0.701961, 0.796078, 1 ) +bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) border_width_left = 2 border_width_top = 2 border_width_right = 2 @@ -188,7 +180,7 @@ border_width_bottom = 2 border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) [sub_resource type="StyleBoxFlat" id=21] -bg_color = Color( 0.588235, 0.984314, 0.780392, 1 ) +bg_color = Color( 1, 0.701961, 0.796078, 1 ) border_width_left = 2 border_width_top = 2 border_width_right = 2 @@ -196,6 +188,14 @@ border_width_bottom = 2 border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) [sub_resource type="StyleBoxFlat" id=22] +bg_color = Color( 0.588235, 0.984314, 0.780392, 1 ) +border_width_left = 2 +border_width_top = 2 +border_width_right = 2 +border_width_bottom = 2 +border_color = Color( 0.454902, 0.337255, 0.607843, 1 ) + +[sub_resource type="StyleBoxFlat" id=23] content_margin_right = 16.0 bg_color = Color( 0.847059, 0.74902, 0.847059, 1 ) border_width_left = 4 @@ -424,7 +424,7 @@ OptionButton/styles/hover = null OptionButton/styles/normal = null OptionButton/styles/pressed = null Panel/styles/panel = SubResource( 11 ) -PanelContainer/styles/panel = SubResource( 23 ) +PanelContainer/styles/panel = SubResource( 12 ) PopupDialog/styles/panel = null PopupMenu/colors/font_color = Color( 0, 0, 0, 1 ) PopupMenu/colors/font_color_accel = Color( 0, 0, 0, 1 ) @@ -468,7 +468,7 @@ RichTextLabel/fonts/mono_font = null RichTextLabel/fonts/normal_font = null RichTextLabel/styles/focus = null RichTextLabel/styles/normal = null -ScrollContainer/styles/bg = SubResource( 12 ) +ScrollContainer/styles/bg = SubResource( 13 ) SpinBox/icons/updown = null TabContainer/colors/font_color_bg = Color( 0, 0, 0, 1 ) TabContainer/colors/font_color_disabled = Color( 0, 0, 0, 1 ) @@ -485,10 +485,10 @@ TabContainer/icons/increment = null TabContainer/icons/increment_highlight = null TabContainer/icons/menu = null TabContainer/icons/menu_highlight = null -TabContainer/styles/panel = SubResource( 13 ) -TabContainer/styles/tab_bg = SubResource( 14 ) +TabContainer/styles/panel = SubResource( 14 ) +TabContainer/styles/tab_bg = SubResource( 15 ) TabContainer/styles/tab_disabled = null -TabContainer/styles/tab_fg = SubResource( 15 ) +TabContainer/styles/tab_fg = SubResource( 16 ) Tabs/colors/font_color_bg = Color( 0.454902, 0.337255, 0.607843, 1 ) Tabs/colors/font_color_disabled = Color( 0.454902, 0.337255, 0.607843, 1 ) Tabs/colors/font_color_fg = Color( 0.454902, 0.337255, 0.607843, 1 ) @@ -502,10 +502,10 @@ Tabs/icons/decrement = null Tabs/icons/decrement_highlight = null Tabs/icons/increment = null Tabs/icons/increment_highlight = null -Tabs/styles/button = SubResource( 16 ) +Tabs/styles/button = SubResource( 17 ) Tabs/styles/button_pressed = null -Tabs/styles/panel = SubResource( 17 ) -Tabs/styles/tab_bg = SubResource( 18 ) +Tabs/styles/panel = SubResource( 18 ) +Tabs/styles/tab_bg = SubResource( 19 ) Tabs/styles/tab_disabled = null Tabs/styles/tab_fg = null TextEdit/colors/background_color = Color( 0, 0, 0, 1 ) @@ -605,10 +605,10 @@ VScrollBar/icons/decrement = null VScrollBar/icons/decrement_highlight = null VScrollBar/icons/increment = null VScrollBar/icons/increment_highlight = null -VScrollBar/styles/grabber = SubResource( 19 ) -VScrollBar/styles/grabber_highlight = SubResource( 20 ) -VScrollBar/styles/grabber_pressed = SubResource( 21 ) -VScrollBar/styles/scroll = SubResource( 22 ) +VScrollBar/styles/grabber = SubResource( 20 ) +VScrollBar/styles/grabber_highlight = SubResource( 21 ) +VScrollBar/styles/grabber_pressed = SubResource( 22 ) +VScrollBar/styles/scroll = SubResource( 23 ) VScrollBar/styles/scroll_focus = null VSeparator/constants/separation = 4 VSeparator/styles/separator = null diff --git a/Music/Music.gd b/Music/Music.gd index 01ed6b8..b42aa2c 100644 --- a/Music/Music.gd +++ b/Music/Music.gd @@ -1,5 +1,5 @@ extends AudioStreamPlayer -func _process(delta): +func _process(_delta): var speed = clamp(Engine.time_scale, 0.99, 1.1) pitch_scale = lerp(pitch_scale, speed, 0.01) diff --git a/Pegs/Green/GreenBar.gd b/Pegs/Green/GreenBar.gd index eccf5a7..4b7214e 100644 --- a/Pegs/Green/GreenBar.gd +++ b/Pegs/Green/GreenBar.gd @@ -11,6 +11,7 @@ func make_green(): func explode(): if can_be_destroyed: + $ScoreCounter.trigger() spawn_hit_particles(particle_emitting_direction) queue_free() diff --git a/Pegs/Green/GreenBar.tscn b/Pegs/Green/GreenBar.tscn index b5d2520..aaaf5a2 100644 --- a/Pegs/Green/GreenBar.tscn +++ b/Pegs/Green/GreenBar.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://Pegs/Green/bar.png" type="Texture" id=1] [ext_resource path="res://Pegs/Green/GreenBar.gd" type="Script" id=2] [ext_resource path="res://Pegs/Green/GraceTimer.tscn" type="PackedScene" id=3] [ext_resource path="res://Pegs/Green/HitSFX.tscn" type="PackedScene" id=4] +[ext_resource path="res://Pegs/ScoreCounter.tscn" type="PackedScene" id=5] [sub_resource type="RectangleShape2D" id=1] extents = Vector2( 16, 3 ) @@ -47,4 +48,6 @@ shape = SubResource( 2 ) [node name="AnimationPlayer" type="AnimationPlayer" parent="."] anims/spawn = SubResource( 3 ) +[node name="ScoreCounter" parent="." instance=ExtResource( 5 )] + [connection signal="timeout" from="GraceTimer" to="." method="_on_GraceTimer_timeout"] diff --git a/Pegs/Green/GreenPeg.gd b/Pegs/Green/GreenPeg.gd index 35328f8..17bd92f 100644 --- a/Pegs/Green/GreenPeg.gd +++ b/Pegs/Green/GreenPeg.gd @@ -9,6 +9,7 @@ func make_green(): func explode(): if(can_be_exploded): + $ScoreCounter.trigger() spawn_hit_particles(particle_emitting_direction) queue_free() diff --git a/Pegs/Green/GreenPeg.tscn b/Pegs/Green/GreenPeg.tscn index c476b3b..8be8431 100644 --- a/Pegs/Green/GreenPeg.tscn +++ b/Pegs/Green/GreenPeg.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=9 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Pegs/Green/green.png" type="Texture" id=1] [ext_resource path="res://Pegs/Green/GreenPeg.gd" type="Script" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://Pegs/DefaultPegCollisionShape.tscn" type="PackedScene" id=4] [ext_resource path="res://Pegs/Green/GreenPegAnimationPlayer.gd" type="Script" id=5] [ext_resource path="res://Pegs/Green/HitSFX.tscn" type="PackedScene" id=6] +[ext_resource path="res://Pegs/ScoreCounter.tscn" type="PackedScene" id=7] [sub_resource type="PhysicsMaterial" id=1] @@ -43,4 +44,6 @@ script = ExtResource( 5 ) [node name="GraceTimer" parent="." instance=ExtResource( 3 )] +[node name="ScoreCounter" parent="." instance=ExtResource( 7 )] + [connection signal="timeout" from="GraceTimer" to="." method="_on_GraceTimer_timeout"] diff --git a/Pegs/Pink/PinkPeg.gd b/Pegs/Pink/PinkPeg.gd index 9f725fe..765de49 100644 --- a/Pegs/Pink/PinkPeg.gd +++ b/Pegs/Pink/PinkPeg.gd @@ -16,6 +16,9 @@ func make_green(): var main = get_tree().current_scene main.add_child(green_peg) + # add score + $ScoreCounter.trigger() + #finally delete the old peg GameStats.pinks_left -= 1 GameStats.add_to_multiplier() diff --git a/Pegs/Pink/PinkPeg.tscn b/Pegs/Pink/PinkPeg.tscn index b433074..9c9617a 100644 --- a/Pegs/Pink/PinkPeg.tscn +++ b/Pegs/Pink/PinkPeg.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://Pegs/Pink/PinkPeg.gd" type="Script" id=1] [ext_resource path="res://Pegs/DefaultPegCollisionShape.tscn" type="PackedScene" id=2] [ext_resource path="res://Pegs/Pink/Pink.png" type="Texture" id=3] +[ext_resource path="res://Pegs/ScoreCounter.tscn" type="PackedScene" id=4] [sub_resource type="CircleShape2D" id=1] radius = 10.2018 @@ -36,6 +37,9 @@ collision_mask = 4 [node name="CollisionShape2D" type="CollisionShape2D" parent="LastPegCollision"] shape = SubResource( 2 ) +[node name="ScoreCounter" parent="." instance=ExtResource( 4 )] +base_score = 10 + [connection signal="body_entered" from="RegularCollision" to="." method="_on_Area2D_body_entered"] [connection signal="body_exited" from="RegularCollision" to="." method="_on_Area2D_body_exited"] [connection signal="timeout" from="SlowmoTimer" to="." method="_on_Timer_timeout"] diff --git a/Pegs/Purple/PurpleBar.gd b/Pegs/Purple/PurpleBar.gd index 7fc8a8f..fdfc539 100644 --- a/Pegs/Purple/PurpleBar.gd +++ b/Pegs/Purple/PurpleBar.gd @@ -8,6 +8,8 @@ func make_green(): green_bar.global_position = global_position green_bar.global_rotation = global_rotation + $ScoreCounter.trigger() + main.add_child(green_bar) GameStats.add_to_multiplier() queue_free() diff --git a/Pegs/Purple/PurpleBar.tscn b/Pegs/Purple/PurpleBar.tscn index 8e931e5..614c426 100644 --- a/Pegs/Purple/PurpleBar.tscn +++ b/Pegs/Purple/PurpleBar.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=6 format=2] +[gd_scene load_steps=7 format=2] [ext_resource path="res://Pegs/Purple/PurpleBar.gd" type="Script" id=1] [ext_resource path="res://Pegs/Purple/bar.png" type="Texture" id=2] +[ext_resource path="res://Pegs/ScoreCounter.tscn" type="PackedScene" id=3] [sub_resource type="PhysicsMaterial" id=1] friction = 5.0 @@ -25,3 +26,5 @@ shape = SubResource( 2 ) [node name="CollisionShape2D2" type="CollisionShape2D" parent="."] shape = SubResource( 3 ) + +[node name="ScoreCounter" parent="." instance=ExtResource( 3 )] diff --git a/Pegs/Purple/PurplePeg.gd b/Pegs/Purple/PurplePeg.gd index d9e8ba7..bf75710 100644 --- a/Pegs/Purple/PurplePeg.gd +++ b/Pegs/Purple/PurplePeg.gd @@ -10,6 +10,10 @@ func make_green(): # green_peg.rotation = rotation + 5 green_peg.global_position = global_position + + # add score + $ScoreCounter.trigger() + # get the main scene of current peg and add new peg to it var main = get_tree().current_scene main.add_child(green_peg) diff --git a/Pegs/Purple/PurplePeg.tscn b/Pegs/Purple/PurplePeg.tscn index 5f37e43..69b1472 100644 --- a/Pegs/Purple/PurplePeg.tscn +++ b/Pegs/Purple/PurplePeg.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=4 format=2] +[gd_scene load_steps=5 format=2] [ext_resource path="res://Pegs/Purple/PurplePeg.gd" type="Script" id=1] [ext_resource path="res://Pegs/Purple/purple.png" type="Texture" id=2] [ext_resource path="res://Pegs/DefaultPegCollisionShape.tscn" type="PackedScene" id=3] +[ext_resource path="res://Pegs/ScoreCounter.tscn" type="PackedScene" id=4] [node name="PurplePeg" type="StaticBody2D"] collision_mask = 0 @@ -12,3 +13,5 @@ script = ExtResource( 1 ) texture = ExtResource( 2 ) [node name="DefaultPegCollisionShape" parent="." instance=ExtResource( 3 )] + +[node name="ScoreCounter" parent="." instance=ExtResource( 4 )] diff --git a/Pegs/ScoreCounter.gd b/Pegs/ScoreCounter.gd new file mode 100644 index 0000000..37e8091 --- /dev/null +++ b/Pegs/ScoreCounter.gd @@ -0,0 +1,25 @@ +extends Node2D + +export var base_score = 1 + +func trigger(): + add_score() + +func add_score(): + var score = base_score * GameStats.multiplier + GameStats.score += score + + #Todo remove + print(GameStats.score) + + + var main = get_tree().current_scene + var Scorelabel = preload("res://Pegs/ScoreLabel.tscn") + var scorelabel = Scorelabel.instance() + main.add_child(scorelabel) + scorelabel.global_position = global_position + scorelabel.trigger(String(score)) + +func delete(): + queue_free() + diff --git a/Pegs/ScoreCounter.tscn b/Pegs/ScoreCounter.tscn new file mode 100644 index 0000000..552eb02 --- /dev/null +++ b/Pegs/ScoreCounter.tscn @@ -0,0 +1,6 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://Pegs/ScoreCounter.gd" type="Script" id=1] + +[node name="ScoreCounter" type="Node2D"] +script = ExtResource( 1 ) diff --git a/Pegs/ScoreLabel.gd b/Pegs/ScoreLabel.gd new file mode 100644 index 0000000..3c889ee --- /dev/null +++ b/Pegs/ScoreLabel.gd @@ -0,0 +1,12 @@ +extends Node2D + + +func trigger(display_text): + $Node2D.global_position = global_position + $Node2D/Label.text = String(display_text) + $Node2D/Label.visible = true + + $AnimationPlayer.play("move_up") + +func delete(): + queue_free() diff --git a/Pegs/ScoreLabel.tscn b/Pegs/ScoreLabel.tscn new file mode 100644 index 0000000..90240bc --- /dev/null +++ b/Pegs/ScoreLabel.tscn @@ -0,0 +1,56 @@ +[gd_scene load_steps=4 format=2] + +[ext_resource path="res://Menu/Theme.tres" type="Theme" id=1] +[ext_resource path="res://Pegs/ScoreLabel.gd" type="Script" id=2] + +[sub_resource type="Animation" id=1] +resource_name = "move_up" +tracks/0/type = "method" +tracks/0/path = NodePath(".") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 1 ), +"transitions": PoolRealArray( 1 ), +"values": [ { +"args": [ ], +"method": "delete" +} ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Node2D:position") +tracks/1/interp = 2 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5, 1 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, -60 ), Vector2( 0, -64 ) ] +} + +[node name="ScoreLabel" type="Node2D"] +z_index = 1000 +script = ExtResource( 2 ) + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/move_up = SubResource( 1 ) + +[node name="Node2D" type="Node2D" parent="."] + +[node name="Label" type="Label" parent="Node2D"] +margin_left = -0.010148 +margin_top = 0.00656128 +margin_right = 39.9899 +margin_bottom = 18.0066 +size_flags_horizontal = 3 +size_flags_vertical = 5 +theme = ExtResource( 1 ) +text = "69" +max_lines_visible = 1 +__meta__ = { +"_edit_use_anchors_": false +} diff --git a/SFX/Scratch/HoverButton.wav b/SFX/Scratch/HoverButton.wav index 1310163..a8fad7f 100644 Binary files a/SFX/Scratch/HoverButton.wav and b/SFX/Scratch/HoverButton.wav differ diff --git a/SFX/stab.wav b/SFX/stab.wav new file mode 100644 index 0000000..775057a Binary files /dev/null and b/SFX/stab.wav differ diff --git a/SFX/stab.wav.import b/SFX/stab.wav.import new file mode 100644 index 0000000..6de1c68 --- /dev/null +++ b/SFX/stab.wav.import @@ -0,0 +1,21 @@ +[remap] + +importer="wav" +type="AudioStreamSample" +path="res://.import/stab.wav-19e7aa04662bc0373354bab034382235.sample" + +[deps] + +source_file="res://SFX/stab.wav" +dest_files=[ "res://.import/stab.wav-19e7aa04662bc0373354bab034382235.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=false +compress/mode=0 diff --git a/Stats/GameStats.gd b/Stats/GameStats.gd index 124ca99..af68683 100644 --- a/Stats/GameStats.gd +++ b/Stats/GameStats.gd @@ -10,6 +10,7 @@ var pinks_left = 0 var level_won = false var current_stage = "res://Stages/EmptyStage.tscn" var multiplier = 1 +var score = 0 func add_balls(balls): balls_left += balls @@ -40,6 +41,7 @@ func reset_board(): pinks_left = 0 level_won = false multiplier = 1 + score = 0 func set_current_scene(stage): current_stage = stage diff --git a/project.godot b/project.godot index 6b24b23..e8217d9 100644 --- a/project.godot +++ b/project.godot @@ -33,6 +33,10 @@ mouse_cursor/custom_image="res://icon.png" window/stretch/mode="2d" window/stretch/aspect="keep" +[global] + +touch=false + [importer_defaults] texture={ diff --git a/readme.md b/readme.md index 3263c5b..b18e919 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ # credits -## \#1 pegchamp and wife +## \#1 pegchamp, wife and voice acting [tess🐯](https://github.com/rawtess)