generated from krampus/template-godot4
Hello tutorial!
This commit is contained in:
parent
46a4a7fb4a
commit
b5f394f129
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=63 format=3 uid="uid://cwhmn3w8hoads"]
|
||||
[gd_scene load_steps=65 format=3 uid="uid://cwhmn3w8hoads"]
|
||||
|
||||
[ext_resource type="ArrayMesh" uid="uid://dpr5cgq743f4s" path="res://assets/level/floor/floor_9x9.mesh" id="1_isxnv"]
|
||||
[ext_resource type="PackedScene" uid="uid://cdi5sl60mw1po" path="res://src/world/gunkable/gunkable.tscn" id="2_si4vj"]
|
||||
@ -32,6 +32,7 @@
|
||||
[ext_resource type="Script" uid="uid://040xta01xqxd" path="res://src/props/physics/holdable.gd" id="28_knpho"]
|
||||
[ext_resource type="PackedScene" uid="uid://30o8ltnnxpxo" path="res://src/effects/floating_dust.tscn" id="29_ib88w"]
|
||||
[ext_resource type="Texture2D" uid="uid://c1v1sj6b8rwrl" path="res://levels/ghost_ship/level/airlock/overhead_light_airlock_mask_C.png" id="31_2dnfr"]
|
||||
[ext_resource type="Script" uid="uid://c3i315cnqikok" path="res://src/game/tutorial/tutorial_area.gd" id="33_a8g8h"]
|
||||
|
||||
[sub_resource type="ConcavePolygonShape3D" id="ConcavePolygonShape3D_yvipw"]
|
||||
data = PackedVector3Array(4.5, 0, 4.5, -4.5, 0, 4.5, 4.5, 0, -4.5, 4.5, 0, -4.5, -4.5, 0, 4.5, -4.5, 0, -4.5)
|
||||
@ -186,6 +187,9 @@ turbulence_noise_strength = 0.1
|
||||
turbulence_noise_scale = 0.3
|
||||
turbulence_influence_min = 0.0
|
||||
|
||||
[sub_resource type="BoxShape3D" id="BoxShape3D_2dnfr"]
|
||||
size = Vector3(9, 3, 8.7)
|
||||
|
||||
[node name="Airlock" type="Node3D"]
|
||||
|
||||
[node name="Bounds" type="Node3D" parent="."]
|
||||
@ -457,4 +461,15 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
|
||||
visibility_aabb = AABB(-4.5, -1.5, -4.5, 9, 3, 9)
|
||||
process_material = SubResource("ParticleProcessMaterial_otfxe")
|
||||
|
||||
[node name="FireTutorialArea" type="Area3D" parent="."]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.5, 0)
|
||||
collision_layer = 0
|
||||
collision_mask = 8
|
||||
script = ExtResource("33_a8g8h")
|
||||
tutorial_key = &"game/tutorial/progress/fire"
|
||||
|
||||
[node name="CollisionShape3D" type="CollisionShape3D" parent="FireTutorialArea"]
|
||||
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.15)
|
||||
shape = SubResource("BoxShape3D_2dnfr")
|
||||
|
||||
[editable path="Props/EmptySuitChamber"]
|
||||
|
@ -29,6 +29,7 @@ BeehaveGlobalDebugger="*res://addons/beehave/debug/global_debugger.gd"
|
||||
GameRuntime="*res://src/game/game_runtime.gd"
|
||||
ItemCatalog="*res://src/items/item_catalog.tscn"
|
||||
GameSettings="*res://src/game/game_settings.gd"
|
||||
TutorialManager="*res://src/game/tutorial/tutorial_manager/tutorial_manager.tscn"
|
||||
|
||||
[debug]
|
||||
|
||||
@ -83,6 +84,18 @@ debug/enable_debug_menu=false
|
||||
debug/enable_debug_menu.debug=true
|
||||
config/input/object_rotation_sensitivity_y=0.5
|
||||
config/input/object_rotation_sensitivity_x=0.5
|
||||
tutorial/progress/look=false
|
||||
tutorial/progress/move=false
|
||||
tutorial/progress/jump=false
|
||||
tutorial/progress/sneak=false
|
||||
tutorial/progress/sprint=false
|
||||
tutorial/progress/fire=false
|
||||
tutorial/progress/tool_switch=false
|
||||
tutorial/progress/tool_prev_next=false
|
||||
tutorial/progress/mode_switch=false
|
||||
tutorial/progress/interact=false
|
||||
tutorial/progress/pick_up=false
|
||||
tutorial/progress/rotate=false
|
||||
|
||||
[global_group]
|
||||
|
||||
|
45
src/game/tutorial/tutorial.gd
Normal file
45
src/game/tutorial/tutorial.gd
Normal file
@ -0,0 +1,45 @@
|
||||
class_name Tutorial extends Control
|
||||
|
||||
@export var tutorial_key: StringName
|
||||
|
||||
var _displaying := false
|
||||
|
||||
@onready var animation_tree: AnimationTree = %AnimationTree
|
||||
@onready
|
||||
var animation_state: AnimationNodeStateMachinePlayback = animation_tree["parameters/playback"]
|
||||
|
||||
## Handy typed singleton access.
|
||||
static var manager: TutorialManagerType:
|
||||
get():
|
||||
return TutorialManager
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
if tutorial_activated():
|
||||
# We've already been activated -- should disable ourselves
|
||||
queue_free()
|
||||
Tutorial.manager.disable_all.connect(_disable)
|
||||
ProjectSettings.settings_changed.connect(on_settings_changed)
|
||||
|
||||
|
||||
func tutorial_activated() -> bool:
|
||||
return ProjectSettings.get(tutorial_key)
|
||||
|
||||
|
||||
func fade_in() -> void:
|
||||
animation_state.travel("fade_in")
|
||||
|
||||
|
||||
func fade_out() -> void:
|
||||
animation_state.travel("fade_out")
|
||||
|
||||
|
||||
func on_settings_changed() -> void:
|
||||
if not _displaying and tutorial_activated():
|
||||
_displaying = true
|
||||
fade_in()
|
||||
|
||||
|
||||
func _disable() -> void:
|
||||
ProjectSettings.set_setting(tutorial_key, true)
|
||||
queue_free()
|
@ -2,7 +2,7 @@
|
||||
|
||||
[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"]
|
||||
[ext_resource type="Script" uid="uid://cy8mquhxkqgmd" path="res://src/game/tutorial/tutorial.gd" id="2_ipu78"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_81007"]
|
||||
length = 0.001
|
||||
@ -117,34 +117,49 @@ tracks/3/keys = {
|
||||
"update": 1,
|
||||
"values": [false, true]
|
||||
}
|
||||
tracks/4/type = "method"
|
||||
tracks/4/imported = false
|
||||
tracks/4/enabled = true
|
||||
tracks/4/path = NodePath("FadeOutTimer")
|
||||
tracks/4/interp = 1
|
||||
tracks/4/loop_wrap = true
|
||||
tracks/4/keys = {
|
||||
"times": PackedFloat32Array(1),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [-1],
|
||||
"method": &"start"
|
||||
}]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ipu78"]
|
||||
resource_name = "idle"
|
||||
length = 1.6
|
||||
loop_mode = 1
|
||||
[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("HBoxContainer/InfoIcon:modulate")
|
||||
tracks/0/path = NodePath(".: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),
|
||||
"times": PackedFloat32Array(0, 0.4),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/type = "method"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:modulate")
|
||||
tracks/1/path = NodePath(".")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"times": PackedFloat32Array(0.4),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
@ -183,34 +198,33 @@ tracks/4/keys = {
|
||||
"values": [true]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_xxgh3"]
|
||||
resource_name = "fade_out"
|
||||
length = 0.4
|
||||
[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(".:modulate")
|
||||
tracks/0/path = NodePath("HBoxContainer/InfoIcon:modulate")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 0.4),
|
||||
"transitions": PackedFloat32Array(1, 1),
|
||||
"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)]
|
||||
"values": [Color(1, 1, 1, 1), Color(1, 1, 1, 0), Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/1/type = "method"
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".")
|
||||
tracks/1/path = NodePath(".:modulate")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0.4),
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"values": [{
|
||||
"args": [],
|
||||
"method": &"queue_free"
|
||||
}]
|
||||
"update": 0,
|
||||
"values": [Color(1, 1, 1, 1)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
@ -291,10 +305,20 @@ 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"]
|
||||
[node name="Tutorial" type="Control"]
|
||||
visible = false
|
||||
custom_minimum_size = Vector2(0, 48)
|
||||
layout_mode = 3
|
||||
anchors_preset = 0
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_top = -24.0
|
||||
offset_bottom = 24.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
theme = ExtResource("1_b0qfw")
|
||||
script = ExtResource("2_ipu78")
|
||||
|
||||
@ -338,3 +362,9 @@ unique_name_in_owner = true
|
||||
root_node = NodePath("%AnimationTree/../..")
|
||||
tree_root = SubResource("AnimationNodeStateMachine_o3pjn")
|
||||
anim_player = NodePath("..")
|
||||
|
||||
[node name="FadeOutTimer" type="Timer" parent="."]
|
||||
wait_time = 12.0
|
||||
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
||||
[connection signal="timeout" from="FadeOutTimer" to="." method="fade_out"]
|
14
src/game/tutorial/tutorial_area.gd
Normal file
14
src/game/tutorial/tutorial_area.gd
Normal file
@ -0,0 +1,14 @@
|
||||
extends Area3D
|
||||
|
||||
@export var tutorial_key: StringName
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
body_entered.connect(_on_body_entered)
|
||||
collision_layer = 0
|
||||
collision_mask = 0b1000
|
||||
|
||||
|
||||
func _on_body_entered(_body: Node3D) -> void:
|
||||
Tutorial.manager.activate(tutorial_key)
|
||||
queue_free()
|
1
src/game/tutorial/tutorial_area.gd.uid
Normal file
1
src/game/tutorial/tutorial_area.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://c3i315cnqikok
|
7
src/game/tutorial/tutorial_manager/tutorial_manager.tscn
Normal file
7
src/game/tutorial/tutorial_manager/tutorial_manager.tscn
Normal file
@ -0,0 +1,7 @@
|
||||
[gd_scene load_steps=2 format=3 uid="uid://yky8xs8ftm4p"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://dnkittj7dgx6y" path="res://src/game/tutorial/tutorial_manager/tutorial_manager_type.gd" id="1_ggtp4"]
|
||||
|
||||
[node name="TutorialManager" type="Node"]
|
||||
script = ExtResource("1_ggtp4")
|
||||
metadata/_custom_type_script = "uid://dnkittj7dgx6y"
|
20
src/game/tutorial/tutorial_manager/tutorial_manager_type.gd
Normal file
20
src/game/tutorial/tutorial_manager/tutorial_manager_type.gd
Normal file
@ -0,0 +1,20 @@
|
||||
class_name TutorialManagerType extends Node
|
||||
## Global autoloaded singleton that manages the game's tutorial.
|
||||
|
||||
signal disable_all
|
||||
|
||||
|
||||
func activate(key: StringName) -> void:
|
||||
ProjectSettings.set_setting(key, true)
|
||||
Game.settings.write()
|
||||
|
||||
|
||||
func reset_tutorial() -> void:
|
||||
# TODO how to iterate through all settings keys in a path?
|
||||
pass
|
||||
|
||||
|
||||
func disable_tutorial() -> void:
|
||||
disable_all.emit()
|
||||
# XXX does this ensure the call to write will happen after all signals resolve?
|
||||
Game.settings.write.call_deferred()
|
@ -0,0 +1 @@
|
||||
uid://dnkittj7dgx6y
|
12
src/game/tutorial/tutorial_timer.gd
Normal file
12
src/game/tutorial/tutorial_timer.gd
Normal file
@ -0,0 +1,12 @@
|
||||
extends Timer
|
||||
|
||||
@export var tutorial_key: StringName
|
||||
|
||||
|
||||
func _ready() -> void:
|
||||
timeout.connect(_on_timeout)
|
||||
|
||||
|
||||
func _on_timeout() -> void:
|
||||
Tutorial.manager.activate(tutorial_key)
|
||||
queue_free()
|
1
src/game/tutorial/tutorial_timer.gd.uid
Normal file
1
src/game/tutorial/tutorial_timer.gd.uid
Normal file
@ -0,0 +1 @@
|
||||
uid://dg55jdoyctdq6
|
@ -54,6 +54,8 @@ func attach(prop: RigidBody3D, hold_distance: float) -> void:
|
||||
|
||||
held.emit()
|
||||
|
||||
Tutorial.manager.activate("game/tutorial/progress/rotate")
|
||||
|
||||
|
||||
func drop() -> void:
|
||||
_held_object.linear_damp = _original_damping
|
||||
|
@ -273,4 +273,5 @@ func serialize() -> Dictionary:
|
||||
func deserialize(state: Dictionary) -> void:
|
||||
@warning_ignore("unsafe_cast")
|
||||
inventory.assign(state["inventory"] as Dictionary)
|
||||
|
||||
#endregion
|
||||
|
@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=67 format=3 uid="uid://bwe2jdmvinhqd"]
|
||||
[gd_scene load_steps=68 format=3 uid="uid://bwe2jdmvinhqd"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://buwh0g1ga2aka" path="res://src/player/player.gd" id="1_npueo"]
|
||||
[ext_resource type="Script" uid="uid://cx1yt0drthpw3" path="res://src/player/camera_controller.gd" id="2_veeqv"]
|
||||
@ -37,6 +37,7 @@
|
||||
[ext_resource type="AudioStream" uid="uid://ck86vhmbg3xnj" path="res://assets/sfx/footsteps/plastic/plastic5.wav" id="30_p6grl"]
|
||||
[ext_resource type="Script" uid="uid://c5o1d2shq2qig" path="res://src/world/game_sound/game_sound_emitter.gd" id="31_wcxbk"]
|
||||
[ext_resource type="Script" uid="uid://b5loa2u6s5l5c" path="res://src/player/rigid_body_physics.gd" id="36_phdu6"]
|
||||
[ext_resource type="Script" uid="uid://dg55jdoyctdq6" path="res://src/game/tutorial/tutorial_timer.gd" id="38_evlgt"]
|
||||
|
||||
[sub_resource type="Animation" id="Animation_x42xx"]
|
||||
length = 0.001
|
||||
@ -809,3 +810,15 @@ mesh = SubResource("PlaneMesh_p6grl")
|
||||
|
||||
[node name="RigidBodyPhysics" type="Node" parent="."]
|
||||
script = ExtResource("36_phdu6")
|
||||
|
||||
[node name="LookTutorialTimer" type="Timer" parent="."]
|
||||
wait_time = 3.0
|
||||
autostart = true
|
||||
script = ExtResource("38_evlgt")
|
||||
tutorial_key = &"game/tutorial/progress/look"
|
||||
|
||||
[node name="MoveTutorialTimer" type="Timer" parent="."]
|
||||
wait_time = 5.0
|
||||
autostart = true
|
||||
script = ExtResource("38_evlgt")
|
||||
tutorial_key = &"game/tutorial/progress/move"
|
||||
|
@ -26,6 +26,7 @@ func _ready() -> void:
|
||||
|
||||
|
||||
func select() -> void:
|
||||
Tutorial.manager.activate("game/tutorial/progress/interact")
|
||||
Player.instance.hud.interact_hud.set_interactive(self)
|
||||
|
||||
|
||||
|
@ -23,6 +23,7 @@ func _default_controller() -> RigidBody3D:
|
||||
|
||||
|
||||
func select() -> void:
|
||||
Tutorial.manager.activate("game/tutorial/progress/pick_up")
|
||||
Player.instance.hud.hold_hud.select_prop()
|
||||
|
||||
|
||||
|
@ -1,13 +0,0 @@
|
||||
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")
|
@ -8,7 +8,7 @@
|
||||
[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="PackedScene" uid="uid://bce8b2erx64vg" path="res://src/game/tutorial/tutorial.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"]
|
||||
@ -429,10 +429,10 @@ anchor_left = 0.5
|
||||
anchor_top = 0.5
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 0.5
|
||||
offset_left = -19.0897
|
||||
offset_top = -18.6342
|
||||
offset_right = -19.0897
|
||||
offset_bottom = -18.6342
|
||||
offset_left = -18.4746
|
||||
offset_top = -23.3094
|
||||
offset_right = -18.4746
|
||||
offset_bottom = -23.3094
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
script = ExtResource("4_ud8na")
|
||||
@ -565,6 +565,7 @@ grow_vertical = 2
|
||||
|
||||
[node name="LookTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/look"
|
||||
|
||||
[node name="Mouse" type="Label" parent="TutorialContainer/VBoxContainer/LookTutorial/HBoxContainer/MessageContainer" index="0"]
|
||||
layout_mode = 2
|
||||
@ -577,6 +578,7 @@ text = "TUTORIAL_LOOK"
|
||||
|
||||
[node name="MoveTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/move"
|
||||
|
||||
[node name="WASD" type="Label" parent="TutorialContainer/VBoxContainer/MoveTutorial/HBoxContainer/MessageContainer" index="0"]
|
||||
layout_mode = 2
|
||||
@ -589,6 +591,7 @@ text = "TUTORIAL_MOVE"
|
||||
|
||||
[node name="JumpTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/jump"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/JumpTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -601,6 +604,7 @@ text = "TUTORIAL_JUMP"
|
||||
|
||||
[node name="SneakTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/sneak"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/SneakTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -614,6 +618,7 @@ text = "TUTORIAL_SNEAK"
|
||||
|
||||
[node name="SprintTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/sprint"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/SprintTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -627,6 +632,7 @@ text = "TUTORIAL_SPRINT"
|
||||
|
||||
[node name="FireTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/fire"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/FireTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -640,6 +646,7 @@ text = "TUTORIAL_FIRE"
|
||||
|
||||
[node name="ToolSwitchTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/tool_switch"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/ToolSwitchTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -662,32 +669,34 @@ 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")]
|
||||
[node name="ToolPrevNextTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/tool_prev_next"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/PrevNextToolTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/ToolPrevNextTutorial/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"]
|
||||
[node name="slash" type="Label" parent="TutorialContainer/VBoxContainer/ToolPrevNextTutorial/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")]
|
||||
[node name="InputPrompt2" parent="TutorialContainer/VBoxContainer/ToolPrevNextTutorial/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"]
|
||||
[node name="Message" parent="TutorialContainer/VBoxContainer/ToolPrevNextTutorial/HBoxContainer/MessageContainer" index="3"]
|
||||
text = "TUTORIAL_PREV_NEXT_TOOL"
|
||||
|
||||
[node name="ModeSwitchTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/mode_switch"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/ModeSwitchTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -700,6 +709,7 @@ text = "TUTORIAL_MODE"
|
||||
|
||||
[node name="InteractTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/interact"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/InteractTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -712,6 +722,7 @@ text = "TUTORIAL_INTERACT"
|
||||
|
||||
[node name="PickUpTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/pick_up"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/PickUpTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -724,6 +735,7 @@ text = "TUTORIAL_PICK_UP"
|
||||
|
||||
[node name="RotateTutorial" parent="TutorialContainer/VBoxContainer" instance=ExtResource("9_8np55")]
|
||||
layout_mode = 2
|
||||
tutorial_key = &"game/tutorial/progress/rotate"
|
||||
|
||||
[node name="InputPrompt" parent="TutorialContainer/VBoxContainer/RotateTutorial/HBoxContainer/MessageContainer" index="0" instance=ExtResource("4_iwjh7")]
|
||||
layout_mode = 2
|
||||
@ -742,7 +754,7 @@ text = "TUTORIAL_ROTATE"
|
||||
[editable path="TutorialContainer/VBoxContainer/SprintTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/FireTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/ToolSwitchTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/PrevNextToolTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/ToolPrevNextTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/ModeSwitchTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/InteractTutorial"]
|
||||
[editable path="TutorialContainer/VBoxContainer/PickUpTutorial"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user