diff --git a/autoloads/fade.gd b/autoloads/fade.gd index 4a7dc77..488832d 100644 --- a/autoloads/fade.gd +++ b/autoloads/fade.gd @@ -2,17 +2,18 @@ extends CanvasLayer signal fade_finished -func fade_in(time, reverse = false, color = Color.black): +func fade_in(time, reverse: bool = false, color: Color = Color.black) -> void: var rect = $TextureRect rect.material.set_shader_param("color", color) rect.material.set_shader_param("reverse", reverse) $AnimationPlayer.play("FadeIn", -1, 1.0 / time) -func fade_out(time, reverse = false, color = Color.black): +func fade_out(time, reverse: bool = false, color: Color = Color.black) -> void: var rect = $TextureRect rect.material.set_shader_param("color", color) rect.material.set_shader_param("reverse", reverse) $AnimationPlayer.play("FadeOut", -1, 1.0 / time) -func _fade_finished(anim_name): + +func _fade_finished(anim_name) -> void: emit_signal("fade_finished") diff --git a/autoloads/options.gd b/autoloads/options.gd index abf0cf7..a4d612a 100644 --- a/autoloads/options.gd +++ b/autoloads/options.gd @@ -17,6 +17,8 @@ var transition_speed_secs setget , _get_transition_speed_sex var master_volume = 1.0 setget _set_master_volume var music_volume = 1.0 setget _set_music_volume var sound_volume = 1.0 setget _set_sound_volume +# last played file +var last_file: int = 0 # default values var defaults = null @@ -46,6 +48,8 @@ func load_options(): _set_master_volume(file.get_value("audio", "master_volume", 1.0)) _set_music_volume(file.get_value("audio", "music_volume", 1.0)) _set_sound_volume(file.get_value("audio", "sound_volume", 1.0)) + # last played file + last_file = file.get_value("save", "last_file", 0) func save_options(): var file = ConfigFile.new() @@ -59,6 +63,9 @@ func save_options(): file.set_value("audio","master_volume",master_volume) file.set_value("audio","music_volume",music_volume) file.set_value("audio","sound_volume",sound_volume) + # last played file + file.set_value("save", "last_file", last_file) + # save the options to file file.save("user://options.pr") # Setters diff --git a/autoloads/save.gd b/autoloads/save.gd index f4cc78a..cef4cfe 100644 --- a/autoloads/save.gd +++ b/autoloads/save.gd @@ -142,11 +142,15 @@ var current_file: SaveFile = null func _ready() -> void: # TODO: make load last played file - current_file = load_file("user://file1.pr") - Game.difficulty = current_file.difficulty + current_file = load_file("user://file%d.pr" % Options.last_file) + if current_file: + Game.difficulty = current_file.difficulty ## shortcut for loading a save file from specific path func load_file(path: String) -> SaveFile: - var file = SaveFile.new(path) - file.load_from_file() - return file + if File.new().file_exists(path): + var file = SaveFile.new(path) + file.load_from_file() + return file + else: + return null diff --git a/graphics/hud/sg_tasting.png b/graphics/hud/sg_tasting.png new file mode 100644 index 0000000..13908f0 Binary files /dev/null and b/graphics/hud/sg_tasting.png differ diff --git a/graphics/hud/sg_tasting.png.import b/graphics/hud/sg_tasting.png.import new file mode 100644 index 0000000..ceb6459 --- /dev/null +++ b/graphics/hud/sg_tasting.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/hud/sg_tasting.png" +dest_files=[ "res://.import/sg_tasting.png-33c5875536743f0990f8d054dfbbfa21.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/graphics/tiles/abstract.png b/graphics/tiles/abstract.png new file mode 100644 index 0000000..505969a Binary files /dev/null and b/graphics/tiles/abstract.png differ diff --git a/graphics/tiles/abstract.png.import b/graphics/tiles/abstract.png.import new file mode 100644 index 0000000..5185f11 --- /dev/null +++ b/graphics/tiles/abstract.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://graphics/tiles/abstract.png" +dest_files=[ "res://.import/abstract.png-520d62bcdeefefeb95738be4737e0f66.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +process/normal_map_invert_y=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/menus/file_create.gd b/menus/file_create.gd new file mode 100644 index 0000000..6a20dd9 --- /dev/null +++ b/menus/file_create.gd @@ -0,0 +1,58 @@ +extends Node + + +var file: Save.SaveFile = null +var difficulty: int = Game.Difficulty.SPICY + +onready var face: Sprite = $"%Face" +onready var chosen_name: Label = $"%ChosenName" + + +func _ready() -> void: + # escape to file select if no file is assigned + if not file: + yield(get_tree(), "idle_frame") + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() + return + + # pause so that player can not move around until difficulty chosen + get_tree().paused = true + # initialize name + chosen_name.text = "" + file.name = "" + # fade in + Fade.fade_in(0.4) + # focus the difficulty + $"%Spicy".call_deferred("grab_focus") + + +func _set_difficulty(value: int) -> void: + difficulty = posmod(value, 4) + file.difficulty = difficulty + face.frame = difficulty + + +func _difficulty_selected() -> void: + Fade.fade_out(0.4) + yield(Fade, "fade_finished") + $"%DifficultySelect".queue_free() + $"%NameEntry".visible = true + get_tree().paused = false + Game.use_lives = false + Fade.fade_in(0.4) + +func _on_letter_chosen(letter: String) -> void: + file.name += letter + chosen_name.text = file.name + if file.name.length() > 0: + $"%ExitDoor".frame = 1 + + +func _on_Exit_area_entered(area: Area2D) -> void: + if file.name.length() > 0: + get_tree().paused = true + file.save_to_file() + Fade.fade_out(0.4) + yield(Fade, "fade_finished") + get_tree().paused = false + SceneManager.current_scene = load("res://menus/file_select.tscn").instance() diff --git a/menus/file_create.tscn b/menus/file_create.tscn new file mode 100644 index 0000000..7f0795c --- /dev/null +++ b/menus/file_create.tscn @@ -0,0 +1,331 @@ +[gd_scene load_steps=21 format=2] + +[ext_resource path="res://shaders/ska_plane.gdshader" type="Shader" id=1] +[ext_resource path="res://ui/theme.tres" type="Theme" id=2] +[ext_resource path="res://shaders/wibble_wobble.gdshader" type="Shader" id=3] +[ext_resource path="res://graphics/hud/sg_menu.png" type="Texture" id=4] +[ext_resource path="res://graphics/hud/sg_tasting.png" type="Texture" id=5] +[ext_resource path="res://graphics/hud/pause_arrow.png" type="Texture" id=6] +[ext_resource path="res://menus/file_create.gd" type="Script" id=7] +[ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=8] +[ext_resource path="res://tilesets/t_abstract.tres" type="TileSet" id=9] +[ext_resource path="res://objects/player/player.tscn" type="PackedScene" id=10] +[ext_resource path="res://objects/hud/letter_block.tscn" type="PackedScene" id=11] +[ext_resource path="res://tilesets/t_ladders.tres" type="TileSet" id=12] +[ext_resource path="res://shaders/1px_border.gdshader" type="Shader" id=13] +[ext_resource path="res://graphics/exit/exit.png" type="Texture" id=14] + +[sub_resource type="ShaderMaterial" id=1] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 0.458824, 0.282353, 0.690196, 1 ) +shader_param/color_2 = Color( 0.160784, 0.0352941, 0.282353, 1 ) +shader_param/checker_size = Vector2( 32, 16 ) +shader_param/pan_speed = Vector2( 16, -8 ) +shader_param/cycle_speed = Vector2( 0, 4 ) +shader_param/cycle_alternation = Vector2( 0, 1 ) +shader_param/uv_transform = Transform2D( 1, 0, 1, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=2] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 0, 4 ) +shader_param/ammount = Vector2( 0, 1 ) +shader_param/offset = Vector2( 0, 1 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=3] +shader = ExtResource( 3 ) +shader_param/speed = Vector2( 4, 8 ) +shader_param/ammount = Vector2( 1, 1 ) +shader_param/offset = Vector2( 0, 0 ) +shader_param/delay = Vector2( 0, 0 ) + +[sub_resource type="ShaderMaterial" id=4] +shader = ExtResource( 1 ) +shader_param/color_1 = Color( 1, 0.47451, 0.266667, 1 ) +shader_param/color_2 = Color( 0.980392, 0.890196, 0.576471, 1 ) +shader_param/checker_size = Vector2( 16, 8 ) +shader_param/pan_speed = Vector2( 0, 0 ) +shader_param/cycle_speed = Vector2( 0, 12 ) +shader_param/cycle_alternation = Vector2( 0, 0 ) +shader_param/uv_transform = Transform2D( 1, 0, 2, 1, 0, 0 ) + +[sub_resource type="ShaderMaterial" id=5] +shader = ExtResource( 13 ) +shader_param/border_color = Color( 0, 0, 0, 1 ) +shader_param/border_corners = true + +[sub_resource type="RectangleShape2D" id=6] +extents = Vector2( 8, 7 ) + +[node name="FileCreate" type="Node" groups=["gets_letters"]] +pause_mode = 2 +script = ExtResource( 7 ) +__meta__ = { +"_edit_horizontal_guides_": [ ] +} + +[node name="Background" type="ColorRect" parent="."] +material = SubResource( 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="DifficultySelect" type="Control" parent="."] +unique_name_in_owner = true +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 + +[node name="Panel" type="Panel" parent="DifficultySelect"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 32.0 +margin_right = 88.0 +margin_bottom = 96.0 +theme = ExtResource( 2 ) + +[node name="Body" type="Label" parent="DifficultySelect/Panel"] +material = SubResource( 2 ) +margin_left = 16.0 +margin_top = 8.0 +margin_right = 65.0 +margin_bottom = 57.0 +text = "sweet +salty +spicy +pungent" + +[node name="Sweet" type="TextureButton" parent="DifficultySelect/Panel"] +material = SubResource( 3 ) +margin_left = 8.0 +margin_top = 9.0 +margin_right = 16.0 +margin_bottom = 17.0 +focus_neighbour_top = NodePath("../Pungent") +focus_neighbour_bottom = NodePath("../Salty") +texture_focused = ExtResource( 6 ) + +[node name="Salty" type="TextureButton" parent="DifficultySelect/Panel"] +material = SubResource( 3 ) +margin_left = 8.0 +margin_top = 22.0 +margin_right = 16.0 +margin_bottom = 30.0 +focus_neighbour_top = NodePath("../Sweet") +focus_neighbour_bottom = NodePath("../Spicy") +texture_focused = ExtResource( 6 ) + +[node name="Spicy" type="TextureButton" parent="DifficultySelect/Panel"] +unique_name_in_owner = true +material = SubResource( 3 ) +margin_left = 8.0 +margin_top = 35.0 +margin_right = 16.0 +margin_bottom = 43.0 +focus_neighbour_top = NodePath("../Salty") +focus_neighbour_bottom = NodePath("../Pungent") +texture_focused = ExtResource( 6 ) + +[node name="Pungent" type="TextureButton" parent="DifficultySelect/Panel"] +material = SubResource( 3 ) +margin_left = 8.0 +margin_top = 48.0 +margin_right = 16.0 +margin_bottom = 56.0 +focus_neighbour_top = NodePath("../Spicy") +focus_neighbour_bottom = NodePath("../Sweet") +texture_focused = ExtResource( 6 ) + +[node name="SG" type="TextureRect" parent="DifficultySelect"] +margin_left = 176.0 +margin_top = 40.0 +margin_right = 242.0 +margin_bottom = 187.0 +texture = ExtResource( 4 ) + +[node name="Face" type="Sprite" parent="DifficultySelect/SG"] +unique_name_in_owner = true +position = Vector2( 33, 42 ) +texture = ExtResource( 5 ) +hframes = 4 +frame = 2 + +[node name="NameEntry" type="Node2D" parent="."] +pause_mode = 1 +unique_name_in_owner = true + +[node name="ChosenName" type="Label" parent="NameEntry"] +unique_name_in_owner = true +material = ExtResource( 8 ) +anchor_right = 1.0 +margin_right = 256.0 +margin_bottom = 16.0 +theme = ExtResource( 2 ) +text = "SG" +align = 1 +valign = 1 + +[node name="TileBG" type="ColorRect" parent="NameEntry"] +material = SubResource( 4 ) +margin_left = 1.0 +margin_top = 161.0 +margin_right = 255.0 +margin_bottom = 191.0 + +[node name="TileBG2" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -56.0 +margin_right = 238.0 +margin_bottom = -42.0 + +[node name="TileBG3" type="ColorRect" parent="NameEntry/TileBG"] +material = SubResource( 4 ) +margin_left = 24.0 +margin_top = -112.0 +margin_right = 238.0 +margin_bottom = -98.0 + +[node name="Ground" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 9 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( -1, 0, 1, -65536, 0, 196610, -65535, 0, 196610, -65534, 0, 196610, -65533, 0, 196610, -65532, 0, 196610, -65531, 0, 196610, -65530, 0, 196610, -65529, 0, 196610, -65528, 0, 196610, -65527, 0, 196610, -65526, 0, 196610, -65525, 0, 196610, -65524, 0, 196610, -65523, 0, 196610, -65522, 0, 196610, -65521, 0, 196610, -65520, 0, 196610, -65519, 0, 196610, -65518, 0, 196610, -65517, 0, 196610, -65516, 0, 196610, -65515, 0, 196610, -65514, 0, 196610, -65513, 0, 196610, -65512, 0, 196610, -65511, 0, 196610, -65510, 0, 196610, -65509, 0, 196610, -65508, 0, 196610, -65507, 0, 196610, -65506, 0, 196610, -65505, 0, 196610, -65504, 0, 3, 65535, 0, 65536, 32, 0, 65536, 131071, 0, 65539, 65568, 0, 65537, 196607, 0, 65539, 131104, 0, 65537, 262143, 0, 65539, 196640, 0, 65537, 327679, 0, 65539, 262176, 0, 65537, 393215, 0, 65539, 327712, 0, 65537, 458751, 0, 65539, 393219, 0, 1, 393220, 0, 2, 393221, 0, 2, 393222, 0, 2, 393223, 0, 2, 393224, 0, 2, 393225, 0, 2, 393226, 0, 2, 393227, 0, 2, 393228, 0, 2, 393229, 0, 2, 393230, 0, 2, 393231, 0, 2, 393232, 0, 2, 393233, 0, 2, 393234, 0, 2, 393235, 0, 2, 393236, 0, 2, 393237, 0, 2, 393238, 0, 2, 393239, 0, 2, 393240, 0, 2, 393241, 0, 2, 393242, 0, 2, 393243, 0, 2, 393244, 0, 2, 393245, 0, 3, 393248, 0, 65537, 524287, 0, 65539, 458755, 0, 131073, 458756, 0, 131074, 458757, 0, 131074, 458758, 0, 131074, 458759, 0, 131074, 458760, 0, 131074, 458761, 0, 131074, 458762, 0, 131074, 458763, 0, 131074, 458764, 0, 131074, 458765, 0, 131074, 458766, 0, 131074, 458767, 0, 131074, 458768, 0, 131074, 458769, 0, 131074, 458770, 0, 131074, 458771, 0, 131074, 458772, 0, 131074, 458773, 0, 131074, 458774, 0, 131074, 458775, 0, 131074, 458776, 0, 131074, 458777, 0, 131074, 458778, 0, 131074, 458779, 0, 131074, 458780, 0, 131074, 458781, 0, 131075, 458784, 0, 65537, 589823, 0, 65539, 524320, 0, 65537, 655359, 0, 65539, 589856, 0, 65537, 720895, 0, 65539, 655392, 0, 65537, 786431, 0, 65539, 720928, 0, 65537, 851967, 0, 65539, 786464, 0, 65537, 917503, 0, 65539, 851971, 0, 1, 851972, 0, 2, 851973, 0, 2, 851974, 0, 2, 851975, 0, 2, 851976, 0, 2, 851977, 0, 2, 851978, 0, 2, 851979, 0, 2, 851980, 0, 2, 851981, 0, 2, 851982, 0, 2, 851983, 0, 2, 851984, 0, 2, 851985, 0, 2, 851986, 0, 2, 851987, 0, 2, 851988, 0, 2, 851989, 0, 2, 851990, 0, 2, 851991, 0, 2, 851992, 0, 2, 851993, 0, 2, 851994, 0, 2, 851995, 0, 2, 851996, 0, 2, 851997, 0, 3, 852000, 0, 65537, 983039, 0, 65539, 917507, 0, 131073, 917508, 0, 131074, 917509, 0, 131074, 917510, 0, 131074, 917511, 0, 131074, 917512, 0, 131074, 917513, 0, 131074, 917514, 0, 131074, 917515, 0, 131074, 917516, 0, 131074, 917517, 0, 131074, 917518, 0, 131074, 917519, 0, 131074, 917520, 0, 131074, 917521, 0, 131074, 917522, 0, 131074, 917523, 0, 131074, 917524, 0, 131074, 917525, 0, 131074, 917526, 0, 131074, 917527, 0, 131074, 917528, 0, 131074, 917529, 0, 131074, 917530, 0, 131074, 917531, 0, 131074, 917532, 0, 131074, 917533, 0, 131075, 917536, 0, 65537, 1048575, 0, 65539, 983072, 0, 65537, 1114111, 0, 65539, 1048608, 0, 65537, 1179647, 0, 65539, 1114144, 0, 65537, 1245183, 0, 65539, 1179680, 0, 65537, 1310719, 0, 65539, 1245216, 0, 65537, 1376255, 0, 65539, 1310720, 0, 1, 1310721, 0, 2, 1310722, 0, 2, 1310723, 0, 2, 1310724, 0, 2, 1310725, 0, 2, 1310726, 0, 2, 1310727, 0, 2, 1310728, 0, 2, 1310729, 0, 2, 1310730, 0, 2, 1310731, 0, 2, 1310732, 0, 2, 1310733, 0, 2, 1310734, 0, 2, 1310735, 0, 2, 1310736, 0, 2, 1310737, 0, 2, 1310738, 0, 2, 1310739, 0, 2, 1310740, 0, 2, 1310741, 0, 2, 1310742, 0, 2, 1310743, 0, 2, 1310744, 0, 2, 1310745, 0, 2, 1310746, 0, 2, 1310747, 0, 2, 1310748, 0, 2, 1310749, 0, 2, 1310750, 0, 2, 1310751, 0, 3, 1310752, 0, 65537, 1441791, 0, 65539, 1376256, 0, 65537, 1376257, 0, 65538, 1376258, 0, 65538, 1376259, 0, 65538, 1376260, 0, 65538, 1376261, 0, 65538, 1376262, 0, 65538, 1376263, 0, 65538, 1376264, 0, 65538, 1376265, 0, 65538, 1376266, 0, 65538, 1376267, 0, 65538, 1376268, 0, 65538, 1376269, 0, 65538, 1376270, 0, 65538, 1376271, 0, 65538, 1376272, 0, 65538, 1376273, 0, 65538, 1376274, 0, 65538, 1376275, 0, 65538, 1376276, 0, 65538, 1376277, 0, 65538, 1376278, 0, 65538, 1376279, 0, 65538, 1376280, 0, 65538, 1376281, 0, 65538, 1376282, 0, 65538, 1376283, 0, 65538, 1376284, 0, 65538, 1376285, 0, 65538, 1376286, 0, 65538, 1376287, 0, 65539, 1376288, 0, 65537, 1507327, 0, 65539, 1441792, 0, 65537, 1441793, 0, 65538, 1441794, 0, 65538, 1441795, 0, 65538, 1441796, 0, 65538, 1441797, 0, 65538, 1441798, 0, 65538, 1441799, 0, 65538, 1441800, 0, 65538, 1441801, 0, 65538, 1441802, 0, 65538, 1441803, 0, 65538, 1441804, 0, 65538, 1441805, 0, 65538, 1441806, 0, 65538, 1441807, 0, 65538, 1441808, 0, 65538, 1441809, 0, 65538, 1441810, 0, 65538, 1441811, 0, 65538, 1441812, 0, 65538, 1441813, 0, 65538, 1441814, 0, 65538, 1441815, 0, 65538, 1441816, 0, 65538, 1441817, 0, 65538, 1441818, 0, 65538, 1441819, 0, 65538, 1441820, 0, 65538, 1441821, 0, 65538, 1441822, 0, 65538, 1441823, 0, 65539, 1441824, 0, 65537, 1572863, 0, 65539, 1507328, 0, 131073, 1507329, 0, 131074, 1507330, 0, 131074, 1507331, 0, 131074, 1507332, 0, 131074, 1507333, 0, 131074, 1507334, 0, 131074, 1507335, 0, 131074, 1507336, 0, 131074, 1507337, 0, 131074, 1507338, 0, 131074, 1507339, 0, 131074, 1507340, 0, 131074, 1507341, 0, 131074, 1507342, 0, 131074, 1507343, 0, 131074, 1507344, 0, 131074, 1507345, 0, 131074, 1507346, 0, 131074, 1507347, 0, 131074, 1507348, 0, 131074, 1507349, 0, 131074, 1507350, 0, 131074, 1507351, 0, 131074, 1507352, 0, 131074, 1507353, 0, 131074, 1507354, 0, 131074, 1507355, 0, 131074, 1507356, 0, 131074, 1507357, 0, 131074, 1507358, 0, 131074, 1507359, 0, 131075, 1507360, 0, 65537 ) + +[node name="Player" parent="NameEntry" instance=ExtResource( 10 )] +unique_name_in_owner = true +position = Vector2( 16, 160 ) + +[node name="Ladders" type="TileMap" parent="NameEntry"] +tile_set = ExtResource( 12 ) +cell_size = Vector2( 8, 8 ) +format = 1 +tile_data = PoolIntArray( 0, 0, 196609, 65536, 0, 196609, 131072, 0, 196609, 196608, 0, 196609, 262144, 0, 196609, 327680, 0, 196609, 393216, 0, 196609, 458752, 0, 196609, 524288, 0, 196609, 589824, 0, 196609, 655360, 0, 196609, 720896, 0, 196609, 786432, 0, 196609, 851968, 0, 196609, 917504, 0, 196609, 983040, 0, 196609, 1048576, 0, 196609, 1114112, 0, 196609, 1179648, 0, 196609, 1245184, 0, 196609 ) + +[node name="Letters" type="Node2D" parent="NameEntry"] + +[node name="LetterBlock1" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 32, 128 ) + +[node name="LetterBlock2" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 56, 128 ) +glyph = 1 + +[node name="LetterBlock3" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 80, 128 ) +glyph = 2 + +[node name="LetterBlock4" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 104, 128 ) +glyph = 3 + +[node name="LetterBlock5" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 128, 128 ) +glyph = 4 + +[node name="LetterBlock6" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 152, 128 ) +glyph = 5 + +[node name="LetterBlock7" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 176, 128 ) +glyph = 6 + +[node name="LetterBlock8" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 200, 128 ) +glyph = 7 + +[node name="LetterBlock9" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 32, 72 ) +glyph = 8 + +[node name="LetterBlock10" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 56, 72 ) +glyph = 9 + +[node name="LetterBlock11" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 80, 72 ) +glyph = 10 + +[node name="LetterBlock12" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 104, 72 ) +glyph = 11 + +[node name="LetterBlock13" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 128, 72 ) +glyph = 12 + +[node name="LetterBlock14" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 152, 72 ) +glyph = 13 + +[node name="LetterBlock15" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 176, 72 ) +glyph = 14 + +[node name="LetterBlock16" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 200, 72 ) +glyph = 15 + +[node name="LetterBlock17" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 224, 72 ) +glyph = 16 + +[node name="LetterBlock18" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 32, 16 ) +glyph = 17 + +[node name="LetterBlock19" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 56, 16 ) +glyph = 18 + +[node name="LetterBlock20" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 80, 16 ) +glyph = 19 + +[node name="LetterBlock21" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 104, 16 ) +glyph = 20 + +[node name="LetterBlock22" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 128, 16 ) +glyph = 21 + +[node name="LetterBlock23" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 152, 16 ) +glyph = 22 + +[node name="LetterBlock24" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 176, 16 ) +glyph = 23 + +[node name="LetterBlock25" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 200, 16 ) +glyph = 24 + +[node name="LetterBlock26" parent="NameEntry/Letters" instance=ExtResource( 11 )] +position = Vector2( 224, 16 ) +glyph = 25 + +[node name="Exit" type="Area2D" parent="NameEntry"] +position = Vector2( 229, 148 ) + +[node name="ExitDoor" type="Sprite" parent="NameEntry/Exit"] +unique_name_in_owner = true +material = SubResource( 5 ) +texture = ExtResource( 14 ) +hframes = 2 +region_rect = Rect2( 0, 0, 16, 24 ) + +[node name="CollisionShape2D" type="CollisionShape2D" parent="NameEntry/Exit"] +position = Vector2( 0, 4 ) +shape = SubResource( 6 ) + +[connection signal="focus_entered" from="DifficultySelect/Panel/Sweet" to="." method="_set_difficulty" binds= [ 0 ]] +[connection signal="pressed" from="DifficultySelect/Panel/Sweet" to="." method="_difficulty_selected"] +[connection signal="focus_entered" from="DifficultySelect/Panel/Salty" to="." method="_set_difficulty" binds= [ 1 ]] +[connection signal="pressed" from="DifficultySelect/Panel/Salty" to="." method="_difficulty_selected"] +[connection signal="focus_entered" from="DifficultySelect/Panel/Spicy" to="." method="_set_difficulty" binds= [ 2 ]] +[connection signal="pressed" from="DifficultySelect/Panel/Spicy" to="." method="_difficulty_selected"] +[connection signal="focus_entered" from="DifficultySelect/Panel/Pungent" to="." method="_set_difficulty" binds= [ 3 ]] +[connection signal="pressed" from="DifficultySelect/Panel/Pungent" to="." method="_difficulty_selected"] +[connection signal="area_entered" from="NameEntry/Exit" to="." method="_on_Exit_area_entered"] diff --git a/menus/file_select.gd b/menus/file_select.gd index 1eccaec..ea107af 100644 --- a/menus/file_select.gd +++ b/menus/file_select.gd @@ -1,16 +1,15 @@ extends Node -# Declare member variables here. Examples: -# var a = 2 -# var b = "text" +export var next_scene: PackedScene -# Called when the node enters the scene tree for the first time. -func _ready(): - pass # Replace with function body. +func _ready() -> void: + Fade.fade_in(0.4) + $SelectFile1.call_deferred("grab_focus") -# Called every frame. 'delta' is the elapsed time since the previous frame. -#func _process(delta): -# pass +func _on_file_loaded() -> void: + Fade.fade_out(0.4) + yield(Fade, "fade_finished") + SceneManager.current_scene = next_scene.instance() diff --git a/menus/file_select.tscn b/menus/file_select.tscn index 5241051..7694be0 100644 --- a/menus/file_select.tscn +++ b/menus/file_select.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=9 format=2] [ext_resource path="res://menus/file_select_panel.tscn" type="PackedScene" id=1] +[ext_resource path="res://menus/level_select_scholar.tscn" type="PackedScene" id=2] [ext_resource path="res://graphics/borders/skaborder.png" type="Texture" id=8] [ext_resource path="res://graphics/hud/file_select_arrow.png" type="Texture" id=9] [ext_resource path="res://menus/file_select.gd" type="Script" id=10] @@ -28,9 +29,9 @@ shader_param/uv_transform = Transform2D( 1, 1.582, 1, 2, 0, 0 ) [node name="FileSelect" type="Node"] script = ExtResource( 10 ) +next_scene = ExtResource( 2 ) [node name="TextureRect2" type="TextureRect" parent="."] -visible = false modulate = Color( 0, 0.109804, 1, 1 ) anchor_right = 1.0 anchor_bottom = 1.0 @@ -53,48 +54,58 @@ margin_bottom = 192.0 margin_left = 12.0 margin_top = 64.0 margin_right = 84.0 -margin_bottom = 128.0 +margin_bottom = 136.0 [node name="Panel2" parent="." instance=ExtResource( 1 )] margin_left = 92.0 margin_top = 64.0 margin_right = 164.0 -margin_bottom = 128.0 +margin_bottom = 136.0 number = 2 [node name="Panel3" parent="." instance=ExtResource( 1 )] margin_left = 172.0 margin_top = 64.0 margin_right = 244.0 -margin_bottom = 128.0 +margin_bottom = 136.0 number = 3 [node name="SelectFile1" type="TextureButton" parent="."] margin_left = 12.0 -margin_top = 130.0 +margin_top = 138.0 margin_right = 84.0 -margin_bottom = 138.0 -texture_normal = ExtResource( 9 ) +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile3") +focus_neighbour_right = NodePath("../SelectFile2") texture_focused = ExtResource( 9 ) expand = true stretch_mode = 3 [node name="SelectFile2" type="TextureButton" parent="."] margin_left = 92.0 -margin_top = 130.0 +margin_top = 138.0 margin_right = 164.0 -margin_bottom = 138.0 -texture_normal = ExtResource( 9 ) +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile1") +focus_neighbour_right = NodePath("../SelectFile3") texture_focused = ExtResource( 9 ) expand = true stretch_mode = 3 [node name="SelectFile3" type="TextureButton" parent="."] margin_left = 172.0 -margin_top = 130.0 +margin_top = 138.0 margin_right = 244.0 -margin_bottom = 138.0 -texture_normal = ExtResource( 9 ) +margin_bottom = 146.0 +focus_neighbour_left = NodePath("../SelectFile2") +focus_neighbour_right = NodePath("../SelectFile1") texture_focused = ExtResource( 9 ) expand = true stretch_mode = 3 + +[connection signal="file_loaded" from="Panel" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel2" to="." method="_on_file_loaded"] +[connection signal="file_loaded" from="Panel3" to="." method="_on_file_loaded"] +[connection signal="pressed" from="SelectFile1" to="Panel" method="select"] +[connection signal="pressed" from="SelectFile2" to="Panel2" method="select"] +[connection signal="pressed" from="SelectFile3" to="Panel3" method="select"] diff --git a/menus/file_select_panel.gd b/menus/file_select_panel.gd index 5ca4352..114c948 100644 --- a/menus/file_select_panel.gd +++ b/menus/file_select_panel.gd @@ -1,16 +1,48 @@ extends Panel + +signal file_loaded() + +const FileCreate = preload("res://menus/file_create.tscn") + export var number = 1 -var file: Save.SaveFile +var file: Save.SaveFile = null + func _ready(): + $FileNumber.text = "FILE%d" % number + # check if the file exists if File.new().file_exists("user://file%d.pr" % number): + # load file and fill in information file = Save.load_file("user://file%d.pr" % number) $"%Name".text = file.name $"%ShardCounter".text = "%02d" % file.get_total_shards() $"%KeyCounter".text = "%03d" % file.get_total_keys() + $"%DeathCounter".text = "%04d" % file.get_total_deaths() $"%TimeCounter".text = "%02d:%02d" % [file.play_time / 3600.0, fmod(file.play_time / 60.0, 60.0)] else: $FileExists.visible = false $FileDoesNotExist.visible = true + + +func select() -> void: + # if a file exists, load and play it! + if file: + # set current file and difficulty + Save.current_file = file + Game.difficulty = file.difficulty + # update last-played file for continue button + Options.last_file = number + Options.save_options() + # let file select scene know a file has been loaded + emit_signal("file_loaded") + # empty file, so go to file creation screen + else: + # wait for fade + Fade.fade_out(0.4) + yield(Fade, "fade_finished") + # create new file and give it to the file create screen + var file_create = FileCreate.instance() + file_create.file = Save.SaveFile.new("user://file%d.pr" % number) + SceneManager.current_scene = file_create diff --git a/menus/file_select_panel.tscn b/menus/file_select_panel.tscn index cdcdf7b..4993b2e 100644 --- a/menus/file_select_panel.tscn +++ b/menus/file_select_panel.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=10 format=2] +[gd_scene load_steps=11 format=2] [ext_resource path="res://shaders/recolor_border.shader" type="Shader" id=1] [ext_resource path="res://ui/2ndpuberty_outline.tres" type="Material" id=2] @@ -6,6 +6,7 @@ [ext_resource path="res://ui/theme.tres" type="Theme" id=4] [ext_resource path="res://objects/collectibles/shard.tscn" type="PackedScene" id=5] [ext_resource path="res://menus/file_select_panel.gd" type="Script" id=6] +[ext_resource path="res://graphics/hud/deaths_head.png" type="Texture" id=7] [ext_resource path="res://graphics/player/sg_idle.png" type="Texture" id=8] [ext_resource path="res://graphics/player/palettes/default.png" type="Texture" id=9] @@ -17,12 +18,9 @@ shader_param/palette = ExtResource( 9 ) [node name="Panel" type="Panel"] margin_right = 72.0 -margin_bottom = 64.0 +margin_bottom = 72.0 theme = ExtResource( 4 ) script = ExtResource( 6 ) -__meta__ = { -"_edit_group_": true -} [node name="FileNumber" type="Label" parent="."] material = ExtResource( 2 ) @@ -32,7 +30,9 @@ theme = ExtResource( 4 ) text = "file1" align = 1 -[node name="FileExists" type="Node2D" parent="."] +[node name="FileExists" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 [node name="Name" type="Label" parent="FileExists"] unique_name_in_owner = true @@ -46,12 +46,20 @@ align = 1 [node name="TimeCounter" type="Label" parent="FileExists"] unique_name_in_owner = true margin_left = 3.0 -margin_top = 50.0 +margin_top = 58.0 margin_right = 69.0 -margin_bottom = 60.0 +margin_bottom = 68.0 text = "00:00" align = 1 +[node name="DeathCounter" type="Label" parent="FileExists"] +unique_name_in_owner = true +margin_left = 25.0 +margin_top = 47.0 +margin_right = 56.0 +margin_bottom = 57.0 +text = "0000" + [node name="Palette" type="TextureRect" parent="FileExists"] material = SubResource( 1 ) margin_left = 8.0 @@ -83,7 +91,11 @@ position = Vector2( 32, 23 ) [node name="Key" parent="FileExists" instance=ExtResource( 3 )] position = Vector2( 32, 34 ) -[node name="FileDoesNotExist" type="Node2D" parent="."] +[node name="DeathsHead" type="Sprite" parent="FileExists"] +position = Vector2( 21, 52 ) +texture = ExtResource( 7 ) + +[node name="FileDoesNotExist" type="Control" parent="."] visible = false [node name="Label" type="Label" parent="FileDoesNotExist"] diff --git a/menus/main_menu.gd b/menus/main_menu.gd index 2d99b50..1e435df 100644 --- a/menus/main_menu.gd +++ b/menus/main_menu.gd @@ -3,10 +3,11 @@ extends Node onready var continue_button = $Panel/Continue func _ready(): + Fade.fade_in(0.4) #Grey out continue if no save files yield(get_tree(),"idle_frame") - var file = File.new() - if file.file_exists("user://file1.pr") or file.file_exists("user://file2.pr") or file.file_exists("user://file3.pr"): + print(Save.current_file) + if Save.current_file: $Panel/Continue.grab_focus() else: $Panel/Body/GreyedContinue.visible = true @@ -17,12 +18,18 @@ func _ready(): func _on_Continue_button_down(): - pass # Replace with function body. + Fade.fade_out(0.4) + yield(Fade, "fade_finished") + SceneManager.current_scene = load("res://menus/level_select_scholar.tscn").instance() func _on_FileSelect_button_down(): + Fade.fade_out(0.4) + yield(Fade, "fade_finished") SceneManager.current_scene = load("res://menus/file_select.tscn").instance() func _on_Exit_button_down(): + Fade.fade_out(0.4) + yield(Fade, "fade_finished") get_tree().quit() diff --git a/menus/main_menu.tscn b/menus/main_menu.tscn index 771ceb0..1e91520 100644 --- a/menus/main_menu.tscn +++ b/menus/main_menu.tscn @@ -135,7 +135,7 @@ margin_left = 8.0 margin_top = 9.0 margin_right = 16.0 margin_bottom = 17.0 -focus_neighbour_top = NodePath("../Options") +focus_neighbour_top = NodePath("../Exit") focus_neighbour_bottom = NodePath("../FileSelect") texture_focused = ExtResource( 4 ) diff --git a/menus/title_screen.gd b/menus/title_screen.gd index 883835c..9319c10 100644 --- a/menus/title_screen.gd +++ b/menus/title_screen.gd @@ -4,4 +4,6 @@ export var next_menu: PackedScene func _input(event): if Input.is_action_just_pressed("start"): + Fade.fade_out(0.4) + yield(Fade, "fade_finished") SceneManager.current_scene = next_menu.instance() diff --git a/project.godot b/project.godot index 022e815..a200cad 100644 --- a/project.godot +++ b/project.godot @@ -63,7 +63,7 @@ _global_script_class_icons={ [application] config/name="Revolution 2083" -run/main_scene="res://menus/level_select_scholar.tscn" +run/main_scene="res://menus/title_screen.tscn" config/use_custom_user_dir=true config/custom_user_dir_name="heromark2" config/icon="res://icon.png" @@ -71,12 +71,12 @@ config/icon="res://icon.png" [autoload] Border="*res://autoloads/border.tscn" +Options="*res://autoloads/options.gd" Save="*res://autoloads/save.gd" Game="*res://autoloads/game.gd" Audio="*res://autoloads/audio.tscn" LevelData="*res://autoloads/level_data.tscn" Debug="*res://autoloads/debug.tscn" -Options="*res://autoloads/options.gd" TouchControls="*res://autoloads/touch_controls.tscn" SceneManager="*res://autoloads/scene_manager.tscn" Console="*res://autoloads/console.tscn" diff --git a/tilesets/t_abstract.tres b/tilesets/t_abstract.tres new file mode 100644 index 0000000..51ac7ec --- /dev/null +++ b/tilesets/t_abstract.tres @@ -0,0 +1,173 @@ +[gd_resource type="TileSet" load_steps=18 format=2] + +[ext_resource path="res://graphics/tiles/abstract.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=13] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=14] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=15] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[sub_resource type="ConvexPolygonShape2D" id=16] +points = PoolVector2Array( 0, 0, 8, 0, 8, 8, 0, 8 ) + +[resource] +0/name = "griddy" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 1 +0/autotile/bitmask_mode = 1 +0/autotile/bitmask_flags = [ Vector2( 0, 0 ), 144, Vector2( 0, 1 ), 146, Vector2( 0, 2 ), 18, Vector2( 0, 3 ), 16, Vector2( 1, 0 ), 16777392, Vector2( 1, 1 ), 17039538, Vector2( 1, 2 ), 262194, Vector2( 1, 3 ), 48, Vector2( 2, 0 ), 20971704, Vector2( 2, 1 ), 21299386, Vector2( 2, 2 ), 327738, Vector2( 2, 3 ), 56, Vector2( 3, 0 ), 4194456, Vector2( 3, 1 ), 4259994, Vector2( 3, 2 ), 65562, Vector2( 3, 3 ), 24 ] +0/autotile/icon_coordinate = Vector2( 0, 3 ) +0/autotile/tile_size = Vector2( 8, 8 ) +0/autotile/spacing = 0 +0/autotile/occluder_map = [ ] +0/autotile/navpoly_map = [ ] +0/autotile/priority_map = [ ] +0/autotile/z_index_map = [ ] +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 2 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 0, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 1, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 13 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 3, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 14 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 3 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 15 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +}, { +"autotile_coord": Vector2( 2, 1 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 16 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0