diff --git a/gmtk_2024/levels/LevelBase.tscn b/gmtk_2024/levels/LevelBase.tscn index ea02814..ed87dc9 100644 --- a/gmtk_2024/levels/LevelBase.tscn +++ b/gmtk_2024/levels/LevelBase.tscn @@ -33,7 +33,7 @@ visible = false [node name="UILayer" type="CanvasLayer" parent="."] -[node name="UI" type="Control" parent="UILayer" node_paths=PackedStringArray("player")] +[node name="UI" type="Control" parent="UILayer"] layout_mode = 3 anchors_preset = 15 anchor_right = 1.0 @@ -41,7 +41,6 @@ anchor_bottom = 1.0 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("3_b82rx") -player = NodePath("../../Player") [node name="HBoxContainer" type="HBoxContainer" parent="UILayer/UI"] layout_mode = 0 diff --git a/gmtk_2024/levels/lev877D.tmp b/gmtk_2024/levels/lev877D.tmp new file mode 100644 index 0000000..133e143 --- /dev/null +++ b/gmtk_2024/levels/lev877D.tmp @@ -0,0 +1,182 @@ +[gd_scene load_steps=12 format=4 uid="uid://ctc0arg3efa5k"] + +[ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_87xn7"] +[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_wqskp"] +[ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="4_0x2h7"] +[ext_resource type="Texture2D" uid="uid://c61y0181w3sq2" path="res://textures/Level 01.png" id="5_4p03u"] +[ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="6_xhax5"] +[ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="7_dyi0e"] +[ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_16072"] +[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlock.tscn" id="8_ec71m"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"] +texture = ExtResource("2_wqskp") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0 = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0 = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:0/0 = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0 = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +5:0/0 = 0 +5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:0/0 = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:0/0 = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/next_alternative_id = 4 +8:0/0 = 0 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/1 = 1 +8:0/1/flip_v = true +8:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/2 = 2 +8:0/2/transpose = true +8:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/3 = 3 +8:0/3/flip_h = true +8:0/3/transpose = true +8:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:0/0 = 0 +10:0/0 = 0 +11:0/0 = 0 +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:1/0 = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0 = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:1/0 = 0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0 = 0 +5:1/0 = 0 +5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:1/0 = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:1/0 = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:1/0 = 0 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:1/0 = 0 +10:1/0 = 0 +11:1/0 = 0 +0:2/0 = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0 = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:2/0 = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:2/0 = 0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:2/0 = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +5:2/0 = 0 +5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:2/0 = 0 +7:2/0 = 0 +10:2/0 = 0 +11:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +4:3/0 = 0 +5:3/0 = 0 +6:3/0 = 0 +7:3/0 = 0 +10:3/0 = 0 +11:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +4:4/0 = 0 +5:4/0 = 0 +6:4/0 = 0 +7:4/0 = 0 +8:4/0 = 0 +9:4/0 = 0 +10:4/0 = 0 +11:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +4:5/0 = 0 +5:5/0 = 0 +6:5/0 = 0 +7:5/0 = 0 +8:5/0 = 0 +9:5/0 = 0 +10:5/0 = 0 +11:5/0 = 0 + +[sub_resource type="TileSet" id="TileSet_n3khe"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_e817v") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mvq46"] +shader = ExtResource("4_0x2h7") +shader_parameter/scroll_speed = 0.02 + +[node name="LevelBase" instance=ExtResource("1_87xn7")] + +[node name="Player" parent="." index="0"] +position = Vector2(-542, 331) +scale = Vector2(2, 2) + +[node name="UI" parent="UILayer" index="0"] +mouse_filter = 2 + +[node name="HBoxContainer" parent="UILayer/UI" index="0"] +mouse_filter = 0 + +[node name="Walls" parent="." index="4"] +collision_mask = 22 + +[node name="LeftWall" parent="Walls" index="2"] +position = Vector2(-665, 14) + +[node name="Layer0" type="TileMapLayer" parent="." index="5"] +use_parent_material = true +tile_map_data = PackedByteArray("AADt/wsAAAABAAAAAADu/wsAAAABAAAAAADv/wsAAAABAAAAAADw/wsAAAABAAAAAADx/wsAAAABAAAAAADy/wsAAAABAAAAAADz/wsAAAABAAAAAAD0/wsAAAABAAAAAAD1/wsAAAABAAAAAAD2/wsAAAABAAAAAAD3/wsAAAABAAAAAAD4/wsAAAABAAAAAAD5/wsAAAABAAAAAAD6/wsAAAABAAAAAAD7/wsAAAABAAAAAAD8/wsAAAABAAAAAAD9/wsAAAABAAAAAAD+/wsAAAABAAAAAAD//wsAAAABAAAAAAAAAAsAAAABAAAAAAABAAsAAAABAAAAAAACAAsAAAABAAAAAAADAAsAAAABAAAAAAAEAAsAAAABAAAAAAAFAAsAAAABAAAAAAAGAAsAAAABAAAAAAAHAAsAAAABAAAAAAAIAAsAAAABAAAAAAAJAAsAAAABAAAAAAAKAAsAAAAFAAIAAAALAAsAAAABAAEAAAAMAAsAAAABAAEAAAANAAsAAAABAAEAAAAOAAsAAAABAAEAAAAPAAsAAAABAAEAAAAQAAsAAAABAAEAAAARAAsAAAABAAEAAAASAAsAAAABAAEAAAATAAsAAAABAAEAAAAKAPT/AAABAAIAAAALAPT/AAABAAIAAAAMAPT/AAABAAIAAAANAPT/AAABAAIAAAATAPT/AAAFAAAAAAASAPT/AAABAAIAAAARAPT/AAABAAIAAAAQAPT/AAABAAIAAAAPAPT/AAABAAIAAAAOAPT/AAABAAIAAAAJAPT/AAABAAIAAAAIAPT/AAABAAIAAAAHAPT/AAABAAIAAAAGAPT/AAABAAIAAAAFAPT/AAABAAIAAAAEAPT/AAABAAIAAAADAPT/AAABAAIAAAACAPT/AAABAAIAAAD5//T/AAABAAIAAAD4//T/AAABAAIAAAD3//T/AAABAAIAAAD2//T/AAABAAIAAAD1//T/AAABAAIAAAD0//T/AAABAAIAAADz//T/AAABAAIAAADy//T/AAABAAIAAADx//T/AAABAAIAAADw//T/AAABAAIAAADv//T/AAABAAIAAADu//T/AAABAAIAAADt//T/AAABAAIAAADs//T/AAADAAAAAAD6//T/AAABAAIAAAD7//T/AAABAAIAAAD8//T/AAABAAIAAAD9//T/AAABAAIAAAD+//T/AAABAAIAAAD///T/AAABAAIAAAAAAPT/AAABAAIAAAABAPT/AAABAAIAAADs/woAAAACAAEAAADs/wkAAAACAAEAAADs/wgAAAACAAEAAADs/wcAAAACAAEAAADs/wYAAAADAAAAAADs/wUAAAABAAEAAADs/wQAAAABAAEAAADs/wMAAAADAAIAAADs/wIAAAACAAEAAADs/wEAAAACAAEAAADs/wAAAAABAAEAAADs////AAABAAEAAADs//7/AAADAAIAAADs//3/AAACAAEAAADs//z/AAACAAEAAADs//v/AAACAAEAAADs//r/AAACAAEAAADs//X/AAACAAEAAADs//b/AAACAAEAAADs//f/AAACAAEAAADs//j/AAACAAEAAADs//n/AAACAAEAAAATAPX/AAAAAAEAAAATAPb/AAAAAAEAAAATAPf/AAAFAAIAAAATAPj/AAABAAEAAAATAPn/AAABAAEAAAATAPr/AAABAAEAAAATAPv/AAABAAEAAAATAPz/AAAFAAAAAAATAP3/AAAAAAEAAAATAP7/AAAAAAEAAAATAP//AAAAAAEAAAATAAAAAAAAAAEAAAATAAEAAAAAAAEAAAATAAIAAAAAAAEAAAATAAMAAAAAAAEAAAATAAQAAAAAAAEAAAATAAUAAAAAAAEAAAATAAYAAAAAAAEAAAATAAcAAAAAAAEAAAATAAgAAAAAAAEAAAATAAkAAAAFAAIAAAATAAoAAAABAAEAAAAKAAkAAAAAAAAAAAAKAAoAAAAAAAEAAAALAAkAAAABAAAAAAALAAoAAAABAAEAAAAMAAkAAAABAAAAAAAMAAoAAAABAAEAAAANAAkAAAABAAAAAAANAAoAAAABAAEAAAAOAAkAAAABAAAAAAAOAAoAAAABAAEAAAAPAAkAAAABAAAAAAAPAAoAAAABAAEAAAAQAAkAAAABAAAAAAAQAAoAAAABAAEAAAARAAkAAAABAAAAAAARAAoAAAABAAEAAAASAAkAAAABAAAAAAASAAoAAAABAAEAAADt/wMAAAABAAAAAADt/wQAAAABAAEAAADt/wUAAAABAAEAAADt/wYAAAABAAIAAADu/wMAAAABAAAAAADu/wQAAAABAAEAAADu/wUAAAABAAEAAADu/wYAAAABAAIAAADv/wMAAAABAAAAAADv/wQAAAABAAEAAADv/wUAAAABAAEAAADv/wYAAAABAAIAAADw/wMAAAABAAAAAADw/wQAAAABAAEAAADw/wUAAAABAAEAAADw/wYAAAABAAIAAADx/wMAAAABAAAAAADx/wQAAAABAAEAAADx/wUAAAABAAEAAADx/wYAAAABAAIAAADy/wMAAAABAAAAAADy/wQAAAABAAEAAADy/wUAAAABAAEAAADy/wYAAAABAAIAAADz/wMAAAABAAAAAADz/wQAAAABAAEAAADz/wUAAAABAAEAAADz/wYAAAABAAIAAAD0/wMAAAABAAAAAAD0/wQAAAABAAEAAAD0/wUAAAABAAEAAAD0/wYAAAABAAIAAAD1/wMAAAABAAAAAAD1/wQAAAABAAEAAAD1/wUAAAABAAEAAAD1/wYAAAABAAIAAAD2/wMAAAABAAAAAAD2/wQAAAABAAEAAAD2/wUAAAABAAEAAAD2/wYAAAABAAIAAAD3/wMAAAABAAAAAAD3/wQAAAABAAEAAAD3/wUAAAABAAEAAAD3/wYAAAABAAIAAAD4/wMAAAABAAAAAAD4/wQAAAABAAEAAAD4/wUAAAABAAEAAAD4/wYAAAABAAIAAAD5/wMAAAABAAAAAAD5/wQAAAABAAEAAAD5/wUAAAABAAEAAAD5/wYAAAABAAIAAAD6/wMAAAABAAAAAAD6/wQAAAABAAEAAAD6/wUAAAABAAEAAAD6/wYAAAABAAIAAAD7/wMAAAABAAAAAAD7/wQAAAABAAEAAAD7/wUAAAABAAEAAAD7/wYAAAABAAIAAAD8/wMAAAABAAAAAAD8/wQAAAABAAEAAAD8/wUAAAABAAEAAAD8/wYAAAABAAIAAAD9/wMAAAABAAAAAAD9/wQAAAABAAEAAAD9/wUAAAABAAEAAAD9/wYAAAABAAIAAAD+/wMAAAABAAAAAAD+/wQAAAABAAEAAAD+/wUAAAABAAEAAAD+/wYAAAABAAIAAAD//wMAAAABAAAAAAD//wQAAAABAAEAAAD//wUAAAABAAEAAAD//wYAAAABAAIAAAAAAAMAAAABAAAAAAAAAAQAAAABAAEAAAAAAAUAAAABAAEAAAAAAAYAAAABAAIAAAABAAMAAAACAAAAAAABAAQAAAADAAIAAAABAAUAAAABAAEAAAABAAYAAAABAAIAAAACAAQAAAAEAAIAAAACAAUAAAABAAEAAAACAAYAAAABAAIAAAADAAQAAAACAAAAAAADAAUAAAADAAIAAAADAAYAAAABAAIAAAAEAAUAAAAEAAIAAAAEAAYAAAABAAIAAAAFAAUAAAACAAAAAAAFAAYAAAAGAAEAAAAGAAYAAAAIAAAAAwD7/wAAAAABAAIAAAD8/wAAAAABAAIAAAD9/wAAAAABAAIAAAD+/wAAAAABAAIAAAD//wAAAAABAAIAAAAAAAAAAAACAAIAAAD7////AAABAAEAAAD8////AAABAAEAAAD9////AAABAAEAAAD+////AAABAAEAAAD/////AAABAAEAAAAAAP//AAACAAEAAAAAAP7/AAACAAAAAAD///7/AAABAAAAAAD+//7/AAABAAAAAAD9//7/AAABAAAAAAD8//7/AAABAAAAAAD7//7/AAABAAAAAAD6/wAAAAABAAIAAAD5/wAAAAABAAIAAAD4/wAAAAABAAIAAAD3/wAAAAAHAAEAAAD2/wAAAAAIAAAAAgD3////AAAAAAAAAAD4////AAAFAAIAAAD4//7/AAAAAAAAAAD5//7/AAABAAAAAAD6//7/AAABAAAAAAD6////AAABAAEAAAD5////AAABAAEAAADz/wAAAAAIAAAAAwDy/wAAAAAGAAEAAADy////AAACAAAAAADx////AAABAAEAAADw////AAABAAEAAADv////AAABAAEAAADv//7/AAABAAAAAADu//7/AAABAAAAAADt//7/AAABAAAAAADt////AAABAAEAAADu////AAABAAEAAADv/wAAAAABAAIAAADw/wAAAAABAAIAAADx/wAAAAABAAIAAADu/wAAAAABAAIAAADt/wAAAAABAAIAAADw//7/AAABAAAAAADx//7/AAACAAAAAADy//v/AAAIAAAAAgDz//z/AAAAAAIAAAD0//3/AAAAAAIAAAD1//3/AAACAAIAAAD2//z/AAACAAIAAAD3//v/AAAIAAAAAwDz//v/AAAHAAAAAAD0//v/AAABAAAAAAD1//v/AAABAAAAAAD2//v/AAAGAAAAAAD0//z/AAABAAEAAAD1//z/AAABAAEAAAD6//n/AAAIAAAAAgD7//n/AAAHAAAAAAD8//n/AAABAAEAAAD8//j/AAAAAAAAAAD9//j/AAACAAAAAAD9//n/AAABAAEAAAD+//n/AAAGAAAAAAD///n/AAAIAAAAAwD7//r/AAAAAAIAAAD8//r/AAABAAEAAAD9//r/AAABAAEAAAD+//r/AAACAAIAAAD8//v/AAAAAAIAAAD9//v/AAACAAIAAAADAPj/AAAIAAAAAgAEAPj/AAAHAAAAAAAFAPj/AAABAAAAAAAGAPj/AAABAAAAAAAHAPj/AAABAAAAAAAIAPj/AAABAAAAAAAJAPj/AAABAAAAAAAKAPj/AAABAAAAAAALAPj/AAAFAAIAAAALAPf/AAAAAAAAAAAMAPf/AAABAAAAAAANAPf/AAABAAAAAAAOAPf/AAABAAAAAAAPAPf/AAABAAAAAAAQAPf/AAABAAAAAAARAPf/AAABAAAAAAASAPf/AAABAAAAAAASAPj/AAABAAEAAAARAPj/AAABAAEAAAAQAPj/AAABAAEAAAAPAPj/AAABAAEAAAAOAPn/AAABAAEAAAANAPn/AAABAAEAAAAMAPn/AAABAAEAAAAMAPj/AAABAAEAAAANAPj/AAABAAEAAAAOAPj/AAABAAEAAAASAPn/AAABAAEAAAARAPn/AAABAAEAAAAQAPn/AAABAAEAAAAPAPn/AAABAAEAAAALAPn/AAABAAEAAAAKAPn/AAABAAEAAAAJAPn/AAABAAEAAAAIAPn/AAABAAEAAAAHAPn/AAABAAEAAAAGAPn/AAABAAEAAAAFAPn/AAAFAAAAAAAEAPn/AAAAAAIAAAAFAPr/AAAAAAIAAAAGAPr/AAABAAIAAAAHAPr/AAABAAIAAAAIAPr/AAABAAEAAAAJAPr/AAABAAEAAAAKAPr/AAABAAEAAAALAPr/AAABAAEAAAAMAPr/AAABAAEAAAANAPr/AAABAAEAAAAOAPr/AAABAAEAAAAPAPr/AAABAAEAAAAQAPr/AAABAAEAAAARAPr/AAABAAEAAAASAPr/AAABAAEAAAAQAPv/AAABAAEAAAAPAPv/AAABAAEAAAAOAPv/AAABAAEAAAANAPv/AAABAAEAAAAMAPv/AAABAAEAAAALAPv/AAAFAAAAAAAKAPv/AAABAAIAAAAJAPv/AAABAAIAAAAIAPv/AAAAAAIAAAARAPv/AAABAAEAAAASAPv/AAABAAEAAAASAPz/AAABAAIAAAARAPz/AAABAAIAAAAQAPz/AAABAAIAAAAPAPz/AAABAAIAAAAOAPz/AAABAAIAAAANAPz/AAABAAIAAAAMAPz/AAABAAIAAAALAPz/AAAAAAIAAADs/wsAAAADAAIAAAA=") +tile_set = SubResource("TileSet_n3khe") + +[node name="TextureRect" type="TextureRect" parent="." index="6"] +z_index = -100 +material = SubResource("ShaderMaterial_mvq46") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -640.0 +offset_top = -360.0 +offset_right = -640.0 +offset_bottom = -360.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("5_4p03u") +stretch_mode = 1 + +[node name="Goal" parent="." index="7" instance=ExtResource("6_xhax5")] +position = Vector2(582, -317) + +[node name="MirrorOrb" parent="." index="8" instance=ExtResource("7_dyi0e")] +position = Vector2(-431, -212) + +[node name="Block" parent="." index="9" node_paths=PackedStringArray("ui_actions") instance=ExtResource("8_ec71m")] +position = Vector2(432, 186) +collision_layer = 1 +ui_actions = NodePath("../UILayer/UI") + +[node name="EnemyMover" parent="." index="10" instance=ExtResource("8_16072")] +position = Vector2(-132, 311) + +[node name="Block3" parent="." index="11" node_paths=PackedStringArray("ui_actions") instance=ExtResource("8_ec71m")] +position = Vector2(162, 124) +collision_layer = 1 +ui_actions = NodePath("../UILayer/UI") diff --git a/gmtk_2024/levels/level_1.tscn b/gmtk_2024/levels/level_1.tscn index 54e5031..2e492dd 100644 --- a/gmtk_2024/levels/level_1.tscn +++ b/gmtk_2024/levels/level_1.tscn @@ -3,12 +3,11 @@ [ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_87xn7"] [ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_wqskp"] [ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="4_0x2h7"] -[ext_resource type="Texture2D" uid="uid://bki6ucvk6bjwk" path="res://textures/Level 01.png" id="5_4p03u"] -[ext_resource type="PackedScene" uid="uid://d0gpnqknarkg7" path="res://objects/Goal.tscn" id="6_xhax5"] -[ext_resource type="PackedScene" uid="uid://cpa66thuxma15" path="res://objects/MirrorOrb.tscn" id="7_dyi0e"] -[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlock.tscn" id="8_ec71m"] -[ext_resource type="PackedScene" uid="uid://d17jpcgayfg6i" path="res://objects/BoxPushable_1.tscn" id="8_urw3p"] -[ext_resource type="PackedScene" uid="uid://bnvyaxh2kotd3" path="res://objects/BreakableBlock.tscn" id="9_m0qjy"] +[ext_resource type="Texture2D" uid="uid://c61y0181w3sq2" path="res://textures/Level 01.png" id="5_4p03u"] +[ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="6_xhax5"] +[ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="7_dyi0e"] +[ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_16072"] +[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlockBig.tscn" id="8_ec71m"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"] texture = ExtResource("2_wqskp") @@ -130,10 +129,10 @@ shader_parameter/scroll_speed = 0.02 [node name="Player" parent="." index="0"] position = Vector2(-542, 331) scale = Vector2(2, 2) -jump_strength_max = 400 -[node name="UI" parent="UILayer" index="0"] +[node name="UI" parent="UILayer" index="0" node_paths=PackedStringArray("player")] mouse_filter = 2 +player = NodePath("../../Player") [node name="HBoxContainer" parent="UILayer/UI" index="0"] mouse_filter = 0 @@ -171,15 +170,14 @@ position = Vector2(582, -317) position = Vector2(-431, -212) [node name="Block" parent="." index="9" node_paths=PackedStringArray("ui_actions") instance=ExtResource("8_ec71m")] -position = Vector2(476, 253) +position = Vector2(432, 186) collision_layer = 1 ui_actions = NodePath("../UILayer/UI") -[node name="BoxPushable1" parent="." index="11" instance=ExtResource("8_urw3p")] -position = Vector2(-84, 326) +[node name="EnemyMover" parent="." index="10" instance=ExtResource("8_16072")] +position = Vector2(-132, 311) -[node name="BreakableBlock" parent="." index="12" instance=ExtResource("9_m0qjy")] -position = Vector2(271, 210) - -[node name="BreakableBlock2" parent="." index="13" instance=ExtResource("9_m0qjy")] -position = Vector2(240, 210) +[node name="Block3" parent="." index="11" node_paths=PackedStringArray("ui_actions") instance=ExtResource("8_ec71m")] +position = Vector2(162, 124) +collision_layer = 1 +ui_actions = NodePath("../UILayer/UI") diff --git a/gmtk_2024/levels/test_level.tscn b/gmtk_2024/levels/test_level.tscn new file mode 100644 index 0000000..051940f --- /dev/null +++ b/gmtk_2024/levels/test_level.tscn @@ -0,0 +1,194 @@ +[gd_scene load_steps=12 format=4 uid="uid://cxsstkfcffdch"] + +[ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_8kfuv"] +[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_4iioo"] +[ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_ys3sa"] +[ext_resource type="Texture2D" uid="uid://c61y0181w3sq2" path="res://textures/Level 01.png" id="4_n40i2"] +[ext_resource type="PackedScene" path="res://objects/Goal.tscn" id="5_1tu7t"] +[ext_resource type="PackedScene" path="res://objects/MirrorOrb.tscn" id="6_87gst"] +[ext_resource type="PackedScene" uid="uid://br6fngf5208j0" path="res://objects/ResizableBlockBig.tscn" id="7_l2s1x"] +[ext_resource type="PackedScene" uid="uid://vtwswrkfkgas" path="res://objects/EnemyMover.tscn" id="8_3s3ae"] + +[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_e817v"] +texture = ExtResource("2_4iioo") +texture_region_size = Vector2i(32, 32) +0:0/0 = 0 +0:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:0/0 = 0 +1:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:0/0 = 0 +2:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:0/0 = 0 +3:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:0/0 = 0 +4:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +5:0/0 = 0 +5:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:0/0 = 0 +6:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:0/0 = 0 +7:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/next_alternative_id = 4 +8:0/0 = 0 +8:0/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/1 = 1 +8:0/1/flip_v = true +8:0/1/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/2 = 2 +8:0/2/transpose = true +8:0/2/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:0/3 = 3 +8:0/3/flip_h = true +8:0/3/transpose = true +8:0/3/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:0/0 = 0 +10:0/0 = 0 +11:0/0 = 0 +0:1/0 = 0 +0:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:1/0 = 0 +1:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:1/0 = 0 +2:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:1/0 = 0 +3:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:1/0 = 0 +5:1/0 = 0 +5:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:1/0 = 0 +6:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +7:1/0 = 0 +7:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +8:1/0 = 0 +8:1/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +9:1/0 = 0 +10:1/0 = 0 +11:1/0 = 0 +0:2/0 = 0 +0:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +1:2/0 = 0 +1:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +2:2/0 = 0 +2:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +3:2/0 = 0 +3:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +4:2/0 = 0 +4:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +5:2/0 = 0 +5:2/0/physics_layer_0/polygon_0/points = PackedVector2Array(-16, -16, 16, -16, 16, 16, -16, 16) +6:2/0 = 0 +7:2/0 = 0 +10:2/0 = 0 +11:2/0 = 0 +0:3/0 = 0 +1:3/0 = 0 +2:3/0 = 0 +3:3/0 = 0 +4:3/0 = 0 +5:3/0 = 0 +6:3/0 = 0 +7:3/0 = 0 +10:3/0 = 0 +11:3/0 = 0 +0:4/0 = 0 +1:4/0 = 0 +2:4/0 = 0 +3:4/0 = 0 +4:4/0 = 0 +5:4/0 = 0 +6:4/0 = 0 +7:4/0 = 0 +8:4/0 = 0 +9:4/0 = 0 +10:4/0 = 0 +11:4/0 = 0 +0:5/0 = 0 +1:5/0 = 0 +2:5/0 = 0 +3:5/0 = 0 +4:5/0 = 0 +5:5/0 = 0 +6:5/0 = 0 +7:5/0 = 0 +8:5/0 = 0 +9:5/0 = 0 +10:5/0 = 0 +11:5/0 = 0 + +[sub_resource type="TileSet" id="TileSet_n3khe"] +tile_size = Vector2i(32, 32) +physics_layer_0/collision_layer = 1 +sources/0 = SubResource("TileSetAtlasSource_e817v") + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mvq46"] +shader = ExtResource("3_ys3sa") +shader_parameter/scroll_speed = 0.02 + +[node name="LevelBase" instance=ExtResource("1_8kfuv")] + +[node name="Player" parent="." index="0"] +position = Vector2(-254, 99) +input_pickable = true + +[node name="UI" parent="UILayer" index="0" node_paths=PackedStringArray("player")] +visible = false +mouse_filter = 2 +player = NodePath("../../Player") + +[node name="HBoxContainer" parent="UILayer/UI" index="0"] +offset_right = 296.0 +offset_bottom = 96.0 +mouse_filter = 0 + +[node name="Walls" parent="." index="4"] +collision_mask = 22 + +[node name="Ground" parent="Walls" index="0"] +position = Vector2(-7, 167) + +[node name="Ceiling" parent="Walls" index="1"] +position = Vector2(57, -171) + +[node name="LeftWall" parent="Walls" index="2"] +position = Vector2(-320, 26) + +[node name="RightWall" parent="Walls" index="3"] +position = Vector2(338, 15) + +[node name="Layer0" type="TileMapLayer" parent="." index="5"] +use_parent_material = true +tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAACAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wAAAAACAAEAAAD2/wEAAAACAAEAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAADAAIAAAAJAPv/AAAFAAAAAAAJAPz/AAAAAAEAAAAJAP3/AAAAAAEAAAAJAP7/AAAAAAEAAAAJAP//AAAAAAEAAAAJAAAAAAAAAAEAAAAJAAEAAAAAAAEAAAAJAAIAAAAAAAEAAAAJAAMAAAAAAAEAAAAJAAQAAAAFAAIAAAD3//v/AAABAAIAAAD4//v/AAABAAIAAAD5//v/AAABAAIAAAD6//v/AAABAAIAAAD7//v/AAABAAIAAAD8//v/AAABAAIAAAD9//v/AAABAAIAAAD+//v/AAABAAIAAAD///v/AAABAAIAAAAAAPv/AAABAAIAAAABAPv/AAABAAIAAAACAPv/AAABAAIAAAADAPv/AAABAAIAAAAEAPv/AAABAAIAAAAFAPv/AAABAAIAAAAGAPv/AAABAAIAAAAHAPv/AAABAAIAAAAIAPv/AAABAAIAAAD3/wQAAAABAAAAAAD4/wQAAAABAAAAAAD5/wQAAAABAAAAAAD6/wQAAAABAAAAAAD7/wQAAAAFAAIAAAD8/wQAAAABAAEAAAD9/wQAAAABAAEAAAD+/wQAAAABAAEAAAD//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAADAAIAAAACAAQAAAABAAAAAAADAAQAAAABAAAAAAAEAAQAAAABAAAAAAAFAAQAAAABAAAAAAAGAAQAAAABAAAAAAAHAAQAAAABAAAAAAAIAAQAAAABAAAAAAD7/wMAAAAAAAAAAAD8/wMAAAABAAAAAAD9/wMAAAABAAAAAAD+/wMAAAABAAAAAAD//wIAAAAAAAEAAAD//wEAAAAAAAAAAAAAAAEAAAAEAAIAAAABAAEAAAACAAAAAAABAAIAAAACAAEAAAABAAMAAAACAAEAAAD//wMAAAAFAAIAAAAAAAIAAAABAAEAAAAAAAMAAAABAAEAAAD3/wAAAAAIAAEAAGD4/wAAAAAIAAEAAGD5/wAAAAAIAAEAAGD6/wAAAAAIAAEAAGD7/wAAAAAIAAAAAVD3//3/AAAIAAEAAFD4//3/AAAIAAEAAFD5//3/AAAIAAEAAFD6//3/AAAIAAEAAFD7//3/AAAIAAEAAFD8//3/AAAIAAEAAFD9//3/AAAIAAEAAFD+//3/AAACAAAAAAAAAAAAAAAGAAIAAAAAAP//AAABAAIAAAD/////AAAAAAIAAAD///7/AAAHAAAAAAAAAP7/AAACAAAAAAABAP//AAAIAAAAAVD+//7/AAAAAAIAAAAFAAEAAAAIAAAAAAAFAAIAAAAIAAAAAQA=") +tile_set = SubResource("TileSet_n3khe") + +[node name="TextureRect" type="TextureRect" parent="." index="6"] +z_index = -100 +material = SubResource("ShaderMaterial_mvq46") +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +offset_left = -320.0 +offset_top = -158.0 +offset_right = -320.0 +offset_bottom = -158.0 +grow_horizontal = 2 +grow_vertical = 2 +texture = ExtResource("4_n40i2") +stretch_mode = 1 + +[node name="Goal" parent="." index="7" instance=ExtResource("5_1tu7t")] +position = Vector2(582, -317) + +[node name="MirrorOrb" parent="." index="8" instance=ExtResource("6_87gst")] +position = Vector2(-431, -212) + +[node name="EnemyMover" parent="." index="9" instance=ExtResource("8_3s3ae")] +position = Vector2(-132, 311) + +[node name="Block" parent="." index="10" node_paths=PackedStringArray("ui_actions") instance=ExtResource("7_l2s1x")] +position = Vector2(-65, 63) +ui_actions = NodePath("../UILayer/UI") + +[node name="Block2" parent="." index="11" node_paths=PackedStringArray("ui_actions") instance=ExtResource("7_l2s1x")] +position = Vector2(-255, -32) +scale = Vector2(0.5, 0.5) +ui_actions = NodePath("../UILayer/UI") diff --git a/gmtk_2024/objects/Player.tscn b/gmtk_2024/objects/Player.tscn index 176fec2..a549805 100644 --- a/gmtk_2024/objects/Player.tscn +++ b/gmtk_2024/objects/Player.tscn @@ -1,7 +1,8 @@ -[gd_scene load_steps=5 format=3 uid="uid://snxpqx0ony7s"] +[gd_scene load_steps=6 format=3 uid="uid://snxpqx0ony7s"] [ext_resource type="Script" path="res://scripts/player_movement.gd" id="1_a6lhy"] [ext_resource type="Texture2D" uid="uid://qcx482jc7pqr" path="res://textures/player.png" id="2_sscjv"] +[ext_resource type="Texture2D" uid="uid://dfvxk0e8taj1d" path="res://textures/Eye Lase.png" id="3_yg3ur"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_jqi2f"] radius = 9.0 @@ -29,4 +30,12 @@ collision_mask = 2 [node name="CollisionShape2D" type="CollisionShape2D" parent="Hurtbox"] shape = SubResource("CircleShape2D_vxfel") +[node name="data_link" type="Line2D" parent="."] +visible = false +texture_repeat = 2 +points = PackedVector2Array(0, 0, 0, 0) +default_color = Color(0.298039, 1, 0.141176, 1) +texture = ExtResource("3_yg3ur") +texture_mode = 1 + [connection signal="body_entered" from="Hurtbox" to="." method="_on_hurtbox_body_entered"] diff --git a/gmtk_2024/objects/ResizableBlock.tscn b/gmtk_2024/objects/ResizableBlockBig.tscn similarity index 76% rename from gmtk_2024/objects/ResizableBlock.tscn rename to gmtk_2024/objects/ResizableBlockBig.tscn index 26d3e13..d473fe6 100644 --- a/gmtk_2024/objects/ResizableBlock.tscn +++ b/gmtk_2024/objects/ResizableBlockBig.tscn @@ -1,10 +1,10 @@ [gd_scene load_steps=4 format=3 uid="uid://br6fngf5208j0"] -[ext_resource type="Texture2D" uid="uid://bplkveclkwuk" path="res://textures/block-big.png" id="1_ejp7j"] +[ext_resource type="Texture2D" uid="uid://bplkveclkwuk" path="res://textures/block-blue.png" id="1_ejp7j"] [ext_resource type="Script" path="res://scripts/resizable_block.gd" id="1_j40bu"] -[sub_resource type="CircleShape2D" id="CircleShape2D_h0307"] -radius = 35.0143 +[sub_resource type="RectangleShape2D" id="RectangleShape2D_sgemy"] +size = Vector2(59, 59) [node name="Block" type="StaticBody2D"] collision_layer = 17 @@ -16,6 +16,6 @@ script = ExtResource("1_j40bu") texture = ExtResource("1_ejp7j") [node name="CollisionShape2D" type="CollisionShape2D" parent="."] -shape = SubResource("CircleShape2D_h0307") +shape = SubResource("RectangleShape2D_sgemy") [connection signal="input_event" from="." to="." method="_on_input_event"] diff --git a/gmtk_2024/objects/ResizableBlockSmall.tscn b/gmtk_2024/objects/ResizableBlockSmall.tscn new file mode 100644 index 0000000..a3225fd --- /dev/null +++ b/gmtk_2024/objects/ResizableBlockSmall.tscn @@ -0,0 +1,21 @@ +[gd_scene load_steps=4 format=3 uid="uid://0jn86aogkcne"] + +[ext_resource type="Script" path="res://scripts/resizable_block.gd" id="1_bulc3"] +[ext_resource type="Texture2D" uid="uid://dyl3dsoub6pmu" path="res://textures/block-small.png" id="2_42gyy"] + +[sub_resource type="RectangleShape2D" id="RectangleShape2D_vlk61"] +size = Vector2(30, 30) + +[node name="Block" type="StaticBody2D"] +collision_layer = 17 +collision_mask = 22 +input_pickable = true +script = ExtResource("1_bulc3") + +[node name="Sprite2D" type="Sprite2D" parent="."] +texture = ExtResource("2_42gyy") + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +shape = SubResource("RectangleShape2D_vlk61") + +[connection signal="input_event" from="." to="." method="_on_input_event"] diff --git a/gmtk_2024/project.godot b/gmtk_2024/project.godot index 084e149..0148149 100644 --- a/gmtk_2024/project.godot +++ b/gmtk_2024/project.godot @@ -17,8 +17,8 @@ config/icon="res://icon.svg" [display] -window/size/viewport_width=1280 -window/size/viewport_height=720 +window/size/viewport_width=640 +window/size/viewport_height=320 window/size/mode=2 window/stretch/mode="viewport" diff --git a/gmtk_2024/scripts/player_movement.gd b/gmtk_2024/scripts/player_movement.gd index 0922202..1616bef 100644 --- a/gmtk_2024/scripts/player_movement.gd +++ b/gmtk_2024/scripts/player_movement.gd @@ -4,17 +4,38 @@ extends CharacterBody2D @export var gravity = 50 var jump_count = 1 @export var jump_strength = 100 -@export var jump_strength_max = 300 var is_touching_floor : bool = true var jump_buffer_timer : float -var coyote_timer : float = 0.2 # 200 millisecond buffer -var input_direction = 0 #To keep track of which direction we where moving in last frame +var coyote_timer : float = 0.2 +var input_direction = 0 +@export var max_link_distance: float = 70.0 +var data_link: Line2D +var target_scale + + +@export var scale_duration: float = 0.5 +var current_selected = "none" +var target_scale_player: Vector2 = Vector2(1, 1) + +func _ready(): + data_link = $data_link + +func _unhandled_input(event): + if event.is_action_pressed("click"): + var nearest_block = find_nearest_block() + if nearest_block: + if nearest_block.scale == Vector2(0.5, 0.5) and self.scale == Vector2(2.0, 2.0): + nearest_block.scale_up() + scale_down_player() + elif nearest_block.scale == Vector2(1.0, 1.0) and self.scale == Vector2(1.0, 1.0): + nearest_block.scale_down() + scale_up_player() + func get_input(delta): - var left = Input.is_action_pressed("player_left") var right = Input.is_action_pressed("player_right") - + if left and right: input_direction = 0 elif left: @@ -23,18 +44,16 @@ func get_input(delta): input_direction = 1 else: input_direction = 0 - - # This line updates the player's velocity + velocity.x = input_direction * speed - + if is_on_floor(): - # reset the jump count is_touching_floor = true jump_count = 1 coyote_timer = 0.2 if jump_buffer_timer > 0: Jump() - + if not is_on_floor(): if jump_buffer_timer > 0: jump_buffer_timer -= delta @@ -42,43 +61,56 @@ func get_input(delta): coyote_timer -= delta else: jump_count = 0 - - if Input.is_action_just_pressed("player_jump"): + + if Input.is_action_just_pressed("player_jump"): if jump_count > 0: Jump() else: - jump_buffer_timer = 0.2 # set a timer to jump again once the player has reached the ground, provided the jump is is still being held down - elif Input.is_action_pressed("player_jump"): #Fall less fast if we keep holding the button + jump_buffer_timer = 0.2 + elif Input.is_action_pressed("player_jump"): velocity.y += -1 * 25 func _physics_process(delta): get_input(delta) velocity.y += gravity move_and_slide() - - if(get_slide_collision_count() > 0): - for i in get_slide_collision_count(): - var box = get_slide_collision(i).get_collider() as Box - if scale.x == 2: - if box and velocity.y >= 0: - box.velocity.x = velocity.x*0.8 - else: - if box and velocity.y >= 0 and box.scale.x < 2: - box.velocity.x = velocity.x*0.8 - # print(jump_count) # Uncomment for debugging + update_data_link() func Jump(): - if scale.x == 1: - velocity.y = -1 * jump_strength - elif scale.x == 2: - velocity.y = -1 * jump_strength_max + velocity.y = -1 * jump_strength jump_count = 0 is_touching_floor = false - func _on_hurtbox_body_entered(body: Node2D) -> void: get_tree().reload_current_scene() +func update_data_link(): + var nearest_block = find_nearest_block() + if nearest_block: + data_link.visible = true + data_link.set_point_position(0, Vector2.ZERO) + data_link.set_point_position(1, get_transform().affine_inverse() * nearest_block.position) + else: + data_link.visible = false -func _on_area_2d_body_entered(body): - print("Body entered") +func find_nearest_block() -> Node2D: + var closest_distance = max_link_distance + var closest_block: Node2D = null + for block in get_tree().get_nodes_in_group("scalable_blocks"): + var distance = global_position.distance_to(block.global_position) + if distance <= closest_distance: + closest_distance = distance + closest_block = block + return closest_block + +func start_scaling(target_node: Node2D, scale_value: Vector2): + var tween = create_tween() + tween.tween_property(target_node, "scale", scale_value, scale_duration) + +func scale_up_player(): + target_scale_player = Vector2(2.0, 2.0) + start_scaling(self, target_scale_player) + +func scale_down_player(): + target_scale_player = Vector2(1.0, 1.0) + start_scaling(self, target_scale_player) diff --git a/gmtk_2024/scripts/resizable_block.gd b/gmtk_2024/scripts/resizable_block.gd index 216565a..508fcb8 100644 --- a/gmtk_2024/scripts/resizable_block.gd +++ b/gmtk_2024/scripts/resizable_block.gd @@ -1,28 +1,32 @@ extends StaticBody2D -@export var scale_up_target: Vector2 = Vector2(3.0, 3.0) +@export var scale_up_target: Vector2 = Vector2(1.0, 1.0) @export var scale_down_target: Vector2 = Vector2(0.5, 0.5) @export var scale_duration: float = 0.5 @export var ui_actions: Node +@export var small_sprite = preload("res://textures/block-orange.png") +@export var large_sprite = preload("res://textures/block-blue.png") func _ready(): - if ui_actions == null: - ui_actions = get_parent().get_node("Path/To/UiActionsNode") + add_to_group("scalable_blocks") -func _on_input_event(viewport, event, shape_idx): - if event is InputEventMouseButton and event.pressed: - if event.is_action_pressed("click"): - if ui_actions.current_selected == "scale_up": - scale_up() - ui_actions.scale_up_player() - elif ui_actions.current_selected == "scale_down": - scale_down() - ui_actions.scale_down_player() +func _process(delta): + change_sprite_based_on_scale() func scale_up(): var tween = create_tween() tween.tween_property(self, "scale", scale_up_target, scale_duration) + change_sprite_based_on_scale() func scale_down(): var tween = create_tween() tween.tween_property(self, "scale", scale_down_target, scale_duration) + change_sprite_based_on_scale() + +func change_sprite_based_on_scale(): + var sprite = $Sprite2D + + if scale == Vector2(0.5, 0.5): + sprite.texture = small_sprite + elif scale == Vector2(1.0, 1.0): + sprite.texture = large_sprite diff --git a/gmtk_2024/scripts/ui_actions.gd b/gmtk_2024/scripts/ui_actions.gd index 428eb7e..fbd3792 100644 --- a/gmtk_2024/scripts/ui_actions.gd +++ b/gmtk_2024/scripts/ui_actions.gd @@ -1,20 +1,19 @@ extends Node -@export var player: CharacterBody2D - +@export var player : CharacterBody2D +@export var scale_duration: float = 0.5 var current_selected = "none" -@export var scale_duration: float = 0.5 var target_scale_player: Vector2 = Vector2(1, 1) -var target_scale_block: Vector2 = Vector2(1, 1) -func _unhandled_input(event: InputEvent) -> void: +func _on_input_event(viewport, event, shape_idx): if event.is_action_pressed("click"): - if current_selected == "scale_up": - current_selected = "scale_up" - elif current_selected == "scale_down": - current_selected = "scale_down" - elif current_selected == "mirror": - mirror() + var nearest_block = player.find_nearest_block() + if nearest_block and current_selected == "scale_up": + nearest_block.scale_up() + scale_up_player() + elif nearest_block: + nearest_block.scale_down() + scale_down_player() func select_up(): current_selected = "scale_up" @@ -30,11 +29,11 @@ func start_scaling(target_node: Node2D, scale_value: Vector2): tween.tween_property(target_node, "scale", scale_value, scale_duration) func scale_up_player(): - target_scale_player = Vector2(0.5, 0.5) + target_scale_player = Vector2(3.0, 3.0) start_scaling(player, target_scale_player) func scale_down_player(): - target_scale_player = Vector2(2.0, 2.0) + target_scale_player = Vector2(1.0, 1.0) start_scaling(player, target_scale_player) func mirror(): diff --git a/gmtk_2024/textures/Eye Lase.png b/gmtk_2024/textures/Eye Lase.png new file mode 100644 index 0000000..21785a2 Binary files /dev/null and b/gmtk_2024/textures/Eye Lase.png differ diff --git a/gmtk_2024/textures/File-Icon-Sheet.png b/gmtk_2024/textures/File-Icon-Sheet.png index 6db41bd..7ed6cce 100644 Binary files a/gmtk_2024/textures/File-Icon-Sheet.png and b/gmtk_2024/textures/File-Icon-Sheet.png differ diff --git a/gmtk_2024/textures/Modifi Blocks-Sheet.png b/gmtk_2024/textures/Modifi Blocks-Sheet.png new file mode 100644 index 0000000..b19b524 Binary files /dev/null and b/gmtk_2024/textures/Modifi Blocks-Sheet.png differ diff --git a/gmtk_2024/textures/Modifi Blocks.png b/gmtk_2024/textures/Modifi Blocks.png new file mode 100644 index 0000000..5c496c3 Binary files /dev/null and b/gmtk_2024/textures/Modifi Blocks.png differ diff --git a/gmtk_2024/textures/block-big.png b/gmtk_2024/textures/block-blue.png similarity index 100% rename from gmtk_2024/textures/block-big.png rename to gmtk_2024/textures/block-blue.png diff --git a/gmtk_2024/textures/block-orange.png b/gmtk_2024/textures/block-orange.png new file mode 100644 index 0000000..7e18c30 Binary files /dev/null and b/gmtk_2024/textures/block-orange.png differ diff --git a/gmtk_2024/textures/level01-spritesheet.png b/gmtk_2024/textures/level01-spritesheet.png index 0dfa7d0..307a983 100644 Binary files a/gmtk_2024/textures/level01-spritesheet.png and b/gmtk_2024/textures/level01-spritesheet.png differ