From bd91fe76b75c27056d2a603f6aef312a7afd5b74 Mon Sep 17 00:00:00 2001 From: Lohan Date: Sat, 1 Mar 2025 22:07:11 +0100 Subject: [PATCH] feat (?) First tries --- assets/Bordered_Black_Square.png | Bin 0 -> 15963 bytes assets/Bordered_Black_Square.png.import | 34 ++++++++++++ assets/arrow.svg | 1 + assets/arrow.svg.import | 37 +++++++++++++ assets/triangle.svg | 3 + assets/triangle.svg.import | 37 +++++++++++++ game.tscn | 11 +++- project.godot | 40 ++++++++++++++ scenes/barrier.tscn | 26 +++++++++ scenes/boa1545.tmp | 9 +++ scenes/boa3EE7.tmp | 8 +++ scenes/boa51BE.tmp | 8 +++ scenes/boa68D0.tmp | 8 +++ scenes/boa8867.tmp | 8 +++ scenes/boa9849.tmp | 7 +++ scenes/boa99FC.tmp | 9 +++ scenes/boaB2D7.tmp | 7 +++ scenes/boaBB59.tmp | 8 +++ scenes/boaCF4E.tmp | 9 +++ scenes/boat.tscn | 13 +++++ scenes/gam25FD.tmp | 30 ++++++++++ scenes/plaE0E6.tmp | 20 +++++++ scenes/plaE0E7.tmp | 20 +++++++ scenes/player.tscn | 27 ++++----- scenes/tile.tscn | 10 ++++ scripts/boat.gd | 70 ++++++++++++++++++++++++ scripts/game.gd | 27 +++++++++ scripts/player.gd | 48 ++++++++++++++-- 28 files changed, 513 insertions(+), 22 deletions(-) create mode 100644 assets/Bordered_Black_Square.png create mode 100644 assets/Bordered_Black_Square.png.import create mode 100644 assets/arrow.svg create mode 100644 assets/arrow.svg.import create mode 100644 assets/triangle.svg create mode 100644 assets/triangle.svg.import create mode 100644 scenes/barrier.tscn create mode 100644 scenes/boa1545.tmp create mode 100644 scenes/boa3EE7.tmp create mode 100644 scenes/boa51BE.tmp create mode 100644 scenes/boa68D0.tmp create mode 100644 scenes/boa8867.tmp create mode 100644 scenes/boa9849.tmp create mode 100644 scenes/boa99FC.tmp create mode 100644 scenes/boaB2D7.tmp create mode 100644 scenes/boaBB59.tmp create mode 100644 scenes/boaCF4E.tmp create mode 100644 scenes/boat.tscn create mode 100644 scenes/gam25FD.tmp create mode 100644 scenes/plaE0E6.tmp create mode 100644 scenes/plaE0E7.tmp create mode 100644 scenes/tile.tscn create mode 100644 scripts/boat.gd create mode 100644 scripts/game.gd diff --git a/assets/Bordered_Black_Square.png b/assets/Bordered_Black_Square.png new file mode 100644 index 0000000000000000000000000000000000000000..3026d70c388bff1e64a6b347e658be5f1efb7731 GIT binary patch literal 15963 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 literal 0 HcmV?d00001 diff --git a/assets/Bordered_Black_Square.png.import b/assets/Bordered_Black_Square.png.import new file mode 100644 index 0000000..e2df577 --- /dev/null +++ b/assets/Bordered_Black_Square.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bhx36hs83ynqs" +path="res://.godot/imported/Bordered_Black_Square.png-ff534a515f4750944c45a40d35861714.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Bordered_Black_Square.png" +dest_files=["res://.godot/imported/Bordered_Black_Square.png-ff534a515f4750944c45a40d35861714.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/assets/arrow.svg b/assets/arrow.svg new file mode 100644 index 0000000..58dbd41 --- /dev/null +++ b/assets/arrow.svg @@ -0,0 +1 @@ +Trade_Icons \ No newline at end of file diff --git a/assets/arrow.svg.import b/assets/arrow.svg.import new file mode 100644 index 0000000..12cfb7d --- /dev/null +++ b/assets/arrow.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dprlu0x5gcgon" +path="res://.godot/imported/arrow.svg-a996b9f5a5e99d25f45d2c6cd1a7999b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/arrow.svg" +dest_files=["res://.godot/imported/arrow.svg-a996b9f5a5e99d25f45d2c6cd1a7999b.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/assets/triangle.svg b/assets/triangle.svg new file mode 100644 index 0000000..489d930 --- /dev/null +++ b/assets/triangle.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/assets/triangle.svg.import b/assets/triangle.svg.import new file mode 100644 index 0000000..0ac5f46 --- /dev/null +++ b/assets/triangle.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://s4iiumvei5wc" +path="res://.godot/imported/triangle.svg-2246efe0f7e4fdb6705e62b9f62230d2.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/triangle.svg" +dest_files=["res://.godot/imported/triangle.svg-2246efe0f7e4fdb6705e62b9f62230d2.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=8.071 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/game.tscn b/game.tscn index afe29a3..7322001 100644 --- a/game.tscn +++ b/game.tscn @@ -1,8 +1,15 @@ -[gd_scene load_steps=2 format=3 uid="uid://c0s77m0ea3sey"] +[gd_scene load_steps=4 format=3 uid="uid://c0s77m0ea3sey"] +[ext_resource type="Script" path="res://scripts/game.gd" id="1_41a5u"] [ext_resource type="PackedScene" uid="uid://dy71gkll44btc" path="res://scenes/player.tscn" id="1_geqht"] +[ext_resource type="PackedScene" uid="uid://c7todenm3hn4d" path="res://scenes/boat.tscn" id="2_qmvsn"] [node name="Game" type="Node2D"] +position = Vector2(559, 282) +script = ExtResource("1_41a5u") [node name="Player" parent="." instance=ExtResource("1_geqht")] -position = Vector2(567, 297) +position = Vector2(-685, -433) + +[node name="Boat" parent="." instance=ExtResource("2_qmvsn")] +position = Vector2(-642, -351) diff --git a/project.godot b/project.godot index 37ebab5..7898742 100644 --- a/project.godot +++ b/project.godot @@ -14,3 +14,43 @@ config/name="BoatCoop" run/main_scene="res://game.tscn" config/features=PackedStringArray("4.3", "Forward Plus") config/icon="res://icon.svg" + +[editor] + +version_control/plugin_name="GitPlugin" +version_control/autoload_on_startup=true + +[input] + +ui_left={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194319,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":13,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +ui_right={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194321,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +ui_up={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194320,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} +ui_down={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194322,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":1.0,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +] +} diff --git a/scenes/barrier.tscn b/scenes/barrier.tscn new file mode 100644 index 0000000..6fa1c14 --- /dev/null +++ b/scenes/barrier.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=3 uid="uid://crxp1lat0mj1n"] + +[sub_resource type="Gradient" id="Gradient_7c5k4"] +offsets = PackedFloat32Array(0, 0.00371747, 0.736059, 0.754647, 1) +colors = PackedColorArray(0, 0, 0, 1, 0.94902, 0.0509804, 0.0509804, 1, 0.15042, 0.503262, 0.834652, 1, 0.117488, 0.521912, 0.866968, 1, 0.94902, 0.0509804, 0.0509804, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_eesv4"] +gradient = SubResource("Gradient_7c5k4") +fill_from = Vector2(1, 0) +fill_to = Vector2(0, 1) + +[sub_resource type="SegmentShape2D" id="SegmentShape2D_dliv6"] +b = Vector2(0, 27.7419) + +[node name="Barrier" type="StaticBody2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(5.96046e-08, 0) +scale = Vector2(0.203125, 2.01563) +texture = SubResource("GradientTexture2D_eesv4") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(-3.8147e-06, -65) +scale = Vector2(4.65, 4.65) +shape = SubResource("SegmentShape2D_dliv6") +one_way_collision_margin = 66.3 diff --git a/scenes/boa1545.tmp b/scenes/boa1545.tmp new file mode 100644 index 0000000..0be8631 --- /dev/null +++ b/scenes/boa1545.tmp @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null +barrier_scene = null diff --git a/scenes/boa3EE7.tmp b/scenes/boa3EE7.tmp new file mode 100644 index 0000000..1d52096 --- /dev/null +++ b/scenes/boa3EE7.tmp @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null diff --git a/scenes/boa51BE.tmp b/scenes/boa51BE.tmp new file mode 100644 index 0000000..1d52096 --- /dev/null +++ b/scenes/boa51BE.tmp @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null diff --git a/scenes/boa68D0.tmp b/scenes/boa68D0.tmp new file mode 100644 index 0000000..1d52096 --- /dev/null +++ b/scenes/boa68D0.tmp @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null diff --git a/scenes/boa8867.tmp b/scenes/boa8867.tmp new file mode 100644 index 0000000..1d52096 --- /dev/null +++ b/scenes/boa8867.tmp @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null diff --git a/scenes/boa9849.tmp b/scenes/boa9849.tmp new file mode 100644 index 0000000..860dcd3 --- /dev/null +++ b/scenes/boa9849.tmp @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") diff --git a/scenes/boa99FC.tmp b/scenes/boa99FC.tmp new file mode 100644 index 0000000..0be8631 --- /dev/null +++ b/scenes/boa99FC.tmp @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null +barrier_scene = null diff --git a/scenes/boaB2D7.tmp b/scenes/boaB2D7.tmp new file mode 100644 index 0000000..860dcd3 --- /dev/null +++ b/scenes/boaB2D7.tmp @@ -0,0 +1,7 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") diff --git a/scenes/boaBB59.tmp b/scenes/boaBB59.tmp new file mode 100644 index 0000000..1d52096 --- /dev/null +++ b/scenes/boaBB59.tmp @@ -0,0 +1,8 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null diff --git a/scenes/boaCF4E.tmp b/scenes/boaCF4E.tmp new file mode 100644 index 0000000..0be8631 --- /dev/null +++ b/scenes/boaCF4E.tmp @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") +tile_scene = null +barrier_scene = null diff --git a/scenes/boat.tscn b/scenes/boat.tscn new file mode 100644 index 0000000..a7769f4 --- /dev/null +++ b/scenes/boat.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=4 format=3 uid="uid://c7todenm3hn4d"] + +[ext_resource type="Script" path="res://scripts/boat.gd" id="1_brclq"] +[ext_resource type="PackedScene" uid="uid://bmxg7u37aon0o" path="res://scenes/tile.tscn" id="2_b8wau"] +[ext_resource type="PackedScene" uid="uid://crxp1lat0mj1n" path="res://scenes/barrier.tscn" id="3_mdatr"] + +[node name="Boat" type="Node2D"] +position = Vector2(5, -2) +script = ExtResource("1_brclq") + +[node name="Tile" parent="." instance=ExtResource("2_b8wau")] + +[node name="Barrier" parent="." instance=ExtResource("3_mdatr")] diff --git a/scenes/gam25FD.tmp b/scenes/gam25FD.tmp new file mode 100644 index 0000000..e5cd615 --- /dev/null +++ b/scenes/gam25FD.tmp @@ -0,0 +1,30 @@ +[gd_scene load_steps=6 format=3 uid="uid://c0s77m0ea3sey"] + +[ext_resource type="Script" path="res://scripts/game.gd" id="1_g5flc"] +[ext_resource type="PackedScene" uid="uid://dy71gkll44btc" path="res://scenes/player.tscn" id="2_3msrq"] +[ext_resource type="PackedScene" uid="uid://c7todenm3hn4d" path="res://scenes/boat.tscn" id="3_5kild"] +[ext_resource type="PackedScene" uid="uid://bmxg7u37aon0o" path="res://scenes/tile.tscn" id="4_cd0bw"] + +[sub_resource type="SegmentShape2D" id="SegmentShape2D_dliv6"] + +[node name="Game" type="Node2D"] +position = Vector2(552, 300) +script = ExtResource("1_g5flc") + +[node name="Player" parent="." instance=ExtResource("2_3msrq")] +z_index = 1 +position = Vector2(-546, -300) + +[node name="Boat" parent="." instance=ExtResource("3_5kild")] +position = Vector2(-548, -304) + +[node name="Tile" parent="Boat" instance=ExtResource("4_cd0bw")] +position = Vector2(6, 6) + +[node name="Barrier" type="StaticBody2D" parent="Boat"] + +[node name="Sprite2D" type="Sprite2D" parent="Boat/Barrier"] + +[node name="CollisionShape2D" type="CollisionShape2D" parent="Boat/Barrier"] +shape = SubResource("SegmentShape2D_dliv6") +one_way_collision_margin = 63.0 diff --git a/scenes/plaE0E6.tmp b/scenes/plaE0E6.tmp new file mode 100644 index 0000000..01b8b94 --- /dev/null +++ b/scenes/plaE0E6.tmp @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://dy71gkll44btc"] + +[ext_resource type="Script" path="res://scripts/player.gd" id="1_jlots"] +[ext_resource type="Texture2D" uid="uid://s4iiumvei5wc" path="res://assets/triangle.svg" id="2_jjceo"] + +[node name="Player" type="CharacterBody2D"] +motion_mode = 1 +script = ExtResource("1_jlots") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +position = Vector2(-14, 2.86102e-06) +rotation = 1.58969 +scale = Vector2(0.998311, 1.01563) +polygon = PackedVector2Array(-9.03255, -0.816984, -0.51107, -26.5797, 8.99469, -1.15189) + +[node name="Sprite2D2" type="Sprite2D" parent="."] +position = Vector2(0, -9.53674e-07) +rotation = -1.5708 +scale = Vector2(0.230709, 0.642787) +texture = ExtResource("2_jjceo") diff --git a/scenes/plaE0E7.tmp b/scenes/plaE0E7.tmp new file mode 100644 index 0000000..01b8b94 --- /dev/null +++ b/scenes/plaE0E7.tmp @@ -0,0 +1,20 @@ +[gd_scene load_steps=3 format=3 uid="uid://dy71gkll44btc"] + +[ext_resource type="Script" path="res://scripts/player.gd" id="1_jlots"] +[ext_resource type="Texture2D" uid="uid://s4iiumvei5wc" path="res://assets/triangle.svg" id="2_jjceo"] + +[node name="Player" type="CharacterBody2D"] +motion_mode = 1 +script = ExtResource("1_jlots") + +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +position = Vector2(-14, 2.86102e-06) +rotation = 1.58969 +scale = Vector2(0.998311, 1.01563) +polygon = PackedVector2Array(-9.03255, -0.816984, -0.51107, -26.5797, 8.99469, -1.15189) + +[node name="Sprite2D2" type="Sprite2D" parent="."] +position = Vector2(0, -9.53674e-07) +rotation = -1.5708 +scale = Vector2(0.230709, 0.642787) +texture = ExtResource("2_jjceo") diff --git a/scenes/player.tscn b/scenes/player.tscn index f9cbaf7..01b8b94 100644 --- a/scenes/player.tscn +++ b/scenes/player.tscn @@ -1,23 +1,20 @@ -[gd_scene load_steps=5 format=3 uid="uid://dy71gkll44btc"] +[gd_scene load_steps=3 format=3 uid="uid://dy71gkll44btc"] [ext_resource type="Script" path="res://scripts/player.gd" id="1_jlots"] - -[sub_resource type="RectangleShape2D" id="RectangleShape2D_scfaw"] -size = Vector2(80, 124) - -[sub_resource type="Gradient" id="Gradient_pnm6c"] -colors = PackedColorArray(1, 1, 1, 1, 1, 1, 1, 1) - -[sub_resource type="GradientTexture1D" id="GradientTexture1D_wyt1d"] -gradient = SubResource("Gradient_pnm6c") +[ext_resource type="Texture2D" uid="uid://s4iiumvei5wc" path="res://assets/triangle.svg" id="2_jjceo"] [node name="Player" type="CharacterBody2D"] motion_mode = 1 script = ExtResource("1_jlots") -[node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("RectangleShape2D_scfaw") +[node name="CollisionPolygon2D" type="CollisionPolygon2D" parent="."] +position = Vector2(-14, 2.86102e-06) +rotation = 1.58969 +scale = Vector2(0.998311, 1.01563) +polygon = PackedVector2Array(-9.03255, -0.816984, -0.51107, -26.5797, 8.99469, -1.15189) -[node name="Sprite2D" type="Sprite2D" parent="."] -scale = Vector2(0.3125, 126) -texture = SubResource("GradientTexture1D_wyt1d") +[node name="Sprite2D2" type="Sprite2D" parent="."] +position = Vector2(0, -9.53674e-07) +rotation = -1.5708 +scale = Vector2(0.230709, 0.642787) +texture = ExtResource("2_jjceo") diff --git a/scenes/tile.tscn b/scenes/tile.tscn new file mode 100644 index 0000000..9048b2d --- /dev/null +++ b/scenes/tile.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=2 format=3 uid="uid://bmxg7u37aon0o"] + +[ext_resource type="Texture2D" uid="uid://bhx36hs83ynqs" path="res://assets/Bordered_Black_Square.png" id="1_bgcjk"] + +[node name="Tile" type="Node2D"] + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(0, 2.28882e-05) +scale = Vector2(0.074, 0.0740913) +texture = ExtResource("1_bgcjk") diff --git a/scripts/boat.gd b/scripts/boat.gd new file mode 100644 index 0000000..dd0145a --- /dev/null +++ b/scripts/boat.gd @@ -0,0 +1,70 @@ +extends Node2D + +@export var tile_scene: PackedScene = preload("res://scenes/tile.tscn") +@export var barrier_scene: PackedScene = preload("res://scenes/barrier.tscn") +var tiles = [] +var tile_size = 128.0 +var test_broken_tiles = true +const boatSize = 5 +var speed = 100 +var velocity = Vector2() + +func _ready(): + spawn_boat_tiles() + spawn_boat_barriers() + +func spawn_boat_tiles(): + tiles.clear() + + for y in range(boatSize): + var row = [] + for x in range(boatSize): + if test_broken_tiles && randf() < 0.7 || (x == floor(boatSize/2) && y == floor(boatSize/2)): # 70% de chance de spawn une tuile pour tester les bateaux incomplets + var tile = tile_scene.instantiate() + add_child(tile) + + #Positionner les tuiles pour que l'on spawne toujours au centre + tile.position = Vector2( + (x - ((boatSize - 1) * 0.5)) * tile_size, + (y - ((boatSize - 1) * 0.5)) * tile_size + ) + + row.append(tile) + else: + row.append(null) # On garde la structure mais on marque la tuile manquante + tiles.append(row) + + +func spawn_boat_barriers(): + for x in range(tiles.size()): + for y in range(tiles[x].size()): + if tiles[x][y]: + var x_pos = [null,null,null,null]; + var y_pos = [null,null,null,null]; + var rotations = [90, 180, 270, 360] + if x == 0 || !tiles[x-1][y]: + x_pos[0] = tiles[x][y].position.x + y_pos[0] = tiles[x][y].position.y - (tile_size/2) + if y == 0 || !tiles[x][y-1]: + x_pos[1] = tiles[x][y].position.x - (tile_size/2) + y_pos[1] = tiles[x][y].position.y + if x == tiles.size()-1 || !tiles[x+1][y]: + x_pos[2] = tiles[x][y].position.x + y_pos[2] = tiles[x][y].position.y + (tile_size/2) + if y == tiles[x].size()-1 || !tiles[x][y+1]: + x_pos[3] = tiles[x][y].position.x + (tile_size/2) + y_pos[3] = tiles[x][y].position.y + for z in range(4): + if x_pos[z] != null && y_pos[z] != null: + var barrier = barrier_scene.instantiate() + add_child(barrier) + barrier.position = Vector2( + x_pos[z], + y_pos[z] + ) + # On applique la rotation à la barrière + barrier.rotation = deg_to_rad(rotations[z]) + +func _physics_process(delta): + #Just spinning + rotation += delta/2 diff --git a/scripts/game.gd b/scripts/game.gd new file mode 100644 index 0000000..69fafcd --- /dev/null +++ b/scripts/game.gd @@ -0,0 +1,27 @@ +extends Node2D + +@export var player_scene: PackedScene = preload("res://scenes/player.tscn") +@export var boat_scene: PackedScene = preload("res://scenes/boat.tscn") + +var player_instance: CharacterBody2D +var boat_instance: Node2D + +func _ready(): + # On enlève les scènes par défau + var default_boat = $Boat + var default_player = $Player + if default_boat: + default_boat.queue_free() + if default_player: + default_player.queue_free() + + # On instancie les scènes que l'on veut garder + boat_instance = boat_scene.instantiate() + player_instance = player_scene.instantiate() + + # On ajoue les scènes essentielles à la scène principale + add_child(boat_instance) + add_child(player_instance) + + # Et on assigne le bateau au joueur + player_instance.boat = boat_instance diff --git a/scripts/player.gd b/scripts/player.gd index 5f3b468..05d3c9b 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -1,10 +1,48 @@ extends CharacterBody2D const SPEED = 300.0 -const JUMP_VELOCITY = -400.0 +@export var boat: Node2D -func _physics_process(delta): - velocity.x = Input.get_axis("ui_left", "ui_right") * SPEED - velocity.y = Input.get_axis("ui_up", "ui_down") * SPEED +const TILE_SIZE = 128 +var relative_position_on_boat = Vector2(0, 0) +var is_on_boat = true +var last_boat_rotation = 0.0 - move_and_slide() +func _ready(): + if boat: + relative_position_on_boat = position - boat.position + last_boat_rotation = boat.rotation + +func _physics_process(_delta): + # On tourne le joueur vers la souris + var mouse_position = get_global_mouse_position() + look_at(mouse_position) + if is_on_boat: + if boat: + # On calcule la difference de rotation du bateau depuis le dernier mouvement + var delta_rotation = boat.rotation - last_boat_rotation + + # On adape la position du joueur en fonction de la nouvelle rota + relative_position_on_boat = relative_position_on_boat.rotated(delta_rotation) + position = boat.position + relative_position_on_boat + + # On autorise le joueur à se déplacer dans le bateau + velocity.x = Input.get_axis("ui_left", "ui_right") * SPEED + velocity.y = Input.get_axis("ui_up", "ui_down") * SPEED + + move_and_slide() + + # Mise à jour des paramètres pour le déplacement du joueur en fonction du bateau + relative_position_on_boat = position - boat.position + last_boat_rotation = boat.rotation + + else: + # Quand on est pas sur le bateau, on se déplace librement (le lapin surtout) + velocity.x = Input.get_axis("ui_left", "ui_right") * SPEED/2 + velocity.y = Input.get_axis("ui_up", "ui_down") * SPEED/2 + + move_and_slide() + +func set_on_boat(on_boat: bool): + #TODO + is_on_boat = on_boat