From 1b83af938fe59bad9bb2fa9a912993cbe477124d Mon Sep 17 00:00:00 2001 From: minimata Date: Sat, 28 Jun 2025 12:38:45 +0200 Subject: [PATCH] feat: intro text --- .../menus/main_menu/config_name_label.gd | 2 +- scenes/interactibles/interactible.tscn | 1 + scenes/main.tscn | 4 +- scenes/text_wrappers/intro.gd | 63 +++++++++ scenes/text_wrappers/intro.gd.uid | 1 + scenes/text_wrappers/intro.tscn | 132 ++++++++++++++++++ .../main_menu/main_menu_with_animations.tscn | 18 ++- 7 files changed, 215 insertions(+), 6 deletions(-) create mode 100644 scenes/text_wrappers/intro.gd create mode 100644 scenes/text_wrappers/intro.gd.uid create mode 100644 scenes/text_wrappers/intro.tscn diff --git a/addons/maaacks_menus_template/base/scenes/menus/main_menu/config_name_label.gd b/addons/maaacks_menus_template/base/scenes/menus/main_menu/config_name_label.gd index 11d7420..ee09a87 100644 --- a/addons/maaacks_menus_template/base/scenes/menus/main_menu/config_name_label.gd +++ b/addons/maaacks_menus_template/base/scenes/menus/main_menu/config_name_label.gd @@ -12,7 +12,7 @@ func update_name_label(): var config_name : String = ProjectSettings.get_setting("application/config/name", NO_NAME_STRING) if config_name.is_empty(): config_name = NO_NAME_STRING - text = config_name + text = config_name.to_upper() func _ready(): update_name_label() diff --git a/scenes/interactibles/interactible.tscn b/scenes/interactibles/interactible.tscn index 39dcfcc..7db3fc0 100644 --- a/scenes/interactibles/interactible.tscn +++ b/scenes/interactibles/interactible.tscn @@ -25,6 +25,7 @@ theme_override_fonts/normal_font = ExtResource("2_u3pc4") text = "INTERACT" [node name="CenterContainer" type="CenterContainer" parent="."] +visible = false anchors_preset = 15 anchor_right = 1.0 anchor_bottom = 1.0 diff --git a/scenes/main.tscn b/scenes/main.tscn index 72b5357..9486e05 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -733,7 +733,7 @@ tile_map_data = PackedByteArray("AAAIAAAAAAAIAAUAAAAIAAEAAAARAAQAAAAIAAIAAAARAAU tile_set = SubResource("TileSet_tefeu") [node name="Deco" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAaAAQAAAAOAAgAAAAUAAQAAAAOAAgAAAAUAAoAAAAOAAgAAAAaAAoAAAAOAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAgAAoAAAAOAAgAAAAgAAQAAAAOAAgAAAA=") +tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAATAAsAAAAOAAgAAAAaAAsAAAAOAAgAAAAhAAsAAAAOAAgAAAAhAAMAAAAOAAgAAAAaAAMAAAAOAAgAAAATAAMAAAAOAAgAAAA=") tile_set = SubResource("TileSet_tefeu") [node name="WrongDoor" parent="." instance=ExtResource("5_tefeu")] @@ -761,7 +761,7 @@ position = Vector2(320, 202) walk_speed = 100.0 [node name="DecoOverlay" type="TileMapLayer" parent="."] -tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAaAAQAAAAOAAgAAAAUAAQAAAAOAAgAAAAUAAoAAAAOAAgAAAAaAAoAAAAOAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAgAAoAAAAOAAgAAAAgAAQAAAAOAAgAAAATAAUAAAAQAAgAAAATAAYAAAAQAAkAAAATAAcAAAAQAAgAAAATAAgAAAAQAAkAAAAaAAUAAAAQAAgAAAAaAAYAAAAQAAkAAAAaAAcAAAAQAAgAAAAaAAgAAAAQAAkAAAAgAAUAAAAQAAgAAAAgAAYAAAAQAAkAAAAgAAcAAAAQAAgAAAAgAAgAAAAQAAkAAAA=") +tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAaAAYAAAAQAAgAAAATAAYAAAAQAAgAAAATAAcAAAAQAAkAAAAaAAcAAAAQAAkAAAAhAAYAAAAQAAgAAAAhAAcAAAAQAAkAAAA=") tile_set = SubResource("TileSet_tefeu") [connection signal="event_triggered" from="WrongDoor" to="." method="_on_door_event_triggered"] diff --git a/scenes/text_wrappers/intro.gd b/scenes/text_wrappers/intro.gd new file mode 100644 index 0000000..f8f98e2 --- /dev/null +++ b/scenes/text_wrappers/intro.gd @@ -0,0 +1,63 @@ +extends Control + +@export_file("*.tscn") var scene_to_trigger: String + +@onready var further_connexion: Timer = $FurtherConnexion +@onready var text_start: Timer = $TextStart +@onready var time_between_words: Timer = $TimeBetweenWords +@onready var time_before_show_buttons: Timer = $TimeBeforeShowButtons + +@onready var message: Label = %Message +@onready var accept_button_1: Button = %AcceptButton1 +@onready var accept_button_2: Button = %AcceptButton2 + +var growing_text: String = "" +var text_split: PackedStringArray +var text_fine_split: PackedStringArray +var text_fully_on_screen = false +var text_showing = false + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + text_split = message.text.split("---") + text_fine_split = text_split[2].split(" ") + print(len(text_fine_split)) + message.text = "" + + accept_button_1.visible = false + accept_button_2.visible = false + +func start_mission() -> void: + SceneLoader.load_scene(scene_to_trigger) + +func _on_start_connexion_timeout() -> void: + message.text = text_split[0] + further_connexion.start() + + +func _on_further_connexion_timeout() -> void: + message.text = text_split[1] + text_start.start() + +func _on_text_start_timeout() -> void: + message.text = "" + time_between_words.start() + + +func _on_time_between_words_timeout() -> void: + if text_fine_split.is_empty(): + time_before_show_buttons.start() + return + + var current_text = message.text + current_text += text_fine_split[0] + current_text += " " + message.text = current_text + + text_fine_split.remove_at(0) + time_between_words.start() + + +func _on_time_before_show_buttons_timeout() -> void: + accept_button_1.visible = true + accept_button_2.visible = true diff --git a/scenes/text_wrappers/intro.gd.uid b/scenes/text_wrappers/intro.gd.uid new file mode 100644 index 0000000..c016013 --- /dev/null +++ b/scenes/text_wrappers/intro.gd.uid @@ -0,0 +1 @@ +uid://bwr3tliac4mo2 diff --git a/scenes/text_wrappers/intro.tscn b/scenes/text_wrappers/intro.tscn new file mode 100644 index 0000000..511e8d5 --- /dev/null +++ b/scenes/text_wrappers/intro.tscn @@ -0,0 +1,132 @@ +[gd_scene load_steps=5 format=3 uid="uid://djmvj0uqw26dg"] + +[ext_resource type="PackedScene" uid="uid://bhhphcagggc1" path="res://template/scenes/credits/scrolling_credits.tscn" id="1_ftj6e"] +[ext_resource type="Script" uid="uid://bwr3tliac4mo2" path="res://scenes/text_wrappers/intro.gd" id="2_sbctf"] +[ext_resource type="PackedScene" uid="uid://bkcsjsk2ciff" path="res://addons/maaacks_menus_template/base/scenes/music_players/background_music_player.tscn" id="3_pbsew"] +[ext_resource type="Script" uid="uid://1nf36h0gms3q" path="res://addons/maaacks_menus_template/base/scripts/capture_focus.gd" id="4_23spi"] + +[node name="Intro" instance=ExtResource("1_ftj6e")] +script = ExtResource("2_sbctf") +scene_to_trigger = "uid://s1cx1gvt4bed" + +[node name="BackgroundMusicPlayer" parent="." index="0" instance=ExtResource("3_pbsew")] +bus = &"Master" + +[node name="BackgroundColor" type="ColorRect" parent="." index="1"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +color = Color(0, 0, 0, 1) + +[node name="BackgroundTextureRect" type="TextureRect" parent="." index="2"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 +expand_mode = 1 +stretch_mode = 5 + +[node name="ScrollContainer" parent="." index="3"] +visible = false +scroll_vertical = 0 + +[node name="CenterContainer" type="CenterContainer" parent="." index="4"] +layout_mode = 0 +anchor_right = 1.0 +anchor_bottom = 1.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +mouse_filter = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="CenterContainer" index="0"] +custom_minimum_size = Vector2(600, 0) +layout_mode = 2 + +[node name="Message" type="Label" parent="CenterContainer/VBoxContainer" index="0"] +unique_name_in_owner = true +custom_minimum_size = Vector2(360, 0) +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "__CALL IN PROGRESS__ +--- +__HANDSHAKE OVER__ +__FINGERPRINT: NO-MECANIC__ +/!\\ CONNEXION SECURE /!\\ +--- +VOTRE NOM DE CODE POUR CETTE MISSION: DINO SÉRIEUX. +VOTRE BUT: REJOINDRE L’AGENTE DINO LOGHORÉE QUI EST SOUS COUVERTURE DANS LA MÉGACORPORATION ONID. DEPUIS DES MOIS, ELLE CULTIVE UN RAPPORT AVEC LA CIBLE, LA CEO DE ONID, AFIN DE POUVOIR LA DISTRAIRE AUJOURD'HUI. + +SUIVEZ SES INSTRUCTIONS DANS L'OREILLETTE, ET VOLEZ LES DONNÉES SAUVEGARDÉES SUR LA CIBLE. AVEC CES DONNÉES, NOUS EXPOSERONS LES MALVERSATIONS DE LA MÉGACORPORATION ONID. + +ATTENTION, DINO SÉRIEUX: COMME ELLE EST SOUS COUVERTURE, DINO LOGHORÉE VOUS INDIQUERA LES PROCHAINES ÉTAPES EN CODE. VEILLEZ À BIEN ÉCOUTER LES MOTS QU'ELLE VOUS DIT, ET DIRIGEZ-VOUS VERS LES ÉLÉMENTS QUE VOUS ENTENDEZ. + +RAPPELEZ-VOUS : UNE INCOMPRÉHENSION PEUT COMPROMETTRE VOTRE COUVERTURE ET FAIRE ÉCHOUER LA MISSION. +" +vertical_alignment = 1 +autowrap_mode = 3 + +[node name="CenterContainer" type="CenterContainer" parent="CenterContainer/VBoxContainer" index="1"] +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="HBoxContainer" type="HBoxContainer" parent="CenterContainer/VBoxContainer/CenterContainer" index="0"] +custom_minimum_size = Vector2(256, 0) +layout_mode = 2 +size_flags_vertical = 3 +theme_override_constants/separation = 16 +script = ExtResource("4_23spi") + +[node name="AcceptButton1" type="Button" parent="CenterContainer/VBoxContainer/CenterContainer/HBoxContainer" index="0"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "ACCEPTER" + +[node name="AcceptButton2" type="Button" parent="CenterContainer/VBoxContainer/CenterContainer/HBoxContainer" index="1"] +unique_name_in_owner = true +layout_mode = 2 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "ACCEPTER AUSSI" + +[node name="EndMessagePanel" type="Panel" parent="CenterContainer" index="1"] +unique_name_in_owner = true +visible = false +custom_minimum_size = Vector2(360, 120) +layout_mode = 2 + +[node name="StartConnexion" type="Timer" parent="." index="5"] +wait_time = 5.0 +one_shot = true +autostart = true + +[node name="FurtherConnexion" type="Timer" parent="." index="6"] +wait_time = 8.0 +one_shot = true + +[node name="TextStart" type="Timer" parent="." index="7"] +wait_time = 7.0 +one_shot = true + +[node name="TimeBetweenWords" type="Timer" parent="." index="8"] +wait_time = 0.41 + +[node name="TimeBeforeShowButtons" type="Timer" parent="." index="9"] +wait_time = 2.0 +one_shot = true + +[connection signal="pressed" from="CenterContainer/VBoxContainer/CenterContainer/HBoxContainer/AcceptButton1" to="." method="start_mission"] +[connection signal="pressed" from="CenterContainer/VBoxContainer/CenterContainer/HBoxContainer/AcceptButton2" to="." method="start_mission"] +[connection signal="timeout" from="StartConnexion" to="." method="_on_start_connexion_timeout"] +[connection signal="timeout" from="FurtherConnexion" to="." method="_on_further_connexion_timeout"] +[connection signal="timeout" from="TextStart" to="." method="_on_text_start_timeout"] +[connection signal="timeout" from="TimeBetweenWords" to="." method="_on_time_between_words_timeout"] +[connection signal="timeout" from="TimeBeforeShowButtons" to="." method="_on_time_before_show_buttons_timeout"] diff --git a/template/scenes/menus/main_menu/main_menu_with_animations.tscn b/template/scenes/menus/main_menu/main_menu_with_animations.tscn index ad7cc7c..74e05f1 100644 --- a/template/scenes/menus/main_menu/main_menu_with_animations.tscn +++ b/template/scenes/menus/main_menu/main_menu_with_animations.tscn @@ -351,7 +351,7 @@ graph_offset = Vector2(-180.277, 49) [node name="MainMenu" instance=ExtResource("1_iaw2i")] script = ExtResource("2_mcwxw") -game_scene_path = "uid://s1cx1gvt4bed" +game_scene_path = "uid://djmvj0uqw26dg" options_packed_scene = ExtResource("3_p7afn") credits_packed_scene = ExtResource("4_tsej0") @@ -375,13 +375,13 @@ modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0) [node name="TitleLabel" parent="MenuContainer/TitleMargin/TitleContainer" index="0"] -text = "Between the lines" +text = "BETWEEN THE LINES" [node name="SubTitleContainer" parent="MenuContainer/SubTitleMargin" index="0"] modulate = Color(1, 1, 1, 0) [node name="SubTitleLabel" parent="MenuContainer/SubTitleMargin/SubTitleContainer" index="0"] -text = "You better read" +text = "YOU BETTER READ" [node name="MenuButtonsContainer" parent="MenuContainer/MenuButtonsMargin" index="0"] modulate = Color(1, 1, 1, 0) @@ -389,10 +389,22 @@ modulate = Color(1, 1, 1, 0) [node name="MenuButtonsBoxContainer" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer" index="0"] lock = true +[node name="NewGameButton" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="0"] +text = "NEW GAME" + [node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1"] unique_name_in_owner = true visible = false layout_mode = 2 text = "Continue" +[node name="OptionsButton" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="2"] +visible = false + +[node name="CreditsButton" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="3"] +text = "CREDITS" + +[node name="ExitButton" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="4"] +text = "EXIT" + [connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ContinueGameButton" to="." method="_on_continue_game_button_pressed"]