diff --git a/project.godot b/project.godot index 1ec1a46..e6c3459 100644 --- a/project.godot +++ b/project.godot @@ -29,6 +29,7 @@ project/assembly_name="code-game-jam-drop-plafond-2025" World_Border="" Enemies="" +Player="" [input] diff --git a/ressources/images/empty_slot.svg b/ressources/images/empty_slot.svg new file mode 100644 index 0000000..147448b --- /dev/null +++ b/ressources/images/empty_slot.svg @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ressources/images/empty_slot.svg.import b/ressources/images/empty_slot.svg.import new file mode 100644 index 0000000..e5ae581 --- /dev/null +++ b/ressources/images/empty_slot.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cy7cv4qcmyyol" +path="res://.godot/imported/empty_slot.svg-965915fedb9a029d1613b3da0b6be686.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/empty_slot.svg" +dest_files=["res://.godot/imported/empty_slot.svg-965915fedb9a029d1613b3da0b6be686.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/ressources/images/full_heart.svg b/ressources/images/full_heart.svg new file mode 100644 index 0000000..4d34171 --- /dev/null +++ b/ressources/images/full_heart.svg @@ -0,0 +1,593 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ressources/images/full_heart.svg.import b/ressources/images/full_heart.svg.import new file mode 100644 index 0000000..e656293 --- /dev/null +++ b/ressources/images/full_heart.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://jyrl33rv1fnp" +path="res://.godot/imported/full_heart.svg-e5444af8ba77218c264db7c73bc41e09.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/full_heart.svg" +dest_files=["res://.godot/imported/full_heart.svg-e5444af8ba77218c264db7c73bc41e09.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/ressources/images/half_heart.svg b/ressources/images/half_heart.svg new file mode 100644 index 0000000..f0b34aa --- /dev/null +++ b/ressources/images/half_heart.svg @@ -0,0 +1,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ressources/images/half_heart.svg.import b/ressources/images/half_heart.svg.import new file mode 100644 index 0000000..e561b61 --- /dev/null +++ b/ressources/images/half_heart.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blwxdgwmf60om" +path="res://.godot/imported/half_heart.svg-8874d5a3650dac8caf48118693ab0ab7.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/half_heart.svg" +dest_files=["res://.godot/imported/half_heart.svg-8874d5a3650dac8caf48118693ab0ab7.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 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/ressources/images/roby-atk-0.png b/ressources/images/roby-atk-0.png new file mode 100644 index 0000000..dbf56b7 Binary files /dev/null and b/ressources/images/roby-atk-0.png differ diff --git a/ressources/images/roby-atk-0.png.import b/ressources/images/roby-atk-0.png.import new file mode 100644 index 0000000..1a6231e --- /dev/null +++ b/ressources/images/roby-atk-0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://duto5skmjixh6" +path="res://.godot/imported/roby-atk-0.png-0c25866751763526a4c24d51d3257715.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-atk-0.png" +dest_files=["res://.godot/imported/roby-atk-0.png-0c25866751763526a4c24d51d3257715.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/ressources/images/roby-atk-1.png b/ressources/images/roby-atk-1.png new file mode 100644 index 0000000..581d449 Binary files /dev/null and b/ressources/images/roby-atk-1.png differ diff --git a/ressources/images/roby-atk-1.png.import b/ressources/images/roby-atk-1.png.import new file mode 100644 index 0000000..dfcff86 --- /dev/null +++ b/ressources/images/roby-atk-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8xhcmbkyxlwb" +path="res://.godot/imported/roby-atk-1.png-092e4aa70610e9583dc74aacb0caaada.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-atk-1.png" +dest_files=["res://.godot/imported/roby-atk-1.png-092e4aa70610e9583dc74aacb0caaada.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/ressources/images/roby-atk-2.png b/ressources/images/roby-atk-2.png new file mode 100644 index 0000000..a36c3e9 Binary files /dev/null and b/ressources/images/roby-atk-2.png differ diff --git a/ressources/images/roby-atk-2.png.import b/ressources/images/roby-atk-2.png.import new file mode 100644 index 0000000..144c55b --- /dev/null +++ b/ressources/images/roby-atk-2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://br8d144g0u2le" +path="res://.godot/imported/roby-atk-2.png-ca68db4879029c3a0bab292c58ee11b3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-atk-2.png" +dest_files=["res://.godot/imported/roby-atk-2.png-ca68db4879029c3a0bab292c58ee11b3.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/ressources/images/roby-atk-3.png b/ressources/images/roby-atk-3.png new file mode 100644 index 0000000..c075d7a Binary files /dev/null and b/ressources/images/roby-atk-3.png differ diff --git a/ressources/images/roby-atk-3.png.import b/ressources/images/roby-atk-3.png.import new file mode 100644 index 0000000..fbdea90 --- /dev/null +++ b/ressources/images/roby-atk-3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cxvxfwv2nii64" +path="res://.godot/imported/roby-atk-3.png-5bbdf74e8fe86ba4f85f10be1d1c26b4.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-atk-3.png" +dest_files=["res://.godot/imported/roby-atk-3.png-5bbdf74e8fe86ba4f85f10be1d1c26b4.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/ressources/images/roby-cercle.png b/ressources/images/roby-cercle.png new file mode 100644 index 0000000..74a4829 Binary files /dev/null and b/ressources/images/roby-cercle.png differ diff --git a/ressources/images/roby-cercle.png.import b/ressources/images/roby-cercle.png.import new file mode 100644 index 0000000..fc91a8d --- /dev/null +++ b/ressources/images/roby-cercle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b5ui24x0341jh" +path="res://.godot/imported/roby-cercle.png-2b57287ddf3ce659baa9538c58a7b0db.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-cercle.png" +dest_files=["res://.godot/imported/roby-cercle.png-2b57287ddf3ce659baa9538c58a7b0db.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/ressources/images/roby-idle-0.png b/ressources/images/roby-idle-0.png new file mode 100644 index 0000000..b92e358 Binary files /dev/null and b/ressources/images/roby-idle-0.png differ diff --git a/ressources/images/roby-idle-0.png.import b/ressources/images/roby-idle-0.png.import new file mode 100644 index 0000000..37375a7 --- /dev/null +++ b/ressources/images/roby-idle-0.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dwwe0eanmrcra" +path="res://.godot/imported/roby-idle-0.png-32e2a55f98f7e8894274c97fca13f519.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-idle-0.png" +dest_files=["res://.godot/imported/roby-idle-0.png-32e2a55f98f7e8894274c97fca13f519.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/ressources/images/roby-idle-1.png b/ressources/images/roby-idle-1.png new file mode 100644 index 0000000..86c21da Binary files /dev/null and b/ressources/images/roby-idle-1.png differ diff --git a/ressources/images/roby-idle-1.png.import b/ressources/images/roby-idle-1.png.import new file mode 100644 index 0000000..0d03f7e --- /dev/null +++ b/ressources/images/roby-idle-1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://8m84oe4oes3u" +path="res://.godot/imported/roby-idle-1.png-d8e741b1bee595933bfbe8feed4412aa.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-idle-1.png" +dest_files=["res://.godot/imported/roby-idle-1.png-d8e741b1bee595933bfbe8feed4412aa.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/ressources/images/roby-idle-2.png b/ressources/images/roby-idle-2.png new file mode 100644 index 0000000..b89b644 Binary files /dev/null and b/ressources/images/roby-idle-2.png differ diff --git a/ressources/images/roby-idle-2.png.import b/ressources/images/roby-idle-2.png.import new file mode 100644 index 0000000..f6a693b --- /dev/null +++ b/ressources/images/roby-idle-2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dcyf6teijpttj" +path="res://.godot/imported/roby-idle-2.png-0b5f86ac9b96ec21cba060b3c0c85046.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://ressources/images/roby-idle-2.png" +dest_files=["res://.godot/imported/roby-idle-2.png-0b5f86ac9b96ec21cba060b3c0c85046.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/scenes/Room.tscn b/scenes/Room.tscn index b9011dc..429abfb 100644 --- a/scenes/Room.tscn +++ b/scenes/Room.tscn @@ -1,12 +1,14 @@ -[gd_scene load_steps=12 format=3 uid="uid://durhes43gex7a"] +[gd_scene load_steps=14 format=3 uid="uid://durhes43gex7a"] [ext_resource type="PackedScene" uid="uid://c7bfiw54rvaq2" path="res://scenes/player_melodie.tscn" id="1_cl1wt"] [ext_resource type="Script" path="res://scenes/room.gd" id="1_jh83c"] +[ext_resource type="AudioStream" uid="uid://qyacm71epyhi" path="res://ressources/sons/idle_theme.wav" id="2_8nbnd"] [ext_resource type="Texture2D" uid="uid://ky4e7158gqf6" path="res://ressources/images/cgj_default_tile.svg" id="2_torsx"] [ext_resource type="PackedScene" uid="uid://cyvqa6g64cw37" path="res://scenes/enemies/slime.tscn" id="3_04ip2"] [ext_resource type="Texture2D" uid="uid://bge3nllk1bq5r" path="res://ressources/images/mur.svg" id="3_oi2tl"] [ext_resource type="Texture2D" uid="uid://dhva3tivsvknl" path="res://ressources/images/mur_coin.svg" id="4_6a3f6"] [ext_resource type="PackedScene" uid="uid://di4chlep1t1or" path="res://parametres/menu_parametres.tscn" id="6_6ubhx"] +[ext_resource type="PackedScene" uid="uid://cnd2a1x1smulq" path="res://scenes/interface.tscn" id="8_5s7tf"] [sub_resource type="WorldBoundaryShape2D" id="WorldBoundaryShape2D_1c4te"] normal = Vector2(0, 1) @@ -26,6 +28,12 @@ distance = -596.0 [node name="Room" type="Node2D"] script = ExtResource("1_jh83c") +[node name="Musique" type="AudioStreamPlayer" parent="."] +process_mode = 3 +stream = ExtResource("2_8nbnd") +autoplay = true +bus = &"Music" + [node name="TextureRect" type="TextureRect" parent="."] offset_left = -638.0 offset_top = -360.0 @@ -133,3 +141,11 @@ offset_left = -640.0 offset_top = -360.0 offset_right = 640.0 offset_bottom = 360.0 + +[node name="Interface" parent="." instance=ExtResource("8_5s7tf")] +offset_left = -640.0 +offset_top = -360.0 +offset_right = -640.0 +offset_bottom = -360.0 + +[connection signal="finished" from="Musique" to="." method="_on_audio_stream_player_finished"] diff --git a/scenes/attaques/Balle.tscn b/scenes/attaques/Balle.tscn index 919db87..c40810f 100644 --- a/scenes/attaques/Balle.tscn +++ b/scenes/attaques/Balle.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=4 format=3 uid="uid://buhlaoq2nalup"] +[gd_scene load_steps=4 format=3 uid="uid://btpp8l4efhrmj"] [ext_resource type="Script" path="res://scripts/Instrument/balle.gd" id="1_4kd3w"] [ext_resource type="Texture2D" uid="uid://csbrejwjfkspr" path="res://ressources/images/note1.png" id="1_qx664"] diff --git a/scenes/attaques/Onde.tscn b/scenes/attaques/Onde.tscn new file mode 100644 index 0000000..9eb3b19 --- /dev/null +++ b/scenes/attaques/Onde.tscn @@ -0,0 +1,19 @@ +[gd_scene load_steps=4 format=3 uid="uid://bcypcnpu0608o"] + +[ext_resource type="Script" path="res://scripts/Instrument/onde.gd" id="1_6377h"] +[ext_resource type="Texture2D" uid="uid://cb5xpbtagu6jv" path="res://ressources/images/ronde tambour.png.png" id="1_oawub"] + +[sub_resource type="CircleShape2D" id="CircleShape2D_r81ru"] +radius = 125.575 + +[node name="Onde" type="CharacterBody2D"] +collision_layer = 2 +collision_mask = 2 +script = ExtResource("1_6377h") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(2.5, 2.5) +texture = ExtResource("1_oawub") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_r81ru") diff --git a/scenes/enemies/poulpe.gd b/scenes/enemies/poulpe.gd new file mode 100644 index 0000000..c560819 --- /dev/null +++ b/scenes/enemies/poulpe.gd @@ -0,0 +1,48 @@ +extends CharacterBody2D + +const SPEED = 50.0 +@onready var player = get_parent().get_node("Player_Melodie") +var player_position = Vector2.ZERO +var target_position = Vector2.ZERO + +var move_timer = 1 + +var vie = 3 +var balle = null +var Balle = null + +func _ready() -> void: + Balle = load("res://scenes/enemies/poulpeBullet.tscn") + + +func take_damage(dmg : int) : + vie -= dmg + if vie <= 0: + queue_free() + + +func _physics_process(delta: float) -> void: + player_position = player.position + target_position = (player_position - position).normalized() + move_and_slide() + + +func _process(delta: float) -> void: + var direction : Vector2 + move_timer -= delta + + if move_timer < 0: + attaquer_joueur() + move_timer = 1 + + + $AnimatedSprite2D.play("Generic") + + velocity = target_position * SPEED * -1 + + +func attaquer_joueur() -> void: + balle = Balle.instantiate() + balle.set_direction(target_position) + balle.position = position + get_parent().add_child(balle) diff --git a/scenes/enemies/poulpe.tscn b/scenes/enemies/poulpe.tscn new file mode 100644 index 0000000..4c746c7 --- /dev/null +++ b/scenes/enemies/poulpe.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=6 format=3 uid="uid://voiqrkjd02om"] + +[ext_resource type="Script" path="res://scenes/enemies/poulpe.gd" id="1_hu6wh"] +[ext_resource type="Texture2D" uid="uid://2spn60rmdyy5" path="res://ressources/images/poulpe-1.png" id="1_lgwa7"] +[ext_resource type="Texture2D" uid="uid://b4ukmsspx16f" path="res://ressources/images/poulpe-2.png" id="2_5x4i5"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_2hq77"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("1_lgwa7") +}, { +"duration": 1.0, +"texture": ExtResource("2_5x4i5") +}], +"loop": true, +"name": &"Generic", +"speed": 5.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_s7foh"] +radius = 38.2753 + +[node name="Poulpe" type="CharacterBody2D"] +script = ExtResource("1_hu6wh") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.4, 0.4) +sprite_frames = SubResource("SpriteFrames_2hq77") +animation = &"Generic" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_s7foh") diff --git a/scenes/enemies/poulpeBullet.tscn b/scenes/enemies/poulpeBullet.tscn new file mode 100644 index 0000000..c34e260 --- /dev/null +++ b/scenes/enemies/poulpeBullet.tscn @@ -0,0 +1,17 @@ +[gd_scene load_steps=3 format=3 uid="uid://gytt3e3u0pid"] + +[ext_resource type="Script" path="res://scenes/enemies/poulpe_bullet.gd" id="1_qycm8"] +[ext_resource type="Texture2D" uid="uid://bg7xknf5g2rfj" path="res://ressources/images/poulpe-bullet.png" id="2_o0wmh"] + +[node name="PoulpeBullet" type="Area2D"] +script = ExtResource("1_qycm8") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(0.35, 0.35) +texture = ExtResource("2_o0wmh") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +scale = Vector2(0.35, 0.35) +polygon = PackedVector2Array(-42, -44, -42, 43.2, -39.9, 44.3, -36.4, 42, -34.3, 42, -28, 6.2, -28, -1.4, -18, 7.89999, -18, 9.2, 23.5, 32, 28.8, 32, 32, 28.8, 32, 25.5, 18, 0.5, 18, -2.9, -6.8, -26.6, 19.4, -32, 32.4, -32, 41.4, -36, 43.2, -36, 44.3, -38.1, 42, -41.7, 42, -44) + +[connection signal="body_entered" from="." to="." method="Collision"] diff --git a/scenes/enemies/poulpe_bullet.gd b/scenes/enemies/poulpe_bullet.gd new file mode 100644 index 0000000..434c459 --- /dev/null +++ b/scenes/enemies/poulpe_bullet.gd @@ -0,0 +1,20 @@ +extends Area2D + +var speed = 200.0 +var direction = Vector2.ZERO + +func _process(delta: float) -> void: + position += direction * speed * delta + +func set_direction(direction: Vector2) -> void: + self.direction = direction + + +func Collision(body: Node2D) -> void: + if body.is_in_group("World_Border") : + queue_free() + if body.is_in_group("Player"): + body.take_damage(3) + queue_free() + + diff --git a/scenes/enemies/sli2D1.tmp b/scenes/enemies/sli2D1.tmp new file mode 100644 index 0000000..a33edd0 --- /dev/null +++ b/scenes/enemies/sli2D1.tmp @@ -0,0 +1,35 @@ +[gd_scene load_steps=6 format=3 uid="uid://cyvqa6g64cw37"] + +[ext_resource type="Script" path="res://scenes/enemies/slime.gd" id="1_hnufy"] +[ext_resource type="Texture2D" uid="uid://c85d5krtd4nks" path="res://ressources/images/blob-1.png" id="2_f4wf2"] +[ext_resource type="Texture2D" uid="uid://c0b6d7551nbcm" path="res://ressources/images/blob-2-4.png" id="3_dyq42"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_qfla8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_f4wf2") +}, { +"duration": 1.0, +"texture": ExtResource("3_dyq42") +}], +"loop": false, +"name": &"Generic", +"speed": 3.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_bokrm"] +radius = 20.0 + +[node name="Slime" type="CharacterBody2D"] +collision_layer = 3 +collision_mask = 3 +script = ExtResource("1_hnufy") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.2, 0.2) +sprite_frames = SubResource("SpriteFrames_qfla8") +animation = &"Generic" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bokrm") diff --git a/scenes/enemies/sli97B9.tmp b/scenes/enemies/sli97B9.tmp new file mode 100644 index 0000000..a33edd0 --- /dev/null +++ b/scenes/enemies/sli97B9.tmp @@ -0,0 +1,35 @@ +[gd_scene load_steps=6 format=3 uid="uid://cyvqa6g64cw37"] + +[ext_resource type="Script" path="res://scenes/enemies/slime.gd" id="1_hnufy"] +[ext_resource type="Texture2D" uid="uid://c85d5krtd4nks" path="res://ressources/images/blob-1.png" id="2_f4wf2"] +[ext_resource type="Texture2D" uid="uid://c0b6d7551nbcm" path="res://ressources/images/blob-2-4.png" id="3_dyq42"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_qfla8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_f4wf2") +}, { +"duration": 1.0, +"texture": ExtResource("3_dyq42") +}], +"loop": false, +"name": &"Generic", +"speed": 3.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_bokrm"] +radius = 20.0 + +[node name="Slime" type="CharacterBody2D"] +collision_layer = 3 +collision_mask = 3 +script = ExtResource("1_hnufy") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.2, 0.2) +sprite_frames = SubResource("SpriteFrames_qfla8") +animation = &"Generic" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bokrm") diff --git a/scenes/enemies/sliA92E.tmp b/scenes/enemies/sliA92E.tmp new file mode 100644 index 0000000..a33edd0 --- /dev/null +++ b/scenes/enemies/sliA92E.tmp @@ -0,0 +1,35 @@ +[gd_scene load_steps=6 format=3 uid="uid://cyvqa6g64cw37"] + +[ext_resource type="Script" path="res://scenes/enemies/slime.gd" id="1_hnufy"] +[ext_resource type="Texture2D" uid="uid://c85d5krtd4nks" path="res://ressources/images/blob-1.png" id="2_f4wf2"] +[ext_resource type="Texture2D" uid="uid://c0b6d7551nbcm" path="res://ressources/images/blob-2-4.png" id="3_dyq42"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_qfla8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_f4wf2") +}, { +"duration": 1.0, +"texture": ExtResource("3_dyq42") +}], +"loop": false, +"name": &"Generic", +"speed": 3.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_bokrm"] +radius = 20.0 + +[node name="Slime" type="CharacterBody2D"] +collision_layer = 3 +collision_mask = 3 +script = ExtResource("1_hnufy") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.2, 0.2) +sprite_frames = SubResource("SpriteFrames_qfla8") +animation = &"Generic" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bokrm") diff --git a/scenes/enemies/sliDD95.tmp b/scenes/enemies/sliDD95.tmp new file mode 100644 index 0000000..a33edd0 --- /dev/null +++ b/scenes/enemies/sliDD95.tmp @@ -0,0 +1,35 @@ +[gd_scene load_steps=6 format=3 uid="uid://cyvqa6g64cw37"] + +[ext_resource type="Script" path="res://scenes/enemies/slime.gd" id="1_hnufy"] +[ext_resource type="Texture2D" uid="uid://c85d5krtd4nks" path="res://ressources/images/blob-1.png" id="2_f4wf2"] +[ext_resource type="Texture2D" uid="uid://c0b6d7551nbcm" path="res://ressources/images/blob-2-4.png" id="3_dyq42"] + +[sub_resource type="SpriteFrames" id="SpriteFrames_qfla8"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": ExtResource("2_f4wf2") +}, { +"duration": 1.0, +"texture": ExtResource("3_dyq42") +}], +"loop": false, +"name": &"Generic", +"speed": 3.0 +}] + +[sub_resource type="CircleShape2D" id="CircleShape2D_bokrm"] +radius = 20.0 + +[node name="Slime" type="CharacterBody2D"] +collision_layer = 3 +collision_mask = 3 +script = ExtResource("1_hnufy") + +[node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] +scale = Vector2(0.2, 0.2) +sprite_frames = SubResource("SpriteFrames_qfla8") +animation = &"Generic" + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("CircleShape2D_bokrm") diff --git a/scenes/enemies/slime.gd b/scenes/enemies/slime.gd index df33253..b4c1679 100644 --- a/scenes/enemies/slime.gd +++ b/scenes/enemies/slime.gd @@ -7,14 +7,29 @@ var player_position = Vector2.ZERO var target_position = Vector2.ZERO var move_timer = 2 +var next_degat = 1 + +var vie = 4 +func take_damage(dmg : int) : + vie -= dmg + if vie <= 0: + queue_free() + func _physics_process(delta: float) -> void: player_position = player.position target_position = (player_position - position).normalized() move_and_slide() + next_degat -= delta + for i in get_slide_collision_count(): var collision = get_slide_collision(i) + if collision.get_collider_shape().get_instance_id() == player.get_child(1).get_instance_id(): + if next_degat <= 0: + player.take_damage(2) + next_degat = 1 + func _process(delta: float) -> void: var direction : Vector2 @@ -27,3 +42,9 @@ func _process(delta: float) -> void: $AnimatedSprite2D.play("Generic") velocity = direction * SPEED + + +func Collision(body: Node2D) -> void: + print(body) + if body.is_in_group("Player") : + body.take_damage(1) diff --git a/scenes/enemies/slime.tscn b/scenes/enemies/slime.tscn index a33edd0..d690b49 100644 --- a/scenes/enemies/slime.tscn +++ b/scenes/enemies/slime.tscn @@ -22,8 +22,8 @@ animations = [{ radius = 20.0 [node name="Slime" type="CharacterBody2D"] -collision_layer = 3 -collision_mask = 3 +collision_layer = 6 +collision_mask = 6 script = ExtResource("1_hnufy") [node name="AnimatedSprite2D" type="AnimatedSprite2D" parent="."] diff --git a/scenes/interface.gd b/scenes/interface.gd new file mode 100644 index 0000000..7f623f1 --- /dev/null +++ b/scenes/interface.gd @@ -0,0 +1,91 @@ +extends Control + +@onready var coeur1 = $VBoxContainer/HBoxContainer/TextureRect1 +@onready var coeur2 = $VBoxContainer/HBoxContainer/TextureRect2 +@onready var coeur3 = $VBoxContainer/HBoxContainer/TextureRect3 +@onready var coeur4 = $VBoxContainer/HBoxContainer/TextureRect4 +@onready var coeur5 = $VBoxContainer/HBoxContainer/TextureRect5 +#Les coeurs, 1 étant le plus à gauche et 5 le plus à droite + +@onready var slot1 = $VBoxContainer/HBoxContainer2/TextureRect +@onready var slot2 = $VBoxContainer/HBoxContainer2/TextureRect2 + +@onready var life : int = 10 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + pass + +func set_life(pv : int) -> void : + for i in range(life, pv): + update_life(i) + update_life(pv) + +func update_life (pv : int) -> void : + match pv : + 0 : + coeur1.hide() + #Rajouter ici la gestion de la mort + 1 : + coeur1.texture = load("res://ressources/images/half_heart.svg") + 2 : + coeur1.texture = load("res://ressources/images/full_heart.svg") + coeur2.hide() + 3 : + coeur2.texture = load("res://ressources/images/half_heart.svg") + coeur2.show() + 4 : + coeur2.texture = load("res://ressources/images/full_heart.svg") + coeur3.hide() + 5 : + coeur3.texture = load("res://ressources/images/half_heart.svg") + coeur3.show() + 6 : + coeur3.texture = load("res://ressources/images/full_heart.svg") + coeur4.hide() + 7 : + coeur4.texture = load("res://ressources/images/half_heart.svg") + coeur4.show() + 8 : + coeur4.texture = load("res://ressources/images/full_heart.svg") + coeur5.hide() + 9 : + coeur5.texture = load("res://ressources/images/half_heart.svg") + coeur5.show() + 10 : + coeur5.texture = load("res://ressources/images/full_heart.svg") + _ : + return + + life = pv + + +func update_instrument (listeInstrument : Array) -> void : + if len(listeInstrument) < 2 : + slot1.texture = load("res://ressources/images/empty_slot.svg") + slot2.texture = load("res://ressources/images/empty_slot.svg") + + match listeInstrument[0] : + "flute" : + slot1.texture = load("res://ressources/images/flute.svg") + "tambour" : + slot1.texture = load("res://ressources/images/tambour.svg") + "lyre" : + slot1.texture = load("res://ressources/images/lyre.svg") + _ : + slot1.texture = load("res://ressources/images/empty_slot.svg") + + match listeInstrument[1] : + "flute" : + slot2.texture = load("res://ressources/images/flute.svg") + "tambour" : + slot2.texture = load("res://ressources/images/tambour.svg") + "lyre" : + slot2.texture = load("res://ressources/images/lyre.svg") + _ : + slot2.texture = load("res://ressources/images/empty_slot.svg") diff --git a/scenes/interface.tscn b/scenes/interface.tscn new file mode 100644 index 0000000..d24e6ae --- /dev/null +++ b/scenes/interface.tscn @@ -0,0 +1,99 @@ +[gd_scene load_steps=4 format=3 uid="uid://cnd2a1x1smulq"] + +[ext_resource type="Script" path="res://scenes/interface.gd" id="1_5p24o"] +[ext_resource type="Texture2D" uid="uid://jyrl33rv1fnp" path="res://ressources/images/full_heart.svg" id="2_opn3r"] +[ext_resource type="Texture2D" uid="uid://cy7cv4qcmyyol" path="res://ressources/images/empty_slot.svg" id="3_8aruj"] + +[node name="Control" type="Control"] +layout_mode = 3 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource("1_5p24o") + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +layout_mode = 0 +offset_right = 1280.0 +offset_bottom = 720.0 + +[node name="HSeparator2" type="HSeparator" parent="VBoxContainer"] +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0) +custom_minimum_size = Vector2(0, 12) +layout_mode = 2 + +[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="VSeparator" type="VSeparator" parent="VBoxContainer/HBoxContainer"] +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0) +custom_minimum_size = Vector2(32, 0) +layout_mode = 2 + +[node name="TextureRect1" type="TextureRect" parent="VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_opn3r") +expand_mode = 1 + +[node name="TextureRect2" type="TextureRect" parent="VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_opn3r") +expand_mode = 1 + +[node name="TextureRect3" type="TextureRect" parent="VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_opn3r") +expand_mode = 1 + +[node name="TextureRect4" type="TextureRect" parent="VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_opn3r") +expand_mode = 1 + +[node name="TextureRect5" type="TextureRect" parent="VBoxContainer/HBoxContainer"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("2_opn3r") +expand_mode = 1 + +[node name="HSeparator" type="HSeparator" parent="VBoxContainer"] +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0) +layout_mode = 2 +size_flags_vertical = 3 + +[node name="HBoxContainer2" type="HBoxContainer" parent="VBoxContainer"] +layout_mode = 2 + +[node name="VSeparator" type="VSeparator" parent="VBoxContainer/HBoxContainer2"] +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0) +custom_minimum_size = Vector2(32, 0) +layout_mode = 2 + +[node name="TextureRect" type="TextureRect" parent="VBoxContainer/HBoxContainer2"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("3_8aruj") +expand_mode = 1 + +[node name="TextureRect2" type="TextureRect" parent="VBoxContainer/HBoxContainer2"] +custom_minimum_size = Vector2(64, 64) +layout_mode = 2 +texture = ExtResource("3_8aruj") +expand_mode = 1 + +[node name="HSeparator3" type="HSeparator" parent="VBoxContainer"] +modulate = Color(1, 1, 1, 0) +self_modulate = Color(1, 1, 1, 0) +custom_minimum_size = Vector2(0, 12) +layout_mode = 2 diff --git a/scenes/player_melodie.tscn b/scenes/player_melodie.tscn index 7cc90e9..39b5e2a 100644 --- a/scenes/player_melodie.tscn +++ b/scenes/player_melodie.tscn @@ -8,6 +8,7 @@ radius = 6.0 height = 32.0 [node name="Player_Melodie" type="CharacterBody2D"] +collision_layer = 5 script = ExtResource("1_7sg4g") [node name="Sprite2D" type="Sprite2D" parent="."] diff --git a/scenes/room.gd b/scenes/room.gd index 5fbafdf..4b0719a 100644 --- a/scenes/room.gd +++ b/scenes/room.gd @@ -1,6 +1,8 @@ extends Node2D @onready var menu_parametres = $Menu_parametres +@onready var interface = $Interface +@onready var musique = $Musique # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -22,3 +24,16 @@ func on_exit_parametres() -> void : get_tree().paused = false menu_parametres.visible = false menu_parametres.set_process(false) + + +func _on_audio_stream_player_finished() -> void: + musique.play() + +func set_musique(nom : String) -> void : + match nom : + "idle" : + musique.stream = load("res://ressources/sons/idle_theme.wav") + "fight" : + musique.stream = load("res://ressources/sons/fight_theme.wav") + _ : + pass diff --git a/scripts/Instrument/balle.gd b/scripts/Instrument/balle.gd index f01c97b..6209e30 100644 --- a/scripts/Instrument/balle.gd +++ b/scripts/Instrument/balle.gd @@ -13,4 +13,6 @@ func Collision(body: Node2D) -> void: if body.is_in_group("World_Border") : queue_free() if body.is_in_group("Enemies") : + body.take_damage(1) + print(body.vie) queue_free() diff --git a/scripts/Instrument/fusil_pompe.gd b/scripts/Instrument/fusil_pompe.gd index 4e5abfc..c5d9f06 100644 --- a/scripts/Instrument/fusil_pompe.gd +++ b/scripts/Instrument/fusil_pompe.gd @@ -1,7 +1,7 @@ extends Area2D var timer = 0.0 -var cooldown = 0.35 +var cooldown = 0.3 func _process(delta: float) -> void: timer += delta @@ -9,6 +9,5 @@ func _process(delta: float) -> void: queue_free() func Collision(body: Node2D) -> void: - if body.is_in_group("Enemies") : - queue_free() + body.take_damage(3) diff --git a/scripts/Instrument/onde.gd b/scripts/Instrument/onde.gd index 460800b..78b8915 100644 --- a/scripts/Instrument/onde.gd +++ b/scripts/Instrument/onde.gd @@ -1,7 +1,7 @@ extends Area2D var timer = 0.0 -var cooldown = 1.5 +var cooldown = 0.33 func _process(delta: float) -> void: timer += delta @@ -11,4 +11,4 @@ func _process(delta: float) -> void: func Collision(body: Node2D) -> void: if body.is_in_group("Enemies") : - queue_free() + body.take_damage(2) diff --git a/scripts/player_control.gd b/scripts/player_control.gd index 584c819..788e03a 100644 --- a/scripts/player_control.gd +++ b/scripts/player_control.gd @@ -21,6 +21,8 @@ var lyre_cooldown = 1 var slot = [null, null] +var vie = 10 + func _ready() -> void: flute = load("res://scripts/Instrument/Flute.gd").new() flute.set_scene_parent(get_tree().get_root()) @@ -99,3 +101,8 @@ func _process(delta: float) -> void: lyre_timer = lyre_cooldown +func take_damage(dmg : int) : + vie -= dmg + print(vie) + if vie <= 0: + queue_free()