diff --git a/gmtk_2024/levels/level_1.tscn b/gmtk_2024/levels/level_1.tscn index 4e472e7..f42b35e 100644 --- a/gmtk_2024/levels/level_1.tscn +++ b/gmtk_2024/levels/level_1.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=13 format=4 uid="uid://ctc0arg3efa5k"] +[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"] @@ -7,8 +7,7 @@ [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"] -[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="9_cc6eq"] +[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") @@ -182,5 +181,3 @@ position = Vector2(-132, 311) position = Vector2(162, 124) collision_layer = 1 ui_actions = NodePath("../UILayer/UI") - -[node name="CanvasLayer2" parent="." index="12" instance=ExtResource("9_cc6eq")] 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/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 0e7c4f1..1616bef 100644 --- a/gmtk_2024/scripts/player_movement.gd +++ b/gmtk_2024/scripts/player_movement.gd @@ -8,13 +8,30 @@ var is_touching_floor : bool = true var jump_buffer_timer : float var coyote_timer : float = 0.2 var input_direction = 0 -@export var max_link_distance: float = 200.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") @@ -85,3 +102,15 @@ func find_nearest_block() -> Node2D: 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 4c176d7..508fcb8 100644 --- a/gmtk_2024/scripts/resizable_block.gd +++ b/gmtk_2024/scripts/resizable_block.gd @@ -1,29 +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(): add_to_group("scalable_blocks") - if ui_actions == null: - ui_actions = get_parent().get_node("UILayer/UI") -#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 76c4b84..fbd3792 100644 --- a/gmtk_2024/scripts/ui_actions.gd +++ b/gmtk_2024/scripts/ui_actions.gd @@ -5,13 +5,13 @@ extends Node var current_selected = "none" var target_scale_player: Vector2 = Vector2(1, 1) -func _unhandled_input(event: InputEvent) -> void: +func _on_input_event(viewport, event, shape_idx): if event.is_action_pressed("click"): 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 and current_selected == "scale_down": + elif nearest_block: nearest_block.scale_down() scale_down_player() @@ -29,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/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