diff --git a/assets/Slider.png b/assets/Slider.png new file mode 100644 index 0000000..8666b46 Binary files /dev/null and b/assets/Slider.png differ diff --git a/assets/Slider.png.import b/assets/Slider.png.import new file mode 100644 index 0000000..c7d1985 --- /dev/null +++ b/assets/Slider.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dbspjkdc5q1mc" +path="res://.godot/imported/Slider.png-7121d2749dc259e03f67f754efc5d0ba.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/Slider.png" +dest_files=["res://.godot/imported/Slider.png-7121d2749dc259e03f67f754efc5d0ba.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/Slider.pxo b/assets/Slider.pxo new file mode 100644 index 0000000..da98ab6 Binary files /dev/null and b/assets/Slider.pxo differ diff --git a/assets/SpeedScale.png b/assets/SpeedScale.png new file mode 100644 index 0000000..cd6962f Binary files /dev/null and b/assets/SpeedScale.png differ diff --git a/assets/SpeedScale.png.import b/assets/SpeedScale.png.import new file mode 100644 index 0000000..6064647 --- /dev/null +++ b/assets/SpeedScale.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://blj4h34gr3s0q" +path="res://.godot/imported/SpeedScale.png-1c213110fe8f036530597123ee8887de.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://assets/SpeedScale.png" +dest_files=["res://.godot/imported/SpeedScale.png-1c213110fe8f036530597123ee8887de.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/SpeedScale.pxo b/assets/SpeedScale.pxo new file mode 100644 index 0000000..ecfadfc Binary files /dev/null and b/assets/SpeedScale.pxo differ diff --git a/project.godot b/project.godot index b8aa742..8489401 100644 --- a/project.godot +++ b/project.godot @@ -12,6 +12,7 @@ config_version=5 config/name="GmtkGameJam2024" config/tags=PackedStringArray("game_jam") +run/main_scene="res://scenes/Main/main.tscn" config/features=PackedStringArray("4.3", "GL Compatibility") config/icon="res://icon.svg" @@ -20,6 +21,14 @@ config/icon="res://icon.svg" DebugMenu="*res://addons/debug_menu/debug_menu.tscn" GLOBAL="*res://scenes/Globals/global.gd" +[display] + +window/size/viewport_width=440 +window/size/viewport_height=1080 +window/stretch/aspect="keep_height" +window/stretch/scale=0.5 +window/handheld/orientation=1 + [editor] version_control/plugin_name="GitPlugin" @@ -63,13 +72,31 @@ rotate_right={ , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":12,"pressure":0.0,"pressed":true,"script":null) ] } +stop={ +"deadzone": 0.5, +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) +] +} [internationalization] locale/locale_filter_mode=0 +[layer_names] + +2d_physics/layer_1="map" +2d_physics/layer_2="blockPart" +2d_physics/layer_3="blockPartDetector" +2d_physics/layer_4="border" +2d_physics/layer_5="mapDetector" +2d_physics/layer_6="block" +2d_physics/layer_7="blockDetector" + [rendering] +textures/canvas_textures/default_texture_filter=0 renderer/rendering_method="gl_compatibility" renderer/rendering_method.mobile="gl_compatibility" textures/vram_compression/import_etc2_astc=true diff --git a/scenes/Block/1x3/1x3_Collision.tscn b/scenes/Block/1x3/1x3_Collision.tscn new file mode 100644 index 0000000..076c7c0 --- /dev/null +++ b/scenes/Block/1x3/1x3_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://d31ahyg7o077g"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(-59, -5, 123, -5, 123, -59, -59, -59) diff --git a/scenes/Block/1x3/1x3_block.gd b/scenes/Block/1x3/1x3_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/1x3/1x3_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/1x3/1x3_block.tscn b/scenes/Block/1x3/1x3_block.tscn new file mode 100644 index 0000000..7d6df01 --- /dev/null +++ b/scenes/Block/1x3/1x3_block.tscn @@ -0,0 +1,58 @@ +[gd_scene load_steps=4 format=3 uid="uid://ddxt76ksj1jw"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_gs0af"] +[ext_resource type="Script" path="res://scenes/Block/1x3/1x3_block.gd" id="2_p067p"] +[ext_resource type="PackedScene" uid="uid://d31ahyg7o077g" path="res://scenes/Block/1x3/1x3_Collision.tscn" id="3_dydci"] + +[node name="1x3-Block" instance=ExtResource("1_gs0af")] +script = ExtResource("2_p067p") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_dydci")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_dydci")] +position = Vector2(0, -64) +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_dydci")] +position = Vector2(64, -64) +rotation = 3.14159 + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_dydci")] +position = Vector2(64, 0) +rotation = 4.71238 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, -96) diff --git a/scenes/Block/1x4/1x4_Collision.tscn b/scenes/Block/1x4/1x4_Collision.tscn new file mode 100644 index 0000000..291c693 --- /dev/null +++ b/scenes/Block/1x4/1x4_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://bp15gv616ch2q"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(-123, -5, 123, -5, 123, -59, -123, -59) diff --git a/scenes/Block/1x4/1x4_block.gd b/scenes/Block/1x4/1x4_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/1x4/1x4_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/1x4/1x4_block.tscn b/scenes/Block/1x4/1x4_block.tscn new file mode 100644 index 0000000..e206ff3 --- /dev/null +++ b/scenes/Block/1x4/1x4_block.tscn @@ -0,0 +1,70 @@ +[gd_scene load_steps=4 format=3 uid="uid://cgyslql51mvlm"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_g3k8p"] +[ext_resource type="Script" path="res://scenes/Block/1x4/1x4_block.gd" id="2_1erjx"] +[ext_resource type="PackedScene" uid="uid://bp15gv616ch2q" path="res://scenes/Block/1x4/1x4_Collision.tscn" id="3_s74sy"] + +[node name="1x4-Block" instance=ExtResource("1_g3k8p")] +script = ExtResource("2_1erjx") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_s74sy")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_s74sy")] +position = Vector2(0, -64) +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_s74sy")] +position = Vector2(0, -64) +rotation = 3.14159 + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_s74sy")] +position = Vector2(64, -64) +rotation = -1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(32, -160) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(32, -96) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(-96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, -96) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(32, -160) diff --git a/scenes/Block/2x2/2x2_Collision.tscn b/scenes/Block/2x2/2x2_Collision.tscn new file mode 100644 index 0000000..f916b37 --- /dev/null +++ b/scenes/Block/2x2/2x2_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://kv3xj8qgo8bt"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(59, 59, -59, 59, -59, -59, 59, -59) diff --git a/scenes/Block/2x2/2x2_block.gd b/scenes/Block/2x2/2x2_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/2x2/2x2_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/2x2/2x2_block.tscn b/scenes/Block/2x2/2x2_block.tscn new file mode 100644 index 0000000..69c308d --- /dev/null +++ b/scenes/Block/2x2/2x2_block.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=4 format=3 uid="uid://dp4h8tas2iyqk"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_gmexj"] +[ext_resource type="Script" path="res://scenes/Block/2x2/2x2_block.gd" id="2_25xl5"] +[ext_resource type="PackedScene" uid="uid://kv3xj8qgo8bt" path="res://scenes/Block/2x2/2x2_Collision.tscn" id="3_qnfwy"] + +[node name="2x2-Block" instance=ExtResource("1_gmexj")] +script = ExtResource("2_25xl5") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_qnfwy")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_qnfwy")] + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_qnfwy")] + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_qnfwy")] + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(-32, 32) diff --git a/scenes/Block/2x3/2x3_Collision.tscn b/scenes/Block/2x3/2x3_Collision.tscn new file mode 100644 index 0000000..a60f49b --- /dev/null +++ b/scenes/Block/2x3/2x3_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://c3akl5atqyawx"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(59, 59, 59, -123, -59, -123, -59, 59) diff --git a/scenes/Block/2x3/2x3_block.gd b/scenes/Block/2x3/2x3_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/2x3/2x3_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/2x3/2x3_block.tscn b/scenes/Block/2x3/2x3_block.tscn new file mode 100644 index 0000000..98716a0 --- /dev/null +++ b/scenes/Block/2x3/2x3_block.tscn @@ -0,0 +1,90 @@ +[gd_scene load_steps=4 format=3 uid="uid://m0p5hh65ixef"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_7ihjd"] +[ext_resource type="Script" path="res://scenes/Block/2x3/2x3_block.gd" id="2_j00i1"] +[ext_resource type="PackedScene" uid="uid://c3akl5atqyawx" path="res://scenes/Block/2x3/2x3_Collision.tscn" id="3_hwreo"] + +[node name="Block" instance=ExtResource("1_7ihjd")] +script = ExtResource("2_j00i1") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_hwreo")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_hwreo")] +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_hwreo")] + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_hwreo")] +rotation = 1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(-32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(32, 32) + +[node name="Marker2D5" type="Marker2D" parent="Position 1" index="4"] +position = Vector2(32, -32) + +[node name="Marker2D6" type="Marker2D" parent="Position 1" index="5"] +position = Vector2(32, -96) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D5" type="Marker2D" parent="Position 2" index="4"] +position = Vector2(32, 32) + +[node name="Marker2D6" type="Marker2D" parent="Position 2" index="5"] +position = Vector2(96, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(-32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(32, 32) + +[node name="Marker2D5" type="Marker2D" parent="Position 3" index="4"] +position = Vector2(32, -32) + +[node name="Marker2D6" type="Marker2D" parent="Position 3" index="5"] +position = Vector2(32, -96) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D5" type="Marker2D" parent="Position 4" index="4"] +position = Vector2(32, 32) + +[node name="Marker2D6" type="Marker2D" parent="Position 4" index="5"] +position = Vector2(96, 32) diff --git a/scenes/Block/Fork/Fork_Collision.tscn b/scenes/Block/Fork/Fork_Collision.tscn new file mode 100644 index 0000000..34d322e --- /dev/null +++ b/scenes/Block/Fork/Fork_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://dc5jsudyiemsi"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(123, 59, 123, -59, 69, -59, 69, 5, -5, 5, -5, -59, -59, -59, -59, 5, -123, 5, -123, 59) diff --git a/scenes/Block/Fork/Fork_block.gd b/scenes/Block/Fork/Fork_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/Fork/Fork_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/Fork/Fork_block.tscn b/scenes/Block/Fork/Fork_block.tscn new file mode 100644 index 0000000..a6555a8 --- /dev/null +++ b/scenes/Block/Fork/Fork_block.tscn @@ -0,0 +1,91 @@ +[gd_scene load_steps=4 format=3 uid="uid://dbvc3pr7niwjj"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_hrv0c"] +[ext_resource type="Script" path="res://scenes/Block/Fork/Fork_block.gd" id="2_x7do8"] +[ext_resource type="PackedScene" uid="uid://dc5jsudyiemsi" path="res://scenes/Block/Fork/Fork_Collision.tscn" id="3_hwx0i"] + +[node name="Block" instance=ExtResource("1_hrv0c")] +script = ExtResource("2_x7do8") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_hwx0i")] + +[node name="CollisionPolygon2D2" parent="Tests/Position 2" index="0" instance=ExtResource("3_hwx0i")] +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_hwx0i")] +rotation = -3.14159 + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_hwx0i")] +rotation = -1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-96, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(96, 32) + +[node name="Marker2D5" type="Marker2D" parent="Position 1" index="4"] +position = Vector2(-32, -32) + +[node name="Marker2D6" type="Marker2D" parent="Position 1" index="5"] +position = Vector2(96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(-32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(-32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(-32, 96) + +[node name="Marker2D5" type="Marker2D" parent="Position 2" index="4"] +position = Vector2(32, -32) + +[node name="Marker2D6" type="Marker2D" parent="Position 2" index="5"] +position = Vector2(32, 96) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(-96, -32) + +[node name="Marker2D5" type="Marker2D" parent="Position 3" index="4"] +position = Vector2(32, 32) + +[node name="Marker2D6" type="Marker2D" parent="Position 3" index="5"] +position = Vector2(-96, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(32, 96) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(32, -96) + +[node name="Marker2D5" type="Marker2D" parent="Position 4" index="4"] +position = Vector2(-32, 32) + +[node name="Marker2D6" type="Marker2D" parent="Position 4" index="5"] +position = Vector2(-32, -96) diff --git a/scenes/Block/L-small/L-small_Collision.tscn b/scenes/Block/L-small/L-small_Collision.tscn new file mode 100644 index 0000000..786ad7b --- /dev/null +++ b/scenes/Block/L-small/L-small_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://sdjhhungtjpp"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(59, 59, 59, 5, -5, 5, -5, -59, -59, -59, -59, 59) diff --git a/scenes/Block/L-small/L-small_block.gd b/scenes/Block/L-small/L-small_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/L-small/L-small_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/L-small/L-small_block.tscn b/scenes/Block/L-small/L-small_block.tscn new file mode 100644 index 0000000..c69abf4 --- /dev/null +++ b/scenes/Block/L-small/L-small_block.tscn @@ -0,0 +1,55 @@ +[gd_scene load_steps=4 format=3 uid="uid://gmwso8esa8o8"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_41sok"] +[ext_resource type="PackedScene" uid="uid://sdjhhungtjpp" path="res://scenes/Block/L-small/L-small_Collision.tscn" id="2_1jxh0"] +[ext_resource type="Script" path="res://scenes/Block/L-small/L-small_block.gd" id="2_orqrx"] + +[node name="Block" instance=ExtResource("1_41sok")] +script = ExtResource("2_orqrx") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("2_1jxh0")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("2_1jxh0")] +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("2_1jxh0")] +rotation = -3.14159 + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("2_1jxh0")] +rotation = -1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(-32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, -32) diff --git a/scenes/Block/L/L_Collision.tscn b/scenes/Block/L/L_Collision.tscn new file mode 100644 index 0000000..8d66445 --- /dev/null +++ b/scenes/Block/L/L_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://ce6kkaplvq6w4"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(59, 59, 59, 5, -5, 5, -5, -123, -59, -123, -59, 59) diff --git a/scenes/Block/L/L_block.gd b/scenes/Block/L/L_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/L/L_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/L/L_block.tscn b/scenes/Block/L/L_block.tscn new file mode 100644 index 0000000..af33894 --- /dev/null +++ b/scenes/Block/L/L_block.tscn @@ -0,0 +1,69 @@ +[gd_scene load_steps=4 format=3 uid="uid://d3083acqn1d3a"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_er5ve"] +[ext_resource type="Script" path="res://scenes/Block/L/L_block.gd" id="2_q1cd1"] +[ext_resource type="PackedScene" uid="uid://ce6kkaplvq6w4" path="res://scenes/Block/L/L_Collision.tscn" id="3_wdblg"] + +[node name="Block" instance=ExtResource("1_er5ve")] +script = ExtResource("2_q1cd1") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_wdblg")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_wdblg")] +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_wdblg")] +position = Vector2(0, -64) +rotation = -3.14159 + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_wdblg")] +position = Vector2(64, 0) +rotation = -1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(-32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(96, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(32, -96) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(-32, -96) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(-32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(96, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(96, -32) diff --git a/scenes/Block/Snake/Snake_Collision.tscn b/scenes/Block/Snake/Snake_Collision.tscn new file mode 100644 index 0000000..c7b041e --- /dev/null +++ b/scenes/Block/Snake/Snake_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://m02134rcpv2p"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(128, 0, 128, -64, 0, -64, 0, 0, -64, 0, -64, 64, 64, 64, 64, 0) diff --git a/scenes/Block/Snake/Snake_block.gd b/scenes/Block/Snake/Snake_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/Snake/Snake_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/Snake/Snake_block.tscn b/scenes/Block/Snake/Snake_block.tscn new file mode 100644 index 0000000..d7443bf --- /dev/null +++ b/scenes/Block/Snake/Snake_block.tscn @@ -0,0 +1,66 @@ +[gd_scene load_steps=4 format=3 uid="uid://bnsptw7gc7mmp"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_yh2qq"] +[ext_resource type="Script" path="res://scenes/Block/Snake/Snake_block.gd" id="2_5tnwi"] +[ext_resource type="PackedScene" uid="uid://m02134rcpv2p" path="res://scenes/Block/Snake/Snake_Collision.tscn" id="3_447tx"] + +[node name="Block" instance=ExtResource("1_yh2qq")] +script = ExtResource("2_5tnwi") + +[node name="CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_447tx")] + +[node name="CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_447tx")] +rotation = 1.57079 + +[node name="CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_447tx")] + +[node name="CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_447tx")] +rotation = 1.57079 + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(-32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(32, 96) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(-32, 32) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(96, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(-32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, 32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(32, 96) diff --git a/scenes/Block/T/T_Collision.tscn b/scenes/Block/T/T_Collision.tscn new file mode 100644 index 0000000..e5c5bf9 --- /dev/null +++ b/scenes/Block/T/T_Collision.tscn @@ -0,0 +1,4 @@ +[gd_scene format=3 uid="uid://y28wwij2c37i"] + +[node name="CollisionPolygon2D" type="CollisionPolygon2D"] +polygon = PackedVector2Array(59, -5, 59, -59, -5, -59, -5, -123, -59, -123, -59, -59, -123, -59, -123, -5) diff --git a/scenes/Block/T/T_block.gd b/scenes/Block/T/T_block.gd new file mode 100644 index 0000000..7c1cf5a --- /dev/null +++ b/scenes/Block/T/T_block.gd @@ -0,0 +1 @@ +extends "res://scenes/Block/block.gd" diff --git a/scenes/Block/T/T_block.tscn b/scenes/Block/T/T_block.tscn new file mode 100644 index 0000000..3ef1034 --- /dev/null +++ b/scenes/Block/T/T_block.tscn @@ -0,0 +1,86 @@ +[gd_scene load_steps=4 format=3 uid="uid://blie7m1eu4ah0"] + +[ext_resource type="PackedScene" uid="uid://bu6grrxuhypny" path="res://scenes/Block/block.tscn" id="1_hgreb"] +[ext_resource type="Script" path="res://scenes/Block/T/T_block.gd" id="2_uy5uy"] +[ext_resource type="PackedScene" uid="uid://y28wwij2c37i" path="res://scenes/Block/T/T_Collision.tscn" id="3_n3dps"] + +[node name="T-Block" instance=ExtResource("1_hgreb")] +script = ExtResource("2_uy5uy") + +[node name="Position 1" parent="Tests" index="0"] +position = Vector2(-64, 0) +rotation = 1.57079 + +[node name="Tests_Area2D4#CollisionPolygon2D" parent="Tests/Position 1" index="0" instance=ExtResource("3_n3dps")] +position = Vector2(0, -64) +rotation = -1.57079 + +[node name="Position 2" parent="Tests" index="1"] +position = Vector2(0, -64) +rotation = -1.57079 + +[node name="Tests_Area2D3#CollisionPolygon2D" parent="Tests/Position 2" index="0" instance=ExtResource("3_n3dps")] +position = Vector2(-64.0001, -63.9999) +rotation = -3.14159 + +[node name="Position 3" parent="Tests" index="2"] +position = Vector2(-64, -64) +rotation = 1.57079 + +[node name="Tests_Area2D2#CollisionPolygon2D" parent="Tests/Position 3" index="0" instance=ExtResource("3_n3dps")] +position = Vector2(-64, -0.000141207) +rotation = 1.57079 + +[node name="Position 4" parent="Tests" index="3"] +position = Vector2(64, -64) +rotation = -1.57079 + +[node name="Tests_Area2D#CollisionPolygon2D" parent="Tests/Position 4" index="0" instance=ExtResource("3_n3dps")] + +[node name="Marker2D" type="Marker2D" parent="Position 1" index="0"] +position = Vector2(-32, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 1" index="1"] +position = Vector2(-96, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 1" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 1" index="3"] +position = Vector2(32, -32) + +[node name="Marker2D" type="Marker2D" parent="Position 2" index="0"] +position = Vector2(32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 2" index="1"] +position = Vector2(-32, -96) + +[node name="Marker2D3" type="Marker2D" parent="Position 2" index="2"] +position = Vector2(-32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 2" index="3"] +position = Vector2(-32, 32) + +[node name="Marker2D" type="Marker2D" parent="Position 3" index="0"] +position = Vector2(-96, -96) + +[node name="Marker2D2" type="Marker2D" parent="Position 3" index="1"] +position = Vector2(-32, -32) + +[node name="Marker2D3" type="Marker2D" parent="Position 3" index="2"] +position = Vector2(-32, -96) + +[node name="Marker2D4" type="Marker2D" parent="Position 3" index="3"] +position = Vector2(32, -96) + +[node name="Marker2D" type="Marker2D" parent="Position 4" index="0"] +position = Vector2(-32, -32) + +[node name="Marker2D2" type="Marker2D" parent="Position 4" index="1"] +position = Vector2(32, 32) + +[node name="Marker2D3" type="Marker2D" parent="Position 4" index="2"] +position = Vector2(32, -32) + +[node name="Marker2D4" type="Marker2D" parent="Position 4" index="3"] +position = Vector2(32, -96) diff --git a/scenes/Block/block.gd b/scenes/Block/block.gd new file mode 100644 index 0000000..bcc2f45 --- /dev/null +++ b/scenes/Block/block.gd @@ -0,0 +1,150 @@ +extends Node2D + +var secretPosition = Vector2() + +@onready var blockParts = $BlockParts +@onready var stopTimer = $stopTimer + +var stopped = false + +var type : GLOBAL.BLOCKTYPES = GLOBAL.BLOCKTYPES.LIGHT + +var TestPositions : Dictionary = { + 1: $"Tests/Position 1", + 2: $"Tests/Position 2", + 3: $"Tests/Position 3", + 4: $"Tests/Position 4", +} + +var Positions : Dictionary = { + 1: $"Position 1", + 2: $"Position 2", + 3: $"Position 3", + 4: $"Position 4" +} + +var currentRotation = 1 + +var id = 0 + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + secretPosition = position + generateBlockParts() + self.modulate = Color.from_hsv((randi() % 12) / 12.0, 1, 1) + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + position = secretPosition.snapped(Vector2(64,64)) + if not isCollidingBOTTOM() and( GLOBAL.hasSelectedSpeed or (self != GLOBAL.currentBlock)) : + secretPosition.y += GLOBAL.currentSpeed * delta * 30 + if self == GLOBAL.currentBlock and not stopped: + #if not isCollidingBOTTOM(): + # secretPosition.y += GLOBAL.SPEED.MAX * delta * 30 + #else: + if stopTimer.is_stopped(): + stopTimer.start(0.7) + #secretPosition = secretPosition.snapped(Vector2(64,64)) + + + if Input.is_action_just_pressed("rotate_left"): + if not isNextRotationColliding(1): + currentRotation = interpolateRotation(1) + rotateBlock() + elif not isNextRotationColliding(1,1): + currentRotation = interpolateRotation(1,1) + rotateBlock() + elif Input.is_action_just_pressed("rotate_right"): + if not isNextRotationColliding(2): + currentRotation = interpolateRotation(2) + rotateBlock() + elif not isNextRotationColliding(2,1): + currentRotation = interpolateRotation(2,1) + rotateBlock() + elif Input.is_action_just_pressed("left"): + if not isCollidingLeft(): + secretPosition.x -= GLOBAL.GRID + elif Input.is_action_just_pressed("right"): + if not isCollidingRIGHT(): + secretPosition.x += GLOBAL.GRID + +func isCollidingTOP() -> bool: + for i in blockParts.get_children(): + if i.getCollisionTOP(): + return true + return false + +func isCollidingLeft() -> bool: + for i in blockParts.get_children(): + if i.getCollisionLEFT(): + return true + return false + +func isCollidingRIGHT() -> bool: + for i in blockParts.get_children(): + if i.getCollisionRIGHT(): + return true + return false + +func isCollidingBOTTOM() -> bool: + for i in blockParts.get_children(): + if i.getCollisionBOTTOM(): + return true + return false + + +func generateBlockParts(): + for i in Positions[1].get_children(): + var blockPart = load("res://scenes/Block/block_part.tscn").instantiate() + blockPart.position = i.position# + Vector2( GLOBAL.GRID / 2, GLOBAL.GRID / 2) + blockParts.add_child(blockPart) + +func rotateBlock(): + for i in blockParts.get_children().size(): + blockParts.get_children()[i].position = Positions[currentRotation].get_children()[i].position + +func interpolateRotation(direction, additions=0): + match direction: + 1: + if currentRotation + 1 > 4: + return 1 + additions + elif currentRotation + (1 + additions) > 4: + return 1 + elif currentRotation + (1 + additions) <= 4: + return currentRotation + (1 + additions) + + 2: + if currentRotation - 1 < 1: + return 4 - additions + elif currentRotation - (1 + additions) < 1: + return 4 + elif currentRotation - (1 + additions) >= 1: + return currentRotation - (1 + additions) + +func isNextRotationColliding(direction, additions=0): + var colliding = false + match direction: + 1: + for i in TestPositions[interpolateRotation(1, additions)].get_overlapping_areas(): + if not i.get_parent().get_parent() == TestPositions[interpolateRotation(1, additions)].get_parent().get_parent(): + colliding = true + return colliding#TestPositions[interpolateRotation(1, additions)].has_overlapping_areas() + 2: + for i in TestPositions[interpolateRotation(2, additions)].get_overlapping_areas(): + if not i.get_parent().get_parent() == TestPositions[interpolateRotation(2, additions)].get_parent().get_parent(): + colliding = true + return colliding#TestPositions[interpolateRotation(2, additions)].has_overlapping_areas() + + +func setId(newID): + id = newID + +func setType(newType): + type = newType + +func _on_stop_timer_timeout() -> void: + if isCollidingBOTTOM(): + $Tests.queue_free() + for i in Positions: + Positions[i].queue_free() + stopped = true diff --git a/scenes/Block/block.tscn b/scenes/Block/block.tscn new file mode 100644 index 0000000..17fabb5 --- /dev/null +++ b/scenes/Block/block.tscn @@ -0,0 +1,40 @@ +[gd_scene load_steps=2 format=3 uid="uid://bu6grrxuhypny"] + +[ext_resource type="Script" path="res://scenes/Block/block.gd" id="1_chscu"] + +[node name="Block" type="Node2D"] +script = ExtResource("1_chscu") + +[node name="Tests" type="Node2D" parent="."] + +[node name="Position 1" type="Area2D" parent="Tests"] +collision_layer = 68 +collision_mask = 43 + +[node name="Position 2" type="Area2D" parent="Tests"] +collision_layer = 68 +collision_mask = 43 + +[node name="Position 3" type="Area2D" parent="Tests"] +collision_layer = 68 +collision_mask = 43 + +[node name="Position 4" type="Area2D" parent="Tests"] +collision_layer = 68 +collision_mask = 43 + +[node name="Position 1" type="Node2D" parent="."] + +[node name="Position 2" type="Node2D" parent="."] + +[node name="Position 3" type="Node2D" parent="."] + +[node name="Position 4" type="Node2D" parent="."] + +[node name="BlockParts" type="Node2D" parent="."] + +[node name="stopTimer" type="Timer" parent="."] +process_callback = 0 +one_shot = true + +[connection signal="timeout" from="stopTimer" to="." method="_on_stop_timer_timeout"] diff --git a/scenes/Block/block_part.gd b/scenes/Block/block_part.gd new file mode 100644 index 0000000..40379c5 --- /dev/null +++ b/scenes/Block/block_part.gd @@ -0,0 +1,33 @@ +extends Area2D + +var points = 1 + +@onready var rayCastTOP = $Raycasts/RayCastTOP +@onready var rayCastRIGHT = $Raycasts/RayCastRIGHT +@onready var rayCastBOTTOM = $Raycasts/RayCastBOTTOM +@onready var rayCastLEFT = $Raycasts/RayCastLEFT + + +func getCollisionTOP() -> bool: + if rayCastTOP.get_collider() != null: + if rayCastTOP.get_collider().get_parent() != get_parent(): + return rayCastTOP.is_colliding() + return false + +func getCollisionRIGHT() -> bool: + if rayCastRIGHT.get_collider() != null: + if rayCastRIGHT.get_collider().get_parent() != get_parent(): + return rayCastRIGHT.is_colliding() + return false + +func getCollisionBOTTOM() -> bool: + if rayCastBOTTOM.get_collider() != null: + if rayCastBOTTOM.get_collider().get_parent() != get_parent(): + return rayCastBOTTOM.is_colliding() + return false + +func getCollisionLEFT() -> bool: + if rayCastLEFT.get_collider() != null: + if rayCastLEFT.get_collider().get_parent() != get_parent(): + return rayCastLEFT.is_colliding() + return false diff --git a/scenes/Block/block_part.tscn b/scenes/Block/block_part.tscn new file mode 100644 index 0000000..3b6c2fa --- /dev/null +++ b/scenes/Block/block_part.tscn @@ -0,0 +1,50 @@ +[gd_scene load_steps=4 format=3 uid="uid://yajhyi0j8b6a"] + +[ext_resource type="Script" path="res://scenes/Block/block_part.gd" id="1_nb58p"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_tjkbt"] +size = Vector2(64, 64) + +[sub_resource type="QuadMesh" id="QuadMesh_puslh"] + +[node name="BlockPart" type="Area2D"] +collision_layer = 2 +collision_mask = 4 +script = ExtResource("1_nb58p") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_tjkbt") + +[node name="Raycasts" type="Node2D" parent="."] + +[node name="RayCastTOP" type="RayCast2D" parent="Raycasts"] +position = Vector2(0, -48) +target_position = Vector2(0, -16) +collision_mask = 11 +hit_from_inside = true +collide_with_areas = true + +[node name="RayCastRIGHT" type="RayCast2D" parent="Raycasts"] +position = Vector2(48, 0) +target_position = Vector2(16, 0) +collision_mask = 11 +hit_from_inside = true +collide_with_areas = true + +[node name="RayCastBOTTOM" type="RayCast2D" parent="Raycasts"] +position = Vector2(0, 48) +target_position = Vector2(0, 16) +collision_mask = 11 +hit_from_inside = true +collide_with_areas = true + +[node name="RayCastLEFT" type="RayCast2D" parent="Raycasts"] +position = Vector2(-48, 0) +target_position = Vector2(-16, 0) +collision_mask = 11 +hit_from_inside = true +collide_with_areas = true + +[node name="MeshInstance2D" type="MeshInstance2D" parent="."] +scale = Vector2(62, 62) +mesh = SubResource("QuadMesh_puslh") diff --git a/scenes/Globals/global.gd b/scenes/Globals/global.gd index e69de29..18502f6 100644 --- a/scenes/Globals/global.gd +++ b/scenes/Globals/global.gd @@ -0,0 +1,40 @@ +extends Node + +var points = 0 + +enum SPEED {MIN= 5, MAX= 12} + +var currentSpeed := SPEED.MIN + +var hasSelectedSpeed = false + +const GRID := 64 + +enum BLOCKTYPES {LIGHT, HEAVY} + +const BLOCKS : Dictionary = { + "1x3": "res://scenes/Block/1x3/1x3_block.tscn", + "1x4": "res://scenes/Block/1x4/1x4_block.tscn", + "2x2": "res://scenes/Block/2x2/2x2_block.tscn", + "2x3": "res://scenes/Block/2x3/2x3_block.tscn", + "T": "res://scenes/Block/T/T_block.tscn", + "L": "res://scenes/Block/L/L_block.tscn", + "L-small": "res://scenes/Block/L-small/L-small_block.tscn", + "Snake": "res://scenes/Block/Snake/Snake_block.tscn", + "Fork": "res://scenes/Block/Fork/Fork_block.tscn" +} + +var lastId = 0 + +var currentBlock = null + +func getNewId() -> int: + lastId += 1 + return lastId + +func _physics_process(delta: float) -> void: + + + if currentBlock != null: + if currentBlock.stopped: + hasSelectedSpeed = false diff --git a/scenes/Grid/SpeedScale.tscn b/scenes/Grid/SpeedScale.tscn new file mode 100644 index 0000000..f26ccd3 --- /dev/null +++ b/scenes/Grid/SpeedScale.tscn @@ -0,0 +1,33 @@ +[gd_scene load_steps=5 format=3 uid="uid://c03h0nwewolfx"] + +[ext_resource type="Texture2D" uid="uid://dbspjkdc5q1mc" path="res://assets/Slider.png" id="1_idpo1"] +[ext_resource type="Texture2D" uid="uid://blj4h34gr3s0q" path="res://assets/SpeedScale.png" id="1_otl7y"] +[ext_resource type="Script" path="res://scenes/Grid/speed_scale.gd" id="1_w2ui3"] + +[sub_resource type="Curve2D" id="Curve2D_jnpcs"] +_data = { +"points": PackedVector2Array(0, 0, 0, 0, 0, 628, 0, 0, 0, 0, 0, -636) +} +point_count = 2 + +[node name="SpeedScale" type="Node2D"] +script = ExtResource("1_w2ui3") + +[node name="Sprite2D" type="Sprite2D" parent="."] +scale = Vector2(12.8, 12.8) +texture = ExtResource("1_otl7y") + +[node name="Path2D" type="Path2D" parent="."] +position = Vector2(0, 3.94867) +scale = Vector2(1, 0.99359) +curve = SubResource("Curve2D_jnpcs") + +[node name="Slider" type="PathFollow2D" parent="Path2D"] +position = Vector2(0, -636) +progress = 1264.0 +rotates = false +loop = false + +[node name="Sprite2D" type="Sprite2D" parent="Path2D/Slider"] +scale = Vector2(12.8, 12.8) +texture = ExtResource("1_idpo1") diff --git a/scenes/Grid/border.tscn b/scenes/Grid/border.tscn new file mode 100644 index 0000000..1046ab6 --- /dev/null +++ b/scenes/Grid/border.tscn @@ -0,0 +1,7 @@ +[gd_scene format=3 uid="uid://bm7rshwf6pjb"] + +[node name="Border" type="Area2D"] +collision_layer = 9 +collision_mask = 21 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] diff --git a/scenes/Grid/bottom.tscn b/scenes/Grid/bottom.tscn new file mode 100644 index 0000000..90fe818 --- /dev/null +++ b/scenes/Grid/bottom.tscn @@ -0,0 +1,5 @@ +[gd_scene load_steps=2 format=3 uid="uid://dvrotjxom4u6d"] + +[ext_resource type="PackedScene" uid="uid://bm7rshwf6pjb" path="res://scenes/Grid/border.tscn" id="1_djp4e"] + +[node name="Bottom" instance=ExtResource("1_djp4e")] diff --git a/scenes/Grid/grid.gd b/scenes/Grid/grid.gd new file mode 100644 index 0000000..8846f75 --- /dev/null +++ b/scenes/Grid/grid.gd @@ -0,0 +1,37 @@ +extends Node2D + +@onready var spawnpoint = $Spawnpoint + +var nextBlocks = [] + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + fillNextBlocks() + spawnBlock() + +func spawnBlock() -> void: + var block = nextBlocks[0] + GLOBAL.currentBlock = block + spawnpoint.add_child(block) + nextBlocks.pop_at(0) + if nextBlocks.size() < 2: + fillNextBlocks() + + +func _physics_process(delta: float) -> void: + if GLOBAL.currentBlock != null: + if GLOBAL.currentBlock.stopped: + spawnBlock() + + +func fillNextBlocks(): + var newBlocks = [] + for i in GLOBAL.BLOCKS: + var block = load(GLOBAL.BLOCKS[i]).instantiate() + block.setId(GLOBAL.getNewId()) + block.setType(GLOBAL.BLOCKTYPES.LIGHT) + newBlocks.append(block) + newBlocks.shuffle() + newBlocks[0].setType(GLOBAL.BLOCKTYPES.HEAVY) + newBlocks.shuffle() + nextBlocks.append_array(newBlocks) diff --git a/scenes/Grid/grid.tscn b/scenes/Grid/grid.tscn new file mode 100644 index 0000000..bf4b7ad --- /dev/null +++ b/scenes/Grid/grid.tscn @@ -0,0 +1,118 @@ +[gd_scene load_steps=8 format=3 uid="uid://dwl4lotl1d3ij"] + +[ext_resource type="Script" path="res://scenes/Grid/grid.gd" id="1_vie5m"] +[ext_resource type="PackedScene" uid="uid://bm7rshwf6pjb" path="res://scenes/Grid/border.tscn" id="4_3j08q"] +[ext_resource type="PackedScene" uid="uid://duubii5uu3lgq" path="res://scenes/Grid/row_test.tscn" id="4_si3v6"] +[ext_resource type="PackedScene" uid="uid://dvrotjxom4u6d" path="res://scenes/Grid/bottom.tscn" id="5_14njh"] + +[sub_resource type="QuadMesh" id="QuadMesh_qfjsc"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_flipi"] +size = Vector2(128, 1536) + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_rxd0s"] +size = Vector2(896, 64) + +[node name="Grid" type="Node2D"] +script = ExtResource("1_vie5m") + +[node name="Sprite2D" type="Sprite2D" parent="."] +position = Vector2(7.62939e-06, 7.62939e-06) +scale = Vector2(108.422, 96.375) + +[node name="MeshInstance2D" type="MeshInstance2D" parent="."] +modulate = Color(0.359096, 0.426588, 0.599397, 1) +position = Vector2(320, 640) +scale = Vector2(640, 1280) +mesh = SubResource("QuadMesh_qfjsc") + +[node name="Blocks" type="Node2D" parent="."] + +[node name="Border" parent="." instance=ExtResource("4_3j08q")] + +[node name="CollisionShape2D" parent="Border" index="0"] +position = Vector2(-64, 512) +shape = SubResource("RectangleShape2D_flipi") + +[node name="Border2" parent="." instance=ExtResource("4_3j08q")] + +[node name="CollisionShape2D" parent="Border2" index="0"] +position = Vector2(704, 512) +shape = SubResource("RectangleShape2D_flipi") + +[node name="Bottom" parent="." instance=ExtResource("5_14njh")] +position = Vector2(320, 1312) +collision_layer = 8 +collision_mask = 4 + +[node name="CollisionShape2D" parent="Bottom" index="0"] +shape = SubResource("RectangleShape2D_rxd0s") + +[node name="Spawnpoint" type="Marker2D" parent="."] +position = Vector2(320, -64) + +[node name="RowTests" type="Node2D" parent="."] + +[node name="rowTest" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 1248) + +[node name="rowTest2" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 1184) + +[node name="rowTest3" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 1120) + +[node name="rowTest4" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 1056) + +[node name="rowTest5" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 992) + +[node name="rowTest6" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 928) + +[node name="rowTest7" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 864) + +[node name="rowTest8" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 800) + +[node name="rowTest9" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 736) + +[node name="rowTest10" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 672) + +[node name="rowTest11" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 608) + +[node name="rowTest12" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 544) + +[node name="rowTest13" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 480) + +[node name="rowTest14" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 416) + +[node name="rowTest15" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 352) + +[node name="rowTest16" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 288) + +[node name="rowTest17" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 224) + +[node name="rowTest18" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 160) + +[node name="rowTest19" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 96) + +[node name="rowTest20" parent="RowTests" instance=ExtResource("4_si3v6")] +position = Vector2(0, 32) + +[editable path="Border"] +[editable path="Border2"] +[editable path="Bottom"] diff --git a/scenes/Grid/row_test.gd b/scenes/Grid/row_test.gd new file mode 100644 index 0000000..a60fb86 --- /dev/null +++ b/scenes/Grid/row_test.gd @@ -0,0 +1,7 @@ +extends Area2D + +func _physics_process(delta: float) -> void: + if get_overlapping_areas().size() == 10 and GLOBAL.currentBlock.stopped: + for i in get_overlapping_areas(): + GLOBAL.points += i.points + i.queue_free()#get_parent().get_parent().split() diff --git a/scenes/Grid/row_test.tscn b/scenes/Grid/row_test.tscn new file mode 100644 index 0000000..4bd7a13 --- /dev/null +++ b/scenes/Grid/row_test.tscn @@ -0,0 +1,15 @@ +[gd_scene load_steps=3 format=3 uid="uid://duubii5uu3lgq"] + +[ext_resource type="Script" path="res://scenes/Grid/row_test.gd" id="1_a8m2k"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_rkqoc"] +size = Vector2(640, 20) + +[node name="rowTest" type="Area2D"] +collision_layer = 4 +collision_mask = 2 +script = ExtResource("1_a8m2k") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2(320, 0) +shape = SubResource("RectangleShape2D_rkqoc") diff --git a/scenes/Grid/speed_scale.gd b/scenes/Grid/speed_scale.gd new file mode 100644 index 0000000..8fe0613 --- /dev/null +++ b/scenes/Grid/speed_scale.gd @@ -0,0 +1,10 @@ +extends Node2D + +@onready var slider = $Path2D/Slider + +func _physics_process(delta: float) -> void: + if not GLOBAL.hasSelectedSpeed: + if Input.is_action_just_pressed("stop"): + GLOBAL.hasSelectedSpeed = true + GLOBAL.currentSpeed = GLOBAL.SPEED.MAX + print() diff --git a/scenes/Main/main.tscn b/scenes/Main/main.tscn new file mode 100644 index 0000000..c440ba8 --- /dev/null +++ b/scenes/Main/main.tscn @@ -0,0 +1,16 @@ +[gd_scene load_steps=3 format=3 uid="uid://bq5hrqgv0f6hp"] + +[ext_resource type="PackedScene" uid="uid://dwl4lotl1d3ij" path="res://scenes/Grid/grid.tscn" id="1_88eap"] +[ext_resource type="PackedScene" uid="uid://c03h0nwewolfx" path="res://scenes/Grid/SpeedScale.tscn" id="2_mnoeo"] + +[node name="main" type="Node"] + +[node name="Grid" parent="." instance=ExtResource("1_88eap")] +position = Vector2(128, 256) + +[node name="Node2D" parent="." instance=ExtResource("2_mnoeo")] +visible = false +position = Vector2(960, 896) + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2(448, 800)