Compare commits

...

7 commits

Author SHA1 Message Date
Fabio
4bce0a3ecf Merge branch 'Rycarus_Level_4' into dev 2024-08-20 16:04:47 +02:00
Fabio
fc8f6ec2fc Merge branch 'Rycarus_Level_4' of https://code.booklordofthe.dev/Booklordofthedings/GMTK-2024 into Rycarus_Level_4 2024-08-20 16:02:49 +02:00
Fabio
d3d63402b8 get change screen working 2024-08-20 16:02:39 +02:00
29c30a10de Fix layouting 2024-08-20 11:25:54 +02:00
Fabio
9d43b070af pause menu WIP 2024-08-20 04:52:54 +02:00
Fabio
033718351e changed menu navigation 2024-08-20 00:41:10 +02:00
Fabio
9b890c6bd2 add level completed screen 2024-08-19 22:02:43 +02:00
18 changed files with 665 additions and 103 deletions

Binary file not shown.

View file

@ -1,34 +0,0 @@
[remap]
importer="font_data_dynamic"
type="FontFile"
uid="uid://b1m5vkvhmf1x8"
path="res://.godot/imported/Winds 7.ttf-d65fb42952f9ffdf099366b21f03c274.fontdata"
[deps]
source_file="res://Winds 7.ttf"
dest_files=["res://.godot/imported/Winds 7.ttf-d65fb42952f9ffdf099366b21f03c274.fontdata"]
[params]
Rendering=null
antialiasing=1
generate_mipmaps=false
disable_embedded_bitmaps=true
multichannel_signed_distance_field=false
msdf_pixel_range=8
msdf_size=48
allow_system_fallback=true
force_autohinter=false
hinting=1
subpixel_positioning=1
oversampling=0.0
Fallbacks=null
fallbacks=[]
Compress=null
compress=true
preload=[]
language_support={}
script_support={}
opentype_features={}

View file

@ -1,9 +1,10 @@
[gd_scene load_steps=13 format=4 uid="uid://ba6afuig8bqrg"] [gd_scene load_steps=14 format=4 uid="uid://ba6afuig8bqrg"]
[ext_resource type="PackedScene" uid="uid://s683ua4q2ewm" path="res://menu/PauseMenu.tscn" id="1_dtdta"]
[ext_resource type="PackedScene" uid="uid://snxpqx0ony7s" path="res://objects/Player.tscn" id="1_prjlb"] [ext_resource type="PackedScene" uid="uid://snxpqx0ony7s" path="res://objects/Player.tscn" id="1_prjlb"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="2_mxtem"] [ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="2_mxtem"]
[ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_lcf1n"] [ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_lcf1n"]
[ext_resource type="Texture2D" uid="uid://bu3jvq8ho4rpf" path="res://textures/Level 01.png" id="4_p3e10"] [ext_resource type="Texture2D" uid="uid://bn7cejgxkah8o" path="res://textures/Level 01.png" id="4_p3e10"]
[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="5_wr4v5"] [ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="5_wr4v5"]
[sub_resource type="RectangleShape2D" id="RectangleShape2D_4uh45"] [sub_resource type="RectangleShape2D" id="RectangleShape2D_4uh45"]
@ -138,6 +139,7 @@ size = Vector2(1289, 70.5)
[node name="Player" parent="." instance=ExtResource("1_prjlb")] [node name="Player" parent="." instance=ExtResource("1_prjlb")]
[node name="CanvasLayer" parent="." instance=ExtResource("2_mxtem")] [node name="CanvasLayer" parent="." instance=ExtResource("2_mxtem")]
visible = false
[node name="Camera2D" type="Camera2D" parent="."] [node name="Camera2D" type="Camera2D" parent="."]
@ -183,3 +185,10 @@ collision_mask = 4
[node name="Ground" type="CollisionShape2D" parent="Ground"] [node name="Ground" type="CollisionShape2D" parent="Ground"]
position = Vector2(10, 375) position = Vector2(10, 375)
shape = SubResource("RectangleShape2D_1vofj") shape = SubResource("RectangleShape2D_1vofj")
[node name="PauseMenu" parent="." instance=ExtResource("1_dtdta")]
visible = false
offset_left = -320.0
offset_top = -160.0
offset_right = -320.0
offset_bottom = -160.0

View file

