From 46a4a7fb4a71492547e3e5cb5bd199a241051de8 Mon Sep 17 00:00:00 2001 From: Rob Kelly Date: Mon, 7 Jul 2025 19:35:32 -0600 Subject: [PATCH] Tutorial messages --- assets/text/text.csv | 14 + src/ui/elements/tutorial/tutorial_message.gd | 13 + .../elements/tutorial/tutorial_message.gd.uid | 1 + .../elements/tutorial/tutorial_message.tscn | 340 ++++++++++++++++++ src/ui/hud/player_hud.tscn | 220 +++++++++++- 5 files changed, 583 insertions(+), 5 deletions(-) create mode 100644 src/ui/elements/tutorial/tutorial_message.gd create mode 100644 src/ui/elements/tutorial/tutorial_message.gd.uid create mode 100644 src/ui/elements/tutorial/tutorial_message.tscn diff --git a/assets/text/text.csv b/assets/text/text.csv index 86befd7..2f90c06 100644 --- a/assets/text/text.csv +++ b/assets/text/text.csv @@ -12,6 +12,7 @@ UI_QUIT,Quit UI_LOADING,Loading UI_DONE,Done! UI_SAVING,Saving... +UI_ETC,etc , TITLE_WARNING_1,!WARNING! TITLE_WARNING_2,"This is a secure terminal system." @@ -97,3 +98,16 @@ SWITCH_BULKHEAD_LABEL,"Bulkhead Control" SWITCH_QUARANTINE_LABEL,"Quarantine Override" SWITCH_CARGOBAY_LABEL,"Cargo Bay Security Override" SWITCH_CARGO_LIFT_LABEL,"Cargo Lift Control" +, +TUTORIAL_LOOK,": look" +TUTORIAL_MOVE,": move around" +TUTORIAL_JUMP,": jump" +TUTORIAL_SNEAK,": sneak silently" +TUTORIAL_SPRINT,": sprint" +TUTORIAL_FIRE,": use equipped tool" +TUTORIAL_MODE,": switch tool mode" +TUTORIAL_INTERACT,": interact" +TUTORIAL_PICK_UP,": pick up object" +TUTORIAL_ROTATE,": rotate held object" +TUTORIAL_PREV_NEXT_TOOL,": switch to previous/next tool" +TUTORIAL_SWITCH_TOOL,": switch tools" diff --git a/src/ui/elements/tutorial/tutorial_message.gd b/src/ui/elements/tutorial/tutorial_message.gd new file mode 100644 index 0000000..db63267 --- /dev/null +++ b/src/ui/elements/tutorial/tutorial_message.gd @@ -0,0 +1,13 @@ +class_name TutorialMessage extends Control + +@onready var animation_tree: AnimationTree = %AnimationTree +@onready +var animation_state: AnimationNodeStateMachinePlayback = animation_tree["parameters/playback"] + + +func fade_in() -> void: + animation_state.travel("fade_in") + + +func fade_out() -> void: + animation_state.travel("fade_out") diff --git a/src/ui/elements/tutorial/tutorial_message.gd.uid b/src/ui/elements/tutorial/tutorial_message.gd.uid new file mode 100644 index 0000000..3b6bbdb --- /dev/null +++ b/src/ui/elements/tutorial/tutorial_message.gd.uid @@ -0,0 +1 @@ +uid://cy8mquhxkqgmd diff --git a/src/ui/elements/tutorial/tutorial_message.tscn b/src/ui/elements/tutorial/tutorial_message.tscn new file mode 100644 index 0000000..9fc67ef --- /dev/null +++ b/src/ui/elements/tutorial/tutorial_message.tscn @@ -0,0 +1,340 @@ +[gd_scene load_steps=17 format=3 uid="uid://bce8b2erx64vg"] + +[ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_b0qfw"] +[ext_resource type="FontFile" uid="uid://qadtckvw0t3l" path="res://assets/fonts/fontawesome-free-6.7.2-desktop/otfs/Font Awesome 6 Free-Solid-900.otf" id="2_81007"] +[ext_resource type="Script" uid="uid://cy8mquhxkqgmd" path="res://src/ui/elements/tutorial/tutorial_message.gd" id="2_ipu78"] + +[sub_resource type="Animation" id="Animation_81007"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("HBoxContainer/MessageContainer/Message:visible_ratio") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("HBoxContainer/InfoIcon:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath(".:modulate") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HBoxContainer/MessageContainer:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_b0qfw"] +resource_name = "display" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:visible") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("HBoxContainer/MessageContainer/Message:visible_ratio") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.4, 1), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 1.0] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("HBoxContainer/InfoIcon:modulate") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HBoxContainer/MessageContainer:visible") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 1, +"values": [false, true] +} + +[sub_resource type="Animation" id="Animation_ipu78"] +resource_name = "idle" +length = 1.6 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("HBoxContainer/InfoIcon:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.8, 1.6), +"transitions": PackedFloat32Array(1.618, 0.618, 1.618), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".:modulate") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Color(1, 1, 1, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HBoxContainer/MessageContainer/Message:visible_ratio") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HBoxContainer/MessageContainer:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="Animation" id="Animation_xxgh3"] +resource_name = "fade_out" +length = 0.4 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath(".:modulate") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.4), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)] +} +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath(".") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.4), +"transitions": PackedFloat32Array(1), +"values": [{ +"args": [], +"method": &"queue_free" +}] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath(".:visible") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("HBoxContainer/MessageContainer/Message:visible_ratio") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [1.0] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("HBoxContainer/MessageContainer:visible") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_81007"] +_data = { +&"RESET": SubResource("Animation_81007"), +&"fade_in": SubResource("Animation_b0qfw"), +&"fade_out": SubResource("Animation_xxgh3"), +&"idle": SubResource("Animation_ipu78") +} + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_b0qfw"] +animation = &"fade_in" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_81007"] +animation = &"fade_out" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ipu78"] +animation = &"idle" + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_xxgh3"] + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_qt0bd"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_trep3"] +break_loop_at_end = true +switch_mode = 2 + +[sub_resource type="AnimationNodeStateMachineTransition" id="AnimationNodeStateMachineTransition_cheth"] +switch_mode = 2 +advance_mode = 2 + +[sub_resource type="AnimationNodeStateMachine" id="AnimationNodeStateMachine_o3pjn"] +states/Start/position = Vector2(195, 100) +states/fade_in/node = SubResource("AnimationNodeAnimation_b0qfw") +states/fade_in/position = Vector2(352, 100) +states/fade_out/node = SubResource("AnimationNodeAnimation_81007") +states/fade_out/position = Vector2(701, 100) +states/idle/node = SubResource("AnimationNodeAnimation_ipu78") +states/idle/position = Vector2(510, 100) +transitions = ["Start", "fade_in", SubResource("AnimationNodeStateMachineTransition_xxgh3"), "fade_in", "idle", SubResource("AnimationNodeStateMachineTransition_qt0bd"), "idle", "fade_out", SubResource("AnimationNodeStateMachineTransition_trep3"), "fade_out", "End", SubResource("AnimationNodeStateMachineTransition_cheth")] +graph_offset = Vector2(-527, -79) + +[node name="TutorialMessage" type="Control"] +visible = false +layout_mode = 3 +anchors_preset = 0 +theme = ExtResource("1_b0qfw") +script = ExtResource("2_ipu78") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 +theme_override_constants/separation = 16 + +[node name="InfoIcon" type="Label" parent="HBoxContainer"] +layout_mode = 2 +theme_override_colors/font_color = Color(0.223529, 0.627451, 0.929412, 1) +theme_override_fonts/font = ExtResource("2_81007") +theme_override_font_sizes/font_size = 42 +text = "  " + +[node name="MessageContainer" type="HBoxContainer" parent="HBoxContainer"] +visible = false +layout_mode = 2 + +[node name="Message" type="Label" parent="HBoxContainer/MessageContainer"] +layout_mode = 2 +text = "Did you know? It's true!!" + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +libraries = { +&"": SubResource("AnimationLibrary_81007") +} + +[node name="AnimationTree" type="AnimationTree" parent="AnimationPlayer"] +unique_name_in_owner = true +root_node = NodePath("%AnimationTree/../..") +tree_root = SubResource("AnimationNodeStateMachine_o3pjn") +anim_player = NodePath("..") diff --git a/src/ui/hud/player_hud.tscn b/src/ui/hud/player_hud.tscn index b0713ca..17cb897 100644 --- a/src/ui/hud/player_hud.tscn +++ b/src/ui/hud/player_hud.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=18 format=3 uid="uid://dq1x21tq06dud"] +[gd_scene load_steps=20 format=3 uid="uid://dq1x21tq06dud"] [ext_resource type="Theme" uid="uid://b07fevr214mmr" path="res://src/ui/hud/hud_theme.tres" id="1_lirk3"] [ext_resource type="Script" uid="uid://lrsv0185bfu" path="res://src/ui/hud/player_hud.gd" id="2_j6lpx"] @@ -8,6 +8,8 @@ [ext_resource type="Script" uid="uid://cjs2fen6jo0g0" path="res://src/ui/rumbler.gd" id="4_ud8na"] [ext_resource type="Script" uid="uid://ctvu31jkk1un2" path="res://src/ui/hud/hold_hud.gd" id="5_65kmv"] [ext_resource type="FontFile" uid="uid://oq8ue2qrfijg" path="res://assets/fonts/Silkscreen/Silkscreen-Regular.ttf" id="7_iwjh7"] +[ext_resource type="PackedScene" uid="uid://bce8b2erx64vg" path="res://src/ui/elements/tutorial/tutorial_message.tscn" id="9_8np55"] +[ext_resource type="Theme" uid="uid://doq7ay6f7dgfo" path="res://src/ui/menus/menu.theme" id="10_c1hvd"] [sub_resource type="Animation" id="Animation_iwjh7"] length = 0.001 @@ -427,10 +429,10 @@ anchor_left = 0.5 anchor_top = 0.5 anchor_right = 0.5 anchor_bottom = 0.5 -offset_left = -17.6994 -offset_top = -20.4734 -offset_right = -17.6994 -offset_bottom = -20.4734 +offset_left = -19.0897 +offset_top = -18.6342 +offset_right = -19.0897 +offset_bottom = -18.6342 grow_horizontal = 2 grow_vertical = 2 script = ExtResource("4_ud8na") @@ -537,3 +539,211 @@ root_node = NodePath("../..") libraries = { &"": SubResource("AnimationLibrary_bu2tv") } + +[node name="TutorialContainer" type="Control" parent="."] +layout_mode = 1 +anchor_left = 0.5 +anchor_top = 0.333 +anchor_right = 0.5 +anchor_bottom = 0.333 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="VBoxContainer" type="VBoxContainer" parent="TutorialContainer"] +layout_mode = 1 +anchors_preset = 8 +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +offset_left = -20.0 +offset_top = -20.0 +offset_right = 20.0 +offset_bottom = 20.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="LookTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="Mouse" type="Label" parent="TutorialContainer/VBoxContainer/LookTutorial/HBoxContainer/MessageContainer" index="0"] +layout_mode = 2 +theme = ExtResource("10_c1hvd") +theme_type_variation = &"InputPrompt" +text = "⟼" + +[node name="Message" parent="TutorialContainer/VBoxContainer/LookTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_LOOK" + +[node name="MoveTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="WASD" type="Label" parent="TutorialContainer/VBoxContainer/MoveTutorial/HBoxContainer/MessageContainer" index="0"] +layout_mode = 2 +theme = ExtResource("10_c1hvd") +theme_type_variation = &"InputPrompt" +text = "␣" + +[node name="Message" parent="TutorialContainer/VBoxContainer/MoveTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_MOVE" + +[node name="JumpTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/JumpTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"jump" +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/JumpTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_JUMP" + +[node name="SneakTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/SneakTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓ ACTION_HOLD_MODIFIER" +action = &"sneak" +hold = true +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/SneakTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_SNEAK" + +[node name="SprintTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/SprintTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓ ACTION_HOLD_MODIFIER" +action = &"sprint" +hold = true +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/SprintTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_SPRINT" + +[node name="FireTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/FireTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓ ACTION_HOLD_MODIFIER" +action = &"fire" +hold = true +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/FireTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_FIRE" + +[node name="ToolSwitchTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/ToolSwitchTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"select_point_spray" +show_name = false + +[node name="InputPrompt2" parent="TutorialContainer/VBoxContainer/ToolSwitchTutorial/HBoxContainer/MessageContainer" index="1" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"select_wide_spray" +show_name = false + +[node name="etc" type="Label" parent="TutorialContainer/VBoxContainer/ToolSwitchTutorial/HBoxContainer/MessageContainer" index="2"] +layout_mode = 2 +theme = ExtResource("10_c1hvd") +theme_type_variation = &"InputPrompt" +text = "UI_ETC" + +[node name="Message" parent="TutorialContainer/VBoxContainer/ToolSwitchTutorial/HBoxContainer/MessageContainer" index="3"] +text = "TUTORIAL_SWITCH_TOOL" + +[node name="PrevNextToolTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/PrevNextToolTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"select_prev_tool" +show_name = false + +[node name="slash" type="Label" parent="TutorialContainer/VBoxContainer/PrevNextToolTutorial/HBoxContainer/MessageContainer" index="1"] +layout_mode = 2 +theme = ExtResource("10_c1hvd") +theme_type_variation = &"InputPrompt" +text = "/" + +[node name="InputPrompt2" parent="TutorialContainer/VBoxContainer/PrevNextToolTutorial/HBoxContainer/MessageContainer" index="2" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"select_next_tool" +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/PrevNextToolTutorial/HBoxContainer/MessageContainer" index="3"] +text = "TUTORIAL_PREV_NEXT_TOOL" + +[node name="ModeSwitchTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/ModeSwitchTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"switch_mode" +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/ModeSwitchTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_MODE" + +[node name="InteractTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/InteractTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"interact" +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/InteractTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_INTERACT" + +[node name="PickUpTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/PickUpTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓" +action = &"interact" +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/PickUpTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_PICK_UP" + +[node name="RotateTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")] +layout_mode = 2 + +[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/RotateTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")] +layout_mode = 2 +text = "❓ ACTION_HOLD_MODIFIER" +action = &"rotate_object" +hold = true +show_name = false + +[node name="Message" parent="TutorialContainer/VBoxContainer/RotateTutorial/HBoxContainer/MessageContainer" index="1"] +text = "TUTORIAL_ROTATE" + +[editable path="TutorialContainer/VBoxContainer/LookTutorial"] +[editable path="TutorialContainer/VBoxContainer/MoveTutorial"] +[editable path="TutorialContainer/VBoxContainer/JumpTutorial"] +[editable path="TutorialContainer/VBoxContainer/SneakTutorial"] +[editable path="TutorialContainer/VBoxContainer/SprintTutorial"] +[editable path="TutorialContainer/VBoxContainer/FireTutorial"] +[editable path="TutorialContainer/VBoxContainer/ToolSwitchTutorial"] +[editable path="TutorialContainer/VBoxContainer/PrevNextToolTutorial"] +[editable path="TutorialContainer/VBoxContainer/ModeSwitchTutorial"] +[editable path="TutorialContainer/VBoxContainer/InteractTutorial"] +[editable path="TutorialContainer/VBoxContainer/PickUpTutorial"] +[editable path="TutorialContainer/VBoxContainer/RotateTutorial"]