2 Commits

Author SHA1 Message Date
e6da2f34e6 feat: can name interactible objects
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m15s
2025-06-28 12:46:58 +02:00
1b83af938f feat: intro text
All checks were successful
Create tag and build when new code gets to main / BumpTag (push) Successful in 7s
Create tag and build when new code gets to main / Export (push) Successful in 2m14s
2025-06-28 12:38:45 +02:00
8 changed files with 221 additions and 6 deletions

View File

@ -12,7 +12,7 @@ func update_name_label():
var config_name : String = ProjectSettings.get_setting("application/config/name", NO_NAME_STRING) var config_name : String = ProjectSettings.get_setting("application/config/name", NO_NAME_STRING)
if config_name.is_empty(): if config_name.is_empty():
config_name = NO_NAME_STRING config_name = NO_NAME_STRING
text = config_name text = config_name.to_upper()
func _ready(): func _ready():
update_name_label() update_name_label()

View File

@ -3,6 +3,7 @@ class_name Interactible
# @export_file("*.tscn") var scene_to_trigger: String # @export_file("*.tscn") var scene_to_trigger: String
@export var message: String @export var message: String
@export var interact_text: String
@export var event: String @export var event: String
signal event_triggered(event_id: String) signal event_triggered(event_id: String)
@ -10,6 +11,7 @@ signal event_triggered(event_id: String)
@onready var rich_text_label: RichTextLabel = $RichTextLabel @onready var rich_text_label: RichTextLabel = $RichTextLabel
@onready var confirm_panel: Panel = %ConfirmPanel @onready var confirm_panel: Panel = %ConfirmPanel
@onready var message_box: Label = %MessageBox @onready var message_box: Label = %MessageBox
@onready var interact_box: RichTextLabel = $RichTextLabel
# Called when the node enters the scene tree for the first time. # Called when the node enters the scene tree for the first time.
func _ready() -> void: func _ready() -> void:
@ -17,6 +19,9 @@ func _ready() -> void:
confirm_panel.visible = false confirm_panel.visible = false
message_box.text = message.to_upper() message_box.text = message.to_upper()
if not interact_text.is_empty():
interact_box.text = interact_text.to_upper()
func _on_body_entered(body: Node2D) -> void: func _on_body_entered(body: Node2D) -> void:
rich_text_label.visible = true rich_text_label.visible = true

View File

@ -40,6 +40,7 @@ mouse_filter = 2
[node name="ConfirmPanel" type="Panel" parent="CenterContainer"] [node name="ConfirmPanel" type="Panel" parent="CenterContainer"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false
custom_minimum_size = Vector2(280, 120) custom_minimum_size = Vector2(280, 120)
layout_mode = 2 layout_mode = 2

View File

@ -733,12 +733,13 @@ tile_map_data = PackedByteArray("AAAIAAAAAAAIAAUAAAAIAAEAAAARAAQAAAAIAAIAAAARAAU
tile_set = SubResource("TileSet_tefeu") tile_set = SubResource("TileSet_tefeu")
[node name="Deco" type="TileMapLayer" parent="."] [node name="Deco" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAaAAQAAAAOAAgAAAAUAAQAAAAOAAgAAAAUAAoAAAAOAAgAAAAaAAoAAAAOAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAgAAoAAAAOAAgAAAAgAAQAAAAOAAgAAAA=") tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAATAAsAAAAOAAgAAAAaAAsAAAAOAAgAAAAhAAsAAAAOAAgAAAAhAAMAAAAOAAgAAAAaAAMAAAAOAAgAAAATAAMAAAAOAAgAAAA=")
tile_set = SubResource("TileSet_tefeu") tile_set = SubResource("TileSet_tefeu")
[node name="WrongDoor" parent="." instance=ExtResource("5_tefeu")] [node name="WrongDoor" parent="." instance=ExtResource("5_tefeu")]
position = Vector2(191, 104) position = Vector2(191, 104)
message = "entrer dans la poste ?" message = "entrer dans la poste ?"
interact_text = "porte"
event = "wrong" event = "wrong"
[node name="Sprite2D" type="Sprite2D" parent="WrongDoor"] [node name="Sprite2D" type="Sprite2D" parent="WrongDoor"]
@ -761,7 +762,7 @@ position = Vector2(320, 202)
walk_speed = 100.0 walk_speed = 100.0
[node name="DecoOverlay" type="TileMapLayer" parent="."] [node name="DecoOverlay" type="TileMapLayer" parent="."]
tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAaAAQAAAAOAAgAAAAUAAQAAAAOAAgAAAAUAAoAAAAOAAgAAAAaAAoAAAAOAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAgAAoAAAAOAAgAAAAgAAQAAAAOAAgAAAATAAUAAAAQAAgAAAATAAYAAAAQAAkAAAATAAcAAAAQAAgAAAATAAgAAAAQAAkAAAAaAAUAAAAQAAgAAAAaAAYAAAAQAAkAAAAaAAcAAAAQAAgAAAAaAAgAAAAQAAkAAAAgAAUAAAAQAAgAAAAgAAYAAAAQAAkAAAAgAAcAAAAQAAgAAAAgAAgAAAAQAAkAAAA=") tile_map_data = PackedByteArray("AAAXAAcAAAAJAAcAAAAXAAgAAAAJAAgAAAAYAAcAAAAKAAcAAAAWAAYAAAAIAAYAAAAWAAcAAAAIAAcAAAAWAAgAAAAIAAgAAAAXAAYAAAAJAAYAAAAYAAYAAAAKAAYAAAAYAAgAAAAKAAgAAAAcAAYAAAAIAAYAAAAcAAcAAAAIAAcAAAAcAAgAAAAIAAgAAAAdAAYAAAAJAAYAAAAdAAcAAAAJAAcAAAAdAAgAAAAJAAgAAAAeAAYAAAAKAAYAAAAeAAcAAAAKAAcAAAAeAAgAAAAKAAgAAAAaAAYAAAAQAAgAAAATAAYAAAAQAAgAAAATAAcAAAAQAAkAAAAaAAcAAAAQAAkAAAAhAAYAAAAQAAgAAAAhAAcAAAAQAAkAAAA=")
tile_set = SubResource("TileSet_tefeu") tile_set = SubResource("TileSet_tefeu")
[connection signal="event_triggered" from="WrongDoor" to="." method="_on_door_event_triggered"] [connection signal="event_triggered" from="WrongDoor" to="." method="_on_door_event_triggered"]

View File

@ -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

View File

@ -0,0 +1 @@
uid://bwr3tliac4mo2

View File

@ -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 LAGENTE 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"]

View File

@ -351,7 +351,7 @@ graph_offset = Vector2(-180.277, 49)
[node name="MainMenu" instance=ExtResource("1_iaw2i")] [node name="MainMenu" instance=ExtResource("1_iaw2i")]
script = ExtResource("2_mcwxw") script = ExtResource("2_mcwxw")
game_scene_path = "uid://s1cx1gvt4bed" game_scene_path = "uid://djmvj0uqw26dg"
options_packed_scene = ExtResource("3_p7afn") options_packed_scene = ExtResource("3_p7afn")
credits_packed_scene = ExtResource("4_tsej0") credits_packed_scene = ExtResource("4_tsej0")
@ -375,13 +375,13 @@ modulate = Color(1, 1, 1, 0)
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
[node name="TitleLabel" parent="MenuContainer/TitleMargin/TitleContainer" index="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"] [node name="SubTitleContainer" parent="MenuContainer/SubTitleMargin" index="0"]
modulate = Color(1, 1, 1, 0) modulate = Color(1, 1, 1, 0)
[node name="SubTitleLabel" parent="MenuContainer/SubTitleMargin/SubTitleContainer" index="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"] [node name="MenuButtonsContainer" parent="MenuContainer/MenuButtonsMargin" index="0"]
modulate = Color(1, 1, 1, 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"] [node name="MenuButtonsBoxContainer" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer" index="0"]
lock = true 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"] [node name="ContinueGameButton" type="Button" parent="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer" index="1"]
unique_name_in_owner = true unique_name_in_owner = true
visible = false visible = false
layout_mode = 2 layout_mode = 2
text = "Continue" 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"] [connection signal="pressed" from="MenuContainer/MenuButtonsMargin/MenuButtonsContainer/MenuButtonsBoxContainer/ContinueGameButton" to="." method="_on_continue_game_button_pressed"]