@ -1,13 +1,14 @@
[gd_scene load_steps=12 format=4 uid="uid://bgrwqfa7lr66a"] [gd_scene load_steps=13 format=4 uid="uid://bgrwqfa7lr66a"]
[ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_hxt4x"] [ext_resource type="PackedScene" uid="uid://ba6afuig8bqrg" path="res://levels/LevelBase.tscn" id="1_hxt4x"]
[ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_3aspe"] [ext_resource type="Texture2D" uid="uid://c3m4os8kteaix" path="res://textures/level01-spritesheet.png" id="2_3aspe"]
[ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_kfccg"] [ext_resource type="Shader" path="res://shaders/scrolling.gdshader" id="3_kfccg"]
[ext_resource type="Texture2D" uid="uid://bu3jvq8ho4rpf" path="res://textures/Level 01.png" id="4_eh1te"] [ext_resource type="Texture2D" uid="uid://bn7cejgxkah8o" path="res://textures/Level 01.png" id="4_eh1te"]
[ext_resource type="PackedScene" uid="uid://d0q0sfati8wk0" path="res://objects/ResizableBlock.tscn" id="5_g32pt"] [ext_resource type="PackedScene" uid="uid://d0q0sfati8wk0" path="res://objects/ResizableBlock.tscn" id="5_g32pt"]
[ext_resource type="PackedScene" uid="uid://c168bkledwyya" path="res://objects/Laser.tscn" id="6_kbfc1"] [ext_resource type="PackedScene" uid="uid://c168bkledwyya" path="res://objects/Laser.tscn" id="6_kbfc1"]
[ext_resource type="PackedScene" uid="uid://c6g2f7tm7iasr" path="res://objects/PressurePlate.tscn" id="7_5joy3"] [ext_resource type="PackedScene" uid="uid://c6g2f7tm7iasr" path="res://objects/PressurePlate.tscn" id="7_5joy3"]
[ext_resource type="PackedScene" uid="uid://d0gpnqknarkg7" path="res://objects/Goal.tscn" id="8_sbr7w"] [ext_resource type="PackedScene" uid="uid://d0gpnqknarkg7" path="res://objects/Goal.tscn" id="8_sbr7w"]
[ext_resource type="PackedScene" uid="uid://bvvxwhg4tihng" path="res://menu/level_menu/level_select.tscn" id="9_0dfbn"]
[sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_a4gjk"] [sub_resource type="TileSetAtlasSource" id="TileSetAtlasSource_a4gjk"]
texture = ExtResource("2_3aspe") texture = ExtResource("2_3aspe")
@ -126,22 +127,10 @@ shader_parameter/scroll_speed = 0.02
[node name="LevelBase" instance=ExtResource("1_hxt4x")] [node name="LevelBase" instance=ExtResource("1_hxt4x")]
[node name="Player" parent="." index="0"] [node name="Player" parent="." index="1"]
position = Vector2(-254, 99) position = Vector2(-254, 99)
input_pickable = true input_pickable = true
[node name="Walls" parent="." index="3"]
collision_mask = 22
[node name="Ceiling" parent="Walls" index="0"]
position = Vector2(57, -171)
[node name="LeftWall" parent="Walls" index="1"]
position = Vector2(-320, 26)
[node name="RightWall" parent="Walls" index="2"]
position = Vector2(338, 15)
[node name="Layer1" type="TileMapLayer" parent="." index="4"] [node name="Layer1" type="TileMapLayer" parent="." index="4"]
use_parent_material = true use_parent_material = true
tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAABAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wAAAAADAAIAAAD2/wEAAAADAAAAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAADAAIAAAAJAPv/AAAFAAAAAAAJAPz/AAAAAAEAAAAJAP3/AAAAAAEAAAAJAP7/AAAAAAEAAAAJAP//AAAAAAEAAAAJAAAAAAAAAAEAAAAJAAEAAAAFAAIAAAAJAAIAAAABAAEAAAAJAAMAAAABAAEAAAAJAAQAAAABAAEAAAD3//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//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAEAAQAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAQAAAABAAEAAAAIAAQAAAABAAEAAAD7/wMAAAAAAAAAAAD8/wMAAAABAAAAAAD9/wMAAAABAAAAAAD+/wMAAAABAAAAAAD//wIAAAAAAAEAAAD//wEAAAAAAAAAAAAAAAEAAAAEAAIAAAABAAEAAAACAAAAAAABAAIAAAACAAEAAAABAAMAAAADAAIAAAD//wMAAAAFAAIAAAAAAAIAAAABAAEAAAAAAAMAAAABAAEAAAD3/wAAAAABAAAAAAD4/wAAAAABAAAAAAD5/wAAAAABAAAAAAD6/wAAAAAGAAAAAAD7/wAAAAAIAAAAAVD3//3/AAAIAAEAAFD4//3/AAAIAAEAAFD5//3/AAAIAAEAAFD6//3/AAAIAAEAAFD7//3/AAAIAAEAAFD8//3/AAAIAAEAAFD9//3/AAAIAAEAAFD+//3/AAACAAAAAAAAAP//AAABAAIAAAD/////AAAAAAIAAAD///7/AAAHAAAAAAAAAP7/AAACAAAAAAABAP//AAAIAAAAAVD+//7/AAAAAAIAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAEAAAACAAMAAAABAAAAAAADAAMAAAABAAAAAAAEAAMAAAABAAAAAAAFAAMAAAAFAAIAAAAGAAMAAAABAAEAAAAHAAMAAAABAAEAAAAIAAMAAAABAAEAAAAGAAEAAAABAAAAAAAHAAEAAAABAAAAAAAIAAEAAAABAAAAAAD3/wEAAAABAAIAAAD4/wEAAAABAAIAAAD5/wEAAAABAAIAAAAGAAIAAAABAAEAAAAHAAIAAAABAAEAAAAIAAIAAAABAAEAAAD6/wEAAAACAAIAAAA=") tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAABAAEAAAD2//7/AAACAAEAAAD2////AAACAAEAAAD2/wAAAAADAAIAAAD2/wEAAAADAAAAAAD2/wIAAAACAAEAAAD2/wMAAAACAAEAAAD2/wQAAAADAAIAAAAJAPv/AAAFAAAAAAAJAPz/AAAAAAEAAAAJAP3/AAAAAAEAAAAJAP7/AAAAAAEAAAAJAP//AAAAAAEAAAAJAAAAAAAAAAEAAAAJAAEAAAAFAAIAAAAJAAIAAAABAAEAAAAJAAMAAAABAAEAAAAJAAQAAAABAAEAAAD3//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//wQAAAABAAEAAAAAAAQAAAABAAEAAAABAAQAAAABAAEAAAACAAQAAAABAAEAAAADAAQAAAABAAEAAAAEAAQAAAABAAEAAAAFAAQAAAABAAEAAAAGAAQAAAABAAEAAAAHAAQAAAABAAEAAAAIAAQAAAABAAEAAAD7/wMAAAAAAAAAAAD8/wMAAAABAAAAAAD9/wMAAAABAAAAAAD+/wMAAAABAAAAAAD//wIAAAAAAAEAAAD//wEAAAAAAAAAAAAAAAEAAAAEAAIAAAABAAEAAAACAAAAAAABAAIAAAACAAEAAAABAAMAAAADAAIAAAD//wMAAAAFAAIAAAAAAAIAAAABAAEAAAAAAAMAAAABAAEAAAD3/wAAAAABAAAAAAD4/wAAAAABAAAAAAD5/wAAAAABAAAAAAD6/wAAAAAGAAAAAAD7/wAAAAAIAAAAAVD3//3/AAAIAAEAAFD4//3/AAAIAAEAAFD5//3/AAAIAAEAAFD6//3/AAAIAAEAAFD7//3/AAAIAAEAAFD8//3/AAAIAAEAAFD9//3/AAAIAAEAAFD+//3/AAACAAAAAAAAAP//AAABAAIAAAD/////AAAAAAIAAAD///7/AAAHAAAAAAAAAP7/AAACAAAAAAABAP//AAAIAAAAAVD+//7/AAAAAAIAAAAFAAEAAAAAAAAAAAAFAAIAAAAAAAEAAAACAAMAAAABAAAAAAADAAMAAAABAAAAAAAEAAMAAAABAAAAAAAFAAMAAAAFAAIAAAAGAAMAAAABAAEAAAAHAAMAAAABAAEAAAAIAAMAAAABAAEAAAAGAAEAAAABAAAAAAAHAAEAAAABAAAAAAAIAAEAAAABAAAAAAD3/wEAAAABAAIAAAD4/wEAAAABAAIAAAD5/wEAAAABAAIAAAAGAAIAAAABAAEAAAAHAAIAAAABAAEAAAAIAAIAAAABAAEAAAD6/wEAAAACAAIAAAA=")
@ -185,6 +174,19 @@ rotation = 1.57987
[node name="Goal" parent="." index="12" instance=ExtResource("8_sbr7w")] [node name="Goal" parent="." index="12" instance=ExtResource("8_sbr7w")]
position = Vector2(-272, -112) position = Vector2(-272, -112)
next = ExtResource("9_0dfbn")
[node name="Layer0" parent="." index="14"] [node name="Walls" parent="." index="13"]
collision_mask = 22
[node name="Ceiling" parent="Walls" index="0"]
position = Vector2(57, -171)
[node name="LeftWall" parent="Walls" index="1"]
position = Vector2(-320, 26)
[node name="RightWall" parent="Walls" index="2"]
position = Vector2(338, 15)
[node name="Layer0" parent="." index="15"]
visible = false visible = false

View file

@ -7,11 +7,15 @@
[node name="LevelBase" instance=ExtResource("1_87xn7")] [node name="LevelBase" instance=ExtResource("1_87xn7")]
[node name="Player" parent="." index="0"] [node name="Player" parent="." index="1"]
position = Vector2(-254, 99) position = Vector2(-254, 99)
input_pickable = true input_pickable = true
[node name="Walls" parent="." index="3"] [node name="Goal" parent="." index="4" instance=ExtResource("9_xut5w")]
position = Vector2(-272, -112)
next = ExtResource("3_usr81")
[node name="Walls" parent="." index="5"]
collision_mask = 22 collision_mask = 22
[node name="Ceiling" parent="Walls" index="0"] [node name="Ceiling" parent="Walls" index="0"]
@ -23,11 +27,7 @@ position = Vector2(-320, 26)
[node name="RightWall" parent="Walls" index="2"] [node name="RightWall" parent="Walls" index="2"]
position = Vector2(338, 15) position = Vector2(338, 15)
[node name="Goal" parent="." index="4" instance=ExtResource("9_xut5w")] [node name="Layer0" parent="." index="7"]
position = Vector2(-272, -112)
next = ExtResource("3_usr81")
[node name="Layer0" parent="." index="6"]
tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAADAAIAAAD2//7/AAABAAEAAAD2////AAABAAEAAAD2/wAAAAABAAEAAAD2/wEAAAADAAAAAAD2/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/wQAAAABAAAAAAD8/wQAAAABAAAAAAD9/wQAAAABAAAAAAD+/wQAAAABAAAAAAD//wQAAAABAAAAAAAAAAQAAAABAAAAAAABAAQAAAABAAAAAAACAAQAAAABAAAAAAADAAQAAAABAAAAAAAEAAQAAAABAAAAAAAFAAQAAAABAAAAAAAGAAQAAAABAAAAAAAHAAQAAAABAAAAAAAIAAQAAAABAAAAAAABAAEAAAAAAAIAAAACAAEAAAACAAIAAAD3////AAABAAEAAAD4////AAACAAEAAAD4/wAAAAACAAEAAAD3/wAAAAABAAEAAAD3/wEAAAABAAIAAAD4/wEAAAACAAIAAAD3//7/AAABAAEAAAD4//7/AAACAAEAAAD3//3/AAABAAAAAAD4//3/AAACAAAAAAABAAAAAAAAAAAAAAACAAAAAAACAAAAAAA=") tile_map_data = PackedByteArray("AAD2//v/AAADAAAAAAD2//z/AAACAAEAAAD2//3/AAADAAIAAAD2//7/AAABAAEAAAD2////AAABAAEAAAD2/wAAAAABAAEAAAD2/wEAAAADAAAAAAD2/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/wQAAAABAAAAAAD8/wQAAAABAAAAAAD9/wQAAAABAAAAAAD+/wQAAAABAAAAAAD//wQAAAABAAAAAAAAAAQAAAABAAAAAAABAAQAAAABAAAAAAACAAQAAAABAAAAAAADAAQAAAABAAAAAAAEAAQAAAABAAAAAAAFAAQAAAABAAAAAAAGAAQAAAABAAAAAAAHAAQAAAABAAAAAAAIAAQAAAABAAAAAAABAAEAAAAAAAIAAAACAAEAAAACAAIAAAD3////AAABAAEAAAD4////AAACAAEAAAD4/wAAAAACAAEAAAD3/wAAAAABAAEAAAD3/wEAAAABAAIAAAD4/wEAAAACAAIAAAD3//7/AAABAAEAAAD4//7/AAACAAEAAAD3//3/AAABAAAAAAD4//3/AAACAAAAAAABAAAAAAAAAAAAAAACAAAAAAACAAAAAAA=")
[node name="AnimatableBody2D" parent="." index="8" instance=ExtResource("5_4ggcc")] [node name="AnimatableBody2D" parent="." index="8" instance=ExtResource("5_4ggcc")]

View file

@ -0,0 +1,87 @@
[gd_scene load_steps=5 format=3 uid="uid://s683ua4q2ewm"]
[ext_resource type="Theme" uid="uid://cohbys634cf18" path="res://menu/main_menu/MainMenuTheme.tres" id="1_fna2g"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="2_vaod1"]
[ext_resource type="Script" path="res://scripts/pause_menu_control.gd" id="3_tyr11"]
[ext_resource type="FontFile" uid="uid://d3pbvdemdbxes" path="res://CommodoreSixtyFour.ttf" id="4_u4plf"]
[node name="PauseMenu" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_fna2g")
[node name="CanvasLayer" parent="." instance=ExtResource("2_vaod1")]
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
color = Color(0, 0, 0, 1)
[node name="Control" type="Control" parent="."]
layout_mode = 2
script = ExtResource("3_tyr11")
[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="VBoxContainer2" type="VBoxContainer" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/VBoxContainer2"]
layout_mode = 2
[node name="Buttons" type="VBoxContainer" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="HBoxContainer" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/Buttons/HBoxContainer"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_u4plf")
text = ">"
[node name="continue" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer"]
layout_mode = 2
text = "continue"
flat = true
[node name="HBoxContainer2" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/Buttons/HBoxContainer2"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_u4plf")
text = ">"
[node name="restart" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer2"]
layout_mode = 2
text = "restart"
flat = true
[node name="HBoxContainer3" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/Buttons/HBoxContainer3"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_u4plf")
text = ">"
[node name="main menu" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer3"]
layout_mode = 2
text = "main menu"
flat = true
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer/continue" to="Control" method="_on_continue_button_pressed"]
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer2/restart" to="Control" method="_on_restart_button_pressed"]
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer3/main menu" to="Control" method="_on_back_to_main_menu_button_pressed"]

View file

@ -0,0 +1,49 @@
[gd_scene load_steps=5 format=3 uid="uid://cut2xjnvh8i58"]
[ext_resource type="Theme" uid="uid://cohbys634cf18" path="res://menu/main_menu/MainMenuTheme.tres" id="1_tmf11"]
[ext_resource type="Script" path="res://scripts/menu_credit_control.gd" id="2_ogwi7"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="3_rybt6"]
[ext_resource type="FontFile" uid="uid://d3pbvdemdbxes" path="res://CommodoreSixtyFour.ttf" id="4_pv7fe"]
[node name="CreditScene" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_tmf11")
[node name="CanvasLayer" parent="." instance=ExtResource("3_rybt6")]
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
color = Color(0, 0, 0, 1)
[node name="Control" type="Control" parent="."]
layout_mode = 2
script = ExtResource("2_ogwi7")
[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="BackToMenu" type="HBoxContainer" parent="Control/VBoxContainer"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/BackToMenu"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_pv7fe")
text = ">"
[node name="back" type="Button" parent="Control/VBoxContainer/BackToMenu"]
layout_mode = 2
text = "back to menu"
flat = true
[connection signal="pressed" from="Control/VBoxContainer/BackToMenu/back" to="Control" method="_return_to_main_menu"]

View file

@ -62,9 +62,9 @@ layout_mode = 2
theme_override_fonts/font = ExtResource("1_1tx2i") theme_override_fonts/font = ExtResource("1_1tx2i")
text = ">" text = ">"
[node name="credits" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer2"] [node name="level_select" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer2"]
layout_mode = 2 layout_mode = 2
text = "credits" text = "level selection"
flat = true flat = true
[node name="HBoxContainer3" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"] [node name="HBoxContainer3" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"]
@ -77,11 +77,27 @@ layout_mode = 2
theme_override_fonts/font = ExtResource("1_1tx2i") theme_override_fonts/font = ExtResource("1_1tx2i")
text = ">" text = ">"
[node name="quit" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer3"] [node name="credits" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer3"]
layout_mode = 2
text = "credits"
flat = true
[node name="HBoxContainer4" type="HBoxContainer" parent="Control/VBoxContainer/Buttons"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/Buttons/HBoxContainer4"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("1_1tx2i")
text = ">"
[node name="quit" type="Button" parent="Control/VBoxContainer/Buttons/HBoxContainer4"]
layout_mode = 2 layout_mode = 2
text = "quit" text = "quit"
flat = true flat = true
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer/start" to="Control" method="_on_start_button_pressed"] [connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer/start" to="Control" method="_on_start_button_pressed"]
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer2/credits" to="Control" method="_on_credits_button_pressed"] [connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer2/level_select" to="Control" method="_on_level_select_pressed"]
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer3/quit" to="Control" method="_on_quit_button_pressed"] [connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer3/credits" to="Control" method="_on_credits_button_pressed"]
[connection signal="pressed" from="Control/VBoxContainer/Buttons/HBoxContainer4/quit" to="Control" method="_on_quit_button_pressed"]

View file

@ -0,0 +1,49 @@
[gd_scene load_steps=5 format=3 uid="uid://n2culjgg5aji"]
[ext_resource type="Theme" uid="uid://cohbys634cf18" path="res://menu/main_menu/MainMenuTheme.tres" id="1_tm23e"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="2_d3r0j"]
[ext_resource type="Script" path="res://scripts/level_completed_control.gd" id="3_38v2l"]
[ext_resource type="FontFile" uid="uid://d3pbvdemdbxes" path="res://CommodoreSixtyFour.ttf" id="4_8fqei"]
[node name="LevelComplete" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_tm23e")
[node name="CanvasLayer" parent="." instance=ExtResource("2_d3r0j")]
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
color = Color(0, 0, 0, 1)
[node name="Control" type="Control" parent="."]
layout_mode = 2
script = ExtResource("3_38v2l")
[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="BackToMenu" type="HBoxContainer" parent="Control/VBoxContainer"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/BackToMenu"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_8fqei")
text = ">"
[node name="back" type="Button" parent="Control/VBoxContainer/BackToMenu"]
layout_mode = 2
text = "back to level menu"
flat = true
[connection signal="pressed" from="Control/VBoxContainer/BackToMenu/back" to="Control" method="_return_to_main_menu"]

View file

@ -0,0 +1,49 @@
[gd_scene load_steps=5 format=3 uid="uid://n2culjgg5aji"]
[ext_resource type="Theme" uid="uid://cohbys634cf18" path="res://menu/main_menu/MainMenuTheme.tres" id="1_tm23e"]
[ext_resource type="PackedScene" uid="uid://dii1q3f5dj72y" path="res://objects/CRT.tscn" id="2_d3r0j"]
[ext_resource type="Script" path="res://scripts/level_completed_control.gd" id="3_38v2l"]
[ext_resource type="FontFile" uid="uid://d3pbvdemdbxes" path="res://CommodoreSixtyFour.ttf" id="4_8fqei"]
[node name="LevelComplete" type="MarginContainer"]
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme = ExtResource("1_tm23e")
[node name="CanvasLayer" parent="." instance=ExtResource("2_d3r0j")]
[node name="ColorRect" type="ColorRect" parent="."]
layout_mode = 2
color = Color(0, 0, 0, 1)
[node name="Control" type="Control" parent="."]
layout_mode = 2
script = ExtResource("3_38v2l")
[node name="VBoxContainer" type="VBoxContainer" parent="Control"]
layout_mode = 0
offset_right = 40.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="Control/VBoxContainer"]
layout_mode = 2
[node name="BackToMenu" type="HBoxContainer" parent="Control/VBoxContainer"]
visible = false
layout_mode = 2
[node name="Label" type="Label" parent="Control/VBoxContainer/BackToMenu"]
custom_minimum_size = Vector2(8, 0)
layout_mode = 2
theme_override_fonts/font = ExtResource("4_8fqei")
text = ">"
[node name="back" type="Button" parent="Control/VBoxContainer/BackToMenu"]
layout_mode = 2
text = "back to level menu"
flat = true
[connection signal="pressed" from="Control/VBoxContainer/BackToMenu/back" to="Control" method="_return_to_main_menu"]

View file

@ -10,17 +10,18 @@ config_version=5
[application] [application]
config/name="GMTK_2024" config/name="Infiltration.exe"
run/main_scene="res://menu/main_menu/MainMenu.tscn" run/main_scene="res://menu/main_menu/MainMenu.tscn"
config/features=PackedStringArray("4.3", "GL Compatibility") config/features=PackedStringArray("4.3", "GL Compatibility")
config/icon="res://icon.svg" config/icon="res://temp_assets/icon.svg"
[display] [display]
window/size/viewport_width=640 window/size/viewport_width=1280
window/size/viewport_height=320 window/size/viewport_height=720
window/size/mode=2 window/size/mode=2
window/stretch/mode="viewport" window/stretch/mode="viewport"
window/stretch/scale=2.0
mouse_cursor/custom_image="res://textures/cursor_normal.png" mouse_cursor/custom_image="res://textures/cursor_normal.png"
[input] [input]
@ -37,7 +38,8 @@ player_left={
} }
player_jump={ player_jump={
"deadzone": 0.5, "deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
] ]
} }
click={ click={
@ -55,6 +57,27 @@ r={
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":82,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
] ]
} }
up={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
down={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
accept={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194309,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
pause={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[layer_names] [layer_names]

View file

@ -1,11 +1,17 @@
extends Node extends Node
@export var next : PackedScene @export var next : PackedScene
@export var completed = preload("res://objects/LevelComplete.tscn")
@onready var animation = $AnimationPlayer @onready var animation = $AnimationPlayer
@onready var level_select_scene = preload("res://menu/level_menu/level_select.tscn")
func _process(delta: float) -> void: func _process(delta: float) -> void:
animation.play("portal") animation.play("portal")
func _on_body_entered(body: Node2D) -> void: func _on_body_entered(body: Node2D) -> void:
get_tree().change_scene_to_packed(next) if next == level_select_scene:
get_tree().change_scene_to_packed(completed)
else:
get_tree().change_scene_to_packed(next)

View file

@ -0,0 +1,97 @@
extends Control
var credits_text = """
CONGRATULATIONS
THIS SECTOR IS NOW INFECTED
YOU NOW HAVE ACCESS TO THE NEXT SECTION
"""
var current_text = ""
var char_index = 0
var typing_speed = 0.05
var fast_typing_speed = 0.0001
var last_click_time = 0.0
var double_click_time = 0.3
var is_typing = true
var current_button_index = 0
var button
func _ready():
_initialize_menu()
_start_typing()
func _initialize_menu():
button = $VBoxContainer/BackToMenu
_update_button_visibility()
_blink_current_button()
func _update_button_visibility():
var hbox_container = button
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible
func _process(_delta: float) -> void:
if not is_typing:
if Input.is_action_pressed("ui_accept"):
typing_speed = fast_typing_speed
func _blink_current_button() -> void:
while true:
var hbox_container = button
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible = true
await get_tree().create_timer(0.5).timeout
if label_node != null:
label_node.visible = false
await get_tree().create_timer(0.5).timeout
func _unhandled_input(event: InputEvent) -> void:
if is_typing:
if event is InputEventKey and event.is_pressed():
if get_time_since_last_click() <= double_click_time:
_show_full_text()
else:
typing_speed = fast_typing_speed
elif event is InputEventKey and not event.is_pressed():
typing_speed = 0.05
else:
if event.is_action_pressed("ui_accept"):
button.get_child(1).emit_signal("pressed")
func _start_typing() -> void:
current_text = ""
char_index = 0
is_typing = true
_update_text()
func _update_text() -> void:
if char_index < credits_text.length():
current_text += credits_text[char_index]
$VBoxContainer/Label.text = current_text
char_index += 1
await get_tree().create_timer(typing_speed).timeout
_update_text()
else:
is_typing = false
_show_menu_options()
func _show_menu_options() -> void:
$VBoxContainer/BackToMenu.visible = true
func _return_to_main_menu() -> void:
get_tree().change_scene_to_file("res://menu/level_menu/level_select.tscn")
func _show_full_text() -> void:
current_text = credits_text
$VBoxContainer/Label.text = current_text
char_index = credits_text.length()
_show_menu_options()
func get_time_since_last_click() -> float:
var current_time = Time.get_ticks_msec() / 1000.0 # Zeit in Sekunden
var time_since_last_click = current_time - last_click_time
last_click_time = current_time
return time_since_last_click

View file

@ -1,6 +1,7 @@
extends Control extends Control
func _ready(): func _ready():
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
setup_level_box() setup_level_box()
connect_level_selected_to_level_box() connect_level_selected_to_level_box()

View file

@ -4,38 +4,69 @@ var credits_text = """
CREDITS: CREDITS:
----------- -----------
Programming: Jannis, Fabio Programming: Jannis, Fabio
Design: Leon Pixel Art : Leon
Music: TBN Music: TBN
""" """
var current_text = "" var current_text = ""
var char_index = 0 var char_index = 0
var typing_speed = 0.05 # Normale Tippgeschwindigkeit var typing_speed = 0.05
var fast_typing_speed = 0.01 # Schnellere Tippgeschwindigkeit var fast_typing_speed = 0.0001
var is_fast_typing = false # Statusvariable für schnelleres Tippen
# Zum Überprüfen eines Doppelklicks
var last_click_time = 0.0 var last_click_time = 0.0
var double_click_time = 0.3 # Zeitfenster für Doppelklick in Sekunden var double_click_time = 0.3
var is_typing = true
var current_button_index = 0
var button
func _ready(): func _ready():
_initialize_menu()
_start_typing() _start_typing()
func _process(_delta: float) -> void: func _initialize_menu():
# Überprüfe, ob eine Taste oder Maustaste gedrückt gehalten wird button = $VBoxContainer/BackToMenu
if Input.is_action_pressed("ui_accept") or Input.is_action_pressed("ui_accept"): _update_button_visibility()
if get_time_since_last_click() <= double_click_time: _blink_current_button()
_show_full_text()
else:
is_fast_typing = true
else:
is_fast_typing = false
typing_speed = fast_typing_speed if is_fast_typing else 0.05 func _update_button_visibility():
var hbox_container = button
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible
func _process(_delta: float) -> void:
if not is_typing:
if Input.is_action_pressed("ui_accept"):
typing_speed = fast_typing_speed
func _blink_current_button() -> void:
while true:
var hbox_container = button
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible = true
await get_tree().create_timer(0.5).timeout
if label_node != null:
label_node.visible = false
await get_tree().create_timer(0.5).timeout
func _unhandled_input(event: InputEvent) -> void:
if is_typing:
if event is InputEventKey and event.is_pressed():
if get_time_since_last_click() <= double_click_time:
_show_full_text()
else:
typing_speed = fast_typing_speed
elif event is InputEventKey and not event.is_pressed():
typing_speed = 0.05
else:
if event.is_action_pressed("ui_accept"):
button.get_child(1).emit_signal("pressed")
func _start_typing() -> void: func _start_typing() -> void:
current_text = "" current_text = ""
char_index = 0 char_index = 0
is_typing = true
_update_text() _update_text()
func _update_text() -> void: func _update_text() -> void:
@ -46,6 +77,7 @@ func _update_text() -> void:
await get_tree().create_timer(typing_speed).timeout await get_tree().create_timer(typing_speed).timeout
_update_text() _update_text()
else: else:
is_typing = false
_show_menu_options() _show_menu_options()
func _show_menu_options() -> void: func _show_menu_options() -> void:
@ -58,6 +90,7 @@ func _show_full_text() -> void:
current_text = credits_text current_text = credits_text
$VBoxContainer/Label.text = current_text $VBoxContainer/Label.text = current_text
char_index = credits_text.length() char_index = credits_text.length()
is_typing = false
_show_menu_options() _show_menu_options()
func get_time_since_last_click() -> float: func get_time_since_last_click() -> float:

View file

@ -1,16 +1,16 @@
extends Control extends Control
var display_text = """ var display_text = """
SYSTEM INITIALIZATION... STARTING Infiltrate.exe ...
---------------------------------------
PLACEHOLDER GAME NAME BOOT SEQUENCE
COPYRIGHT PLACEHOLDER
MADE FOR GMTK GAME JAM 2024 MADE FOR GMTK GAME JAM 2024
---------------------------------------
>> WARNING: >> SECURITY PROTOCOLS: ACTIVE
>> RECOMMENDED ACTION: >> SCANNING FOR THREATS...
>> WARNING: UNAUTHORIZED ACCESS DETECTED
>> INITIALIZING COUNTERMEASURES...
SYSTEM READY.
PRESS START TO GET ACCESS. PRESS START TO GET ACCESS.
""" """
@ -21,28 +21,71 @@ var typing_speed = 0.05
var fast_typing_speed = 0.0001 var fast_typing_speed = 0.0001
var last_click_time = 0.0 var last_click_time = 0.0
var double_click_time = 0.3 var double_click_time = 0.3
var is_typing = true
var current_button_index = 0
var buttons = []
func _ready(): func _ready():
for hbox in $VBoxContainer/Buttons.get_children(): for hbox in $VBoxContainer/Buttons.get_children():
hbox.visible = false hbox.visible = false
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
_initialize_menu()
_start_typing() _start_typing()
func _initialize_menu():
buttons = $VBoxContainer/Buttons.get_children()
_update_button_visibility()
_blink_current_button()
func _update_button_visibility():
for i in range(len(buttons)):
var hbox_container = buttons[i]
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible = (i == current_button_index)
func _blink_current_button() -> void:
while true:
var hbox_container = buttons[current_button_index]
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible = true
await get_tree().create_timer(0.5).timeout
if label_node != null:
label_node.visible = false
await get_tree().create_timer(0.5).timeout
func _unhandled_input(event: InputEvent) -> void: func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("ui_accept") or event is InputEventMouseButton: if is_typing:
if get_time_since_last_click() <= double_click_time: if event is InputEventKey and event.is_pressed():
_show_full_text() if get_time_since_last_click() <= double_click_time:
else: _show_full_text()
typing_speed = fast_typing_speed else:
typing_speed = fast_typing_speed
elif event is InputEventKey and not event.is_pressed():
typing_speed = 0.05
else: else:
typing_speed = 0.05 if event.is_action_pressed("ui_down") or event.is_action_pressed("down"):
current_button_index = (current_button_index + 1) % buttons.size()
_update_button_visibility()
elif event.is_action_pressed("ui_up") or event.is_action_pressed("up"):
current_button_index = (current_button_index - 1 + buttons.size()) % buttons.size()
_update_button_visibility()
elif event.is_action_pressed("ui_accept"):
buttons[current_button_index].get_child(1).emit_signal("pressed")
func _process(_delta: float) -> void: func _process(_delta: float) -> void:
pass # typing_speed = 0.05 # Zurück zur normalen Geschwindigkeit if not is_typing:
if Input.is_action_pressed("ui_accept"):
typing_speed = fast_typing_speed
func _start_typing() -> void: func _start_typing() -> void:
current_text = "" current_text = ""
char_index = 0 char_index = 0
is_typing = true
_update_text() _update_text()
func _update_text() -> void: func _update_text() -> void:
@ -53,6 +96,7 @@ func _update_text() -> void:
await get_tree().create_timer(typing_speed).timeout await get_tree().create_timer(typing_speed).timeout
_update_text() _update_text()
else: else:
is_typing = false
_show_menu_options() _show_menu_options()
func _show_menu_options() -> void: func _show_menu_options() -> void:
@ -63,6 +107,7 @@ func _show_full_text() -> void:
current_text = display_text current_text = display_text
$VBoxContainer/VBoxContainer2/Label.text = current_text $VBoxContainer/VBoxContainer2/Label.text = current_text
char_index = display_text.length() char_index = display_text.length()
is_typing = false
_show_menu_options() _show_menu_options()
func get_time_since_last_click() -> float: func get_time_since_last_click() -> float:
@ -72,12 +117,15 @@ func get_time_since_last_click() -> float:
return time_since_last_click return time_since_last_click
func _on_start_button_pressed() -> void: func _on_start_button_pressed() -> void:
get_tree().change_scene_to_file("res://levels/level_1.tscn")
func _on_level_select_pressed():
get_tree().change_scene_to_file("res://menu/level_menu/level_select.tscn") get_tree().change_scene_to_file("res://menu/level_menu/level_select.tscn")
func _on_credits_button_pressed() -> void: func _on_credits_button_pressed() -> void:
get_tree().change_scene_to_file("res://menu/main_menu/CreditsScene.tscn") get_tree().change_scene_to_file("res://menu/main_menu/CreditsScene.tscn")
func _on_quit_button_pressed() -> void: func _on_quit_button_pressed() -> void:
$VBoxContainer/VBoxContainer2/Label.text += "\nLogging out!" $VBoxContainer/VBoxContainer2/Label.text += "Logging out!"
await get_tree().create_timer(0.5).timeout await get_tree().create_timer(0.5).timeout
get_tree().quit() get_tree().quit()

View file

@ -0,0 +1,127 @@
extends Control
var display_text = """
PAUSING OPERATION ...
---------------------------------------
"""
signal continue_game
signal restart_game
signal back_to_main_menu
var current_text = ""
var char_index = 0
var typing_speed = 0.05
var fast_typing_speed = 0.0001
var last_click_time = 0.0
var double_click_time = 0.3
var is_typing = true
var current_button_index = 0
var buttons = []
var current_scene = null
var pause_menu_node = null
func _ready():
current_scene = get_tree().current_scene
pause_menu_node = get_parent()
for hbox in $VBoxContainer/Buttons.get_children():
hbox.visible = false
Input.set_mouse_mode(Input.MOUSE_MODE_HIDDEN)
_initialize_menu()
_start_typing()
func _initialize_menu():
buttons = $VBoxContainer/Buttons.get_children()
_update_button_visibility()
func _update_button_visibility():
for i in range(len(buttons)):
var hbox_container = buttons[i]
var label_node = hbox_container.get_child(0)
if label_node != null:
label_node.visible = (i == current_button_index)
func _unhandled_input(event: InputEvent) -> void:
if is_typing:
if event is InputEventKey and event.is_pressed():
if get_time_since_last_click() <= double_click_time:
_show_full_text()
else:
typing_speed = fast_typing_speed
elif event is InputEventKey and not event.is_pressed():
typing_speed = 0.05
#else:
#if event.is_action_pressed("pause"):
#toggle_pause_menu()
if event.is_action_pressed("ui_down"):
navigate_menu(1)
elif event.is_action_pressed("ui_up"):
navigate_menu(-1)
if event.is_action_pressed("ui_accept"):
buttons[current_button_index].get_child(1).emit_signal("pressed")
func _process(_delta: float) -> void:
if not is_typing and Input.is_action_pressed("ui_accept"):
typing_speed = fast_typing_speed
func _start_typing() -> void:
current_text = ""
char_index = 0
is_typing = true
_update_text()
func _update_text() -> void:
if char_index < display_text.length():
current_text += display_text[char_index]
$VBoxContainer/VBoxContainer2/Label.text = current_text
char_index += 1
await get_tree().create_timer(typing_speed).timeout
_update_text()
else:
is_typing = false
_show_menu_options()
func _show_menu_options() -> void:
for hbox in $VBoxContainer/Buttons.get_children():
hbox.visible = true
grab_focus()
func _show_full_text() -> void:
current_text = display_text
$VBoxContainer/VBoxContainer2/Label.text = current_text
char_index = display_text.length()
is_typing = false
_show_menu_options()
func get_time_since_last_click() -> float:
var current_time = Time.get_ticks_msec() / 1000.0
var time_since_last_click = current_time - last_click_time
last_click_time = current_time
return time_since_last_click
func toggle_pause_menu():
if pause_menu_node.visible:
_on_continue_button_pressed()
else:
pause_menu_node.visible = true
get_tree().paused = true
grab_focus()
func _on_continue_button_pressed():
pause_menu_node.visible = false
get_tree().paused = false
func _on_restart_button_pressed():
emit_signal("restart_game")
func _on_back_to_main_menu_button_pressed():
emit_signal("back_to_main_menu")
func navigate_menu(direction: int) -> void:
current_button_index = (current_button_index + direction + buttons.size()) % buttons.size()
_update_button_visibility()

View file

@ -27,7 +27,7 @@ var cursor_scale_down = preload("res://textures/cursor_scale_down.png")
func _ready(): func _ready():
data_link = $data_link data_link = $data_link
func _unhandled_input(event): func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("click"): if event.is_action_pressed("click"):
var nearest_block = find_nearest_block() var nearest_block = find_nearest_block()
if nearest_block: if nearest_block: