diff --git a/common/global_state.gd b/common/global_state.gd index cb75f8a..270a8bd 100644 --- a/common/global_state.gd +++ b/common/global_state.gd @@ -11,3 +11,5 @@ var coins = 0 var health = 100 var player : KinematicBody2D = null + +const MENU_SCENE = "res://scenes/menu/menu.tscn" diff --git a/project.godot b/project.godot index a13d0b8..1bc2049 100644 --- a/project.godot +++ b/project.godot @@ -11,7 +11,7 @@ config_version=4 [application] config/name="Flopsy the Dog" -run/main_scene="res://scenes/main.tscn" +run/main_scene="res://scenes/menu/menu.tscn" config/icon="res://common/player_head.png" [autoload] diff --git a/scenes/levels/credits/credits.gd b/scenes/levels/credits/credits.gd index 020909d..712fe86 100644 --- a/scenes/levels/credits/credits.gd +++ b/scenes/levels/credits/credits.gd @@ -4,4 +4,8 @@ func _ready(): $CanvasLayer/CreditsScroller.play("scroll") func _on_CreditsScroller_finished(anim_name): - get_tree().quit() + get_tree().change_scene(GlobalState.MENU_SCENE) + +func _process(delta): + if Input.is_action_just_pressed("ui_cancel"): + get_tree().change_scene(GlobalState.MENU_SCENE) diff --git a/scenes/levels/credits/credits.tscn b/scenes/levels/credits/credits.tscn index 4da5bc2..19e9fe7 100644 --- a/scenes/levels/credits/credits.tscn +++ b/scenes/levels/credits/credits.tscn @@ -25,11 +25,12 @@ tracks/0/keys = { "times": PoolRealArray( 0, 60 ), "transitions": PoolRealArray( 1, 1 ), "update": 0, -"values": [ Vector2( 0, 1080 ), Vector2( 0, -2350 ) ] +"values": [ Vector2( 0, 1080 ), Vector2( 0, -2560 ) ] } [node name="Credits" type="Node2D"] script = ExtResource( 1 ) +bgm_path = "res://scenes/levels/02/assets/interlude.ogg" hud_visible = false clear_color = Color( 0, 0, 0, 1 ) @@ -38,7 +39,7 @@ clear_color = Color( 0, 0, 0, 1 ) [node name="RichTextLabel" type="RichTextLabel" parent="CanvasLayer"] margin_top = 1080.0 margin_right = 1925.0 -margin_bottom = 3430.0 +margin_bottom = 3640.0 custom_fonts/bold_font = SubResource( 1 ) custom_fonts/normal_font = SubResource( 2 ) bbcode_enabled = true @@ -56,6 +57,8 @@ Fusselkater [b]Testing[/b] xtristrix oile +Giggles +Snuggo [b]Assets[/b] @@ -97,6 +100,8 @@ Fusselkater Testing xtristrix oile +Giggles +Snuggo Assets diff --git a/scenes/menu/assets/cloud1.png b/scenes/menu/assets/cloud1.png new file mode 100644 index 0000000..2f038fa Binary files /dev/null and b/scenes/menu/assets/cloud1.png differ diff --git a/scenes/menu/assets/cloud1.png.import b/scenes/menu/assets/cloud1.png.import new file mode 100644 index 0000000..d8fbe83 --- /dev/null +++ b/scenes/menu/assets/cloud1.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cloud1.png-0fe2af1d9d1e77db1cb404e8bead9afd.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/menu/assets/cloud1.png" +dest_files=[ "res://.import/cloud1.png-0fe2af1d9d1e77db1cb404e8bead9afd.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=true +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/scenes/menu/assets/cloud2.png b/scenes/menu/assets/cloud2.png new file mode 100644 index 0000000..a78cf70 Binary files /dev/null and b/scenes/menu/assets/cloud2.png differ diff --git a/scenes/menu/assets/cloud2.png.import b/scenes/menu/assets/cloud2.png.import new file mode 100644 index 0000000..c5b8601 --- /dev/null +++ b/scenes/menu/assets/cloud2.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cloud2.png-da45286331c48a611e52e233c726851a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/menu/assets/cloud2.png" +dest_files=[ "res://.import/cloud2.png-da45286331c48a611e52e233c726851a.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=true +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/scenes/menu/assets/ui/button_normal.svg b/scenes/menu/assets/ui/button_normal.svg new file mode 100644 index 0000000..3f17c4b --- /dev/null +++ b/scenes/menu/assets/ui/button_normal.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + diff --git a/scenes/menu/assets/ui/button_normal.svg.import b/scenes/menu/assets/ui/button_normal.svg.import new file mode 100644 index 0000000..e71c34a --- /dev/null +++ b/scenes/menu/assets/ui/button_normal.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_normal.svg-6ff2901dbc984c729920dec4abff8045.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/menu/assets/ui/button_normal.svg" +dest_files=[ "res://.import/button_normal.svg-6ff2901dbc984c729920dec4abff8045.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=true +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/scenes/menu/assets/ui/button_pressed.svg b/scenes/menu/assets/ui/button_pressed.svg new file mode 100644 index 0000000..741c53a --- /dev/null +++ b/scenes/menu/assets/ui/button_pressed.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + diff --git a/scenes/menu/assets/ui/button_pressed.svg.import b/scenes/menu/assets/ui/button_pressed.svg.import new file mode 100644 index 0000000..da6e74a --- /dev/null +++ b/scenes/menu/assets/ui/button_pressed.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_pressed.svg-66a54f8ffc6687cb5f4358307dff97d7.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/menu/assets/ui/button_pressed.svg" +dest_files=[ "res://.import/button_pressed.svg-66a54f8ffc6687cb5f4358307dff97d7.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=true +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/scenes/menu/assets/ui/button_selected.svg b/scenes/menu/assets/ui/button_selected.svg new file mode 100644 index 0000000..4688ae6 --- /dev/null +++ b/scenes/menu/assets/ui/button_selected.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + diff --git a/scenes/menu/assets/ui/button_selected.svg.import b/scenes/menu/assets/ui/button_selected.svg.import new file mode 100644 index 0000000..f6d34c7 --- /dev/null +++ b/scenes/menu/assets/ui/button_selected.svg.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/button_selected.svg-0797fd18c0b166d2a9ca0fd029cc2bfb.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://scenes/menu/assets/ui/button_selected.svg" +dest_files=[ "res://.import/button_selected.svg-0797fd18c0b166d2a9ca0fd029cc2bfb.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=true +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/scenes/menu/button.gd b/scenes/menu/button.gd new file mode 100644 index 0000000..b380307 --- /dev/null +++ b/scenes/menu/button.gd @@ -0,0 +1,12 @@ +extends TextureButton + +export(String) var text = "" + +func _ready(): + $Label.text = text + +func _on_button_down(): + $Label.rect_position.y = 3 + +func _on_button_up(): + $Label.rect_position.y = -1 diff --git a/scenes/menu/button.tscn b/scenes/menu/button.tscn new file mode 100644 index 0000000..d304eac --- /dev/null +++ b/scenes/menu/button.tscn @@ -0,0 +1,34 @@ +[gd_scene load_steps=6 format=2] + +[ext_resource path="res://scenes/menu/assets/ui/button_pressed.svg" type="Texture" id=1] +[ext_resource path="res://scenes/menu/assets/ui/button_normal.svg" type="Texture" id=2] +[ext_resource path="res://common/fonts/ComicNeue-Regular.ttf" type="DynamicFontData" id=3] +[ext_resource path="res://scenes/menu/button.gd" type="Script" id=4] + +[sub_resource type="DynamicFont" id=1] +size = 18 +outline_size = 2 +outline_color = Color( 0.427451, 0.329412, 0.227451, 1 ) +font_data = ExtResource( 3 ) + +[node name="AdventureButton" type="TextureButton"] +margin_left = 910.0 +margin_top = 490.0 +margin_right = 1100.0 +margin_bottom = 539.0 +texture_normal = ExtResource( 2 ) +texture_pressed = ExtResource( 1 ) +script = ExtResource( 4 ) + +[node name="Label" type="Label" parent="."] +margin_top = -1.0 +margin_right = 190.0 +margin_bottom = 48.0 +custom_colors/font_color = Color( 0.717647, 0.568627, 0.415686, 1 ) +custom_fonts/font = SubResource( 1 ) +text = "Start Game" +align = 1 +valign = 1 + +[connection signal="button_down" from="." to="." method="_on_button_down"] +[connection signal="button_up" from="." to="." method="_on_button_up"] diff --git a/scenes/menu/menu.gd b/scenes/menu/menu.gd new file mode 100644 index 0000000..dbdfd6f --- /dev/null +++ b/scenes/menu/menu.gd @@ -0,0 +1,12 @@ +extends Control +export(String, FILE, "*.ogg") var bgm_path +export(String, FILE, "*.tscn") var next_level + +func _ready(): + VisualServer.set_default_clear_color("cfeffc") + +func _on_button_play_pressed(): + get_tree().change_scene(next_level) + +func _on_button_quit_pressed(): + get_tree().quit() diff --git a/scenes/menu/menu.tscn b/scenes/menu/menu.tscn new file mode 100644 index 0000000..0230eef --- /dev/null +++ b/scenes/menu/menu.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://scenes/menu/menu.gd" type="Script" id=1] +[ext_resource path="res://common/tiles/grasland.tres" type="TileSet" id=2] +[ext_resource path="res://scenes/menu/assets/cloud1.png" type="Texture" id=3] +[ext_resource path="res://scenes/menu/assets/cloud2.png" type="Texture" id=4] +[ext_resource path="res://scenes/menu/button.tscn" type="PackedScene" id=5] +[ext_resource path="res://objects/characters/flopsy/flopsy.tscn" type="PackedScene" id=6] + +[node name="Menu" type="Control"] +script = ExtResource( 1 ) +next_level = "res://scenes/main.tscn" + +[node name="Cloud1" type="TextureRect" parent="."] +margin_right = 1925.0 +margin_bottom = 770.0 +texture = ExtResource( 3 ) +expand = true +stretch_mode = 5 + +[node name="Cloud2" type="TextureRect" parent="."] +margin_top = 245.0 +margin_right = 1925.0 +margin_bottom = 1050.0 +texture = ExtResource( 4 ) +expand = true +stretch_mode = 5 + +[node name="TileMap" type="TileMap" parent="."] +tile_set = ExtResource( 2 ) +collision_layer = 4 +collision_mask = 0 +format = 1 +tile_data = PoolIntArray( 983037, 4, 0, 983038, 4, 0, 983039, 4, 0, 917504, 4, 0, 917505, 4, 0, 917506, 4, 0, 917507, 4, 0, 917508, 4, 0, 917509, 4, 0, 917510, 4, 0, 917511, 4, 0, 917512, 4, 0, 917513, 4, 0, 917514, 4, 0, 917515, 4, 0, 917516, 4, 0, 917517, 4, 0, 917518, 4, 0, 917519, 4, 0, 917520, 4, 0, 917521, 4, 0, 917522, 4, 0, 917523, 4, 0, 917524, 4, 0, 917525, 4, 0, 917526, 4, 0, 917527, 4, 0, 917528, 4, 0, 917529, 4, 0, 917530, 4, 0, 917531, 4, 0, 917532, 4, 0, 917533, 4, 0, 917534, 4, 0, 917535, 4, 0, 917536, 4, 0, 1048573, 5, 0, 1048574, 5, 0, 1048575, 5, 0, 983040, 5, 0, 983041, 5, 0, 983042, 5, 0, 983043, 5, 0, 983044, 5, 0, 983045, 5, 0, 983046, 5, 0, 983047, 5, 0, 983048, 5, 0, 983049, 5, 0, 983050, 5, 0, 983051, 5, 0, 983052, 5, 0, 983053, 5, 0, 983054, 5, 0, 983055, 5, 0, 983056, 5, 0, 983057, 5, 0, 983058, 5, 0, 983059, 5, 0, 983060, 5, 0, 983061, 5, 0, 983062, 5, 0, 983063, 5, 0, 983064, 5, 0, 983065, 5, 0, 983066, 5, 0, 983067, 5, 0, 983068, 5, 0, 983069, 5, 0, 983070, 5, 0, 983071, 5, 0, 983072, 5, 0, 1114109, 5, 0, 1114110, 5, 0, 1114111, 5, 0, 1048576, 5, 0, 1048577, 5, 0, 1048578, 5, 0, 1048579, 5, 0, 1048580, 5, 0, 1048581, 5, 0, 1048582, 5, 0, 1048583, 5, 0, 1048584, 5, 0, 1048585, 5, 0, 1048586, 5, 0, 1048587, 5, 0, 1048588, 5, 0, 1048589, 5, 0, 1048590, 5, 0, 1048591, 5, 0, 1048592, 5, 0, 1048593, 5, 0, 1048594, 5, 0, 1048595, 5, 0, 1048596, 5, 0, 1048597, 5, 0, 1048598, 5, 0, 1048599, 5, 0, 1048600, 5, 0, 1048601, 5, 0, 1048602, 5, 0, 1048603, 5, 0, 1048604, 5, 0, 1048605, 5, 0, 1048606, 5, 0, 1048607, 5, 0, 1048608, 5, 0, 1179645, 5, 0, 1179646, 5, 0, 1179647, 5, 0, 1114112, 5, 0, 1114113, 5, 0, 1114114, 5, 0, 1114115, 5, 0, 1114116, 5, 0, 1114117, 5, 0, 1114118, 5, 0, 1114119, 5, 0, 1114120, 5, 0, 1114121, 5, 0, 1114122, 5, 0, 1114123, 5, 0, 1114124, 5, 0, 1114125, 5, 0, 1114126, 5, 0, 1114127, 5, 0, 1114128, 5, 0, 1114129, 5, 0, 1114130, 5, 0, 1114131, 5, 0, 1114132, 5, 0, 1114133, 5, 0, 1114134, 5, 0, 1114135, 5, 0, 1114136, 5, 0, 1114137, 5, 0, 1114138, 5, 0, 1114139, 5, 0, 1114140, 5, 0, 1114141, 5, 0, 1114142, 5, 0, 1114143, 5, 0, 1114144, 5, 0 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = 865.0 +margin_top = 489.0 +margin_right = 1055.0 +margin_bottom = 591.0 + +[node name="button_play" parent="VBoxContainer" instance=ExtResource( 5 )] +margin_left = 0.0 +margin_top = 0.0 +margin_right = 190.0 +margin_bottom = 49.0 +text = "Start Game" + +[node name="button_quit" parent="VBoxContainer" instance=ExtResource( 5 )] +margin_left = 0.0 +margin_top = 53.0 +margin_right = 190.0 +margin_bottom = 102.0 +text = "Quit Game" + +[node name="Flopsy" parent="." instance=ExtResource( 6 )] +position = Vector2( 271, 671 ) + +[connection signal="pressed" from="VBoxContainer/button_play" to="." method="_on_button_play_pressed"] +[connection signal="pressed" from="VBoxContainer/button_quit" to="." method="_on_button_quit_pressed"]