Implement tutorial scene

This commit is contained in:
Garrett Gunnell 2025-08-16 03:48:55 -07:00
parent 764d0a6960
commit 0e99846f75
5 changed files with 53 additions and 5 deletions

View file

@ -13,6 +13,10 @@ func _init() -> void:
neighborhoods.append(Neighborhood.new())
neighborhoods.append(Neighborhood.new())
neighborhoods[1].disable()
neighborhoods[2].disable()
neighborhoods[3].disable()
func add_neighborhood(n : Neighborhood) -> void:
neighborhoods.append(n.duplicate(true))

View file

@ -17,6 +17,9 @@ func _init() -> void:
empty_byte_strings.resize(8)
empty_byte_strings.fill(empty_byte_string)
spawn_range = Vector2(1, 1)
stable_range = Vector2(0, 1)
set_quadrant_strings(Quadrant.UPPER_LEFT, empty_byte_strings)
set_quadrant_strings(Quadrant.UPPER_RIGHT, empty_byte_strings)
set_quadrant_strings(Quadrant.LOWER_LEFT, empty_byte_strings)

View file

@ -4,14 +4,20 @@ var slide_index = 0
var slides = []
var tutorial_automaton : Automaton
func _ready() -> void:
GameMaster.tutorial_setup()
slides = get_children()
slides[slide_index].show()
tutorial_automaton = Automaton.new()
func previous_slide() -> void:
if slide_index == 0: return
GameMaster.loaded_preset.emit()
slides[slide_index].hide()
@ -19,12 +25,19 @@ func previous_slide() -> void:
slides[slide_index].show()
if slide_index == 0:
GameMaster.load_automaton_from_preset()
GameMaster.queue_reseed()
func next_slide() -> void:
if slide_index == (slides.size() - 1): return
GameMaster.loaded_preset.emit()
slides[slide_index].hide()
slide_index += 1
slides[slide_index].show()
if slide_index == 1: GameMaster.set_active_automaton(tutorial_automaton)

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=46 format=4 uid="uid://fcc8cpx5ri13"]
[gd_scene load_steps=47 format=4 uid="uid://fcc8cpx5ri13"]
[ext_resource type="Script" uid="uid://drfxlavovcgta" path="res://Assets/Scripts/automata_compositor_effect.gd" id="1_4ppop"]
[ext_resource type="Script" uid="uid://bv7ngik6tjsjc" path="res://Assets/Scenes/slideshow.gd" id="2_1w871"]
@ -34,6 +34,7 @@
[ext_resource type="Texture2D" uid="uid://cwchwinllsefv" path="res://Assets/Textures/Tutorial Slides/slide 6.png" id="27_ehy4s"]
[ext_resource type="Texture2D" uid="uid://dj8gys728ndb3" path="res://Assets/Textures/Tutorial Slides/slide 7.png" id="28_a21j5"]
[ext_resource type="Texture2D" uid="uid://f144ca7ncoiu" path="res://Assets/Textures/Tutorial Slides/slide 8.png" id="29_ioof4"]
[ext_resource type="Script" uid="uid://n1c7utg00au7" path="res://Assets/Scripts/UI/reseed_button.gd" id="31_n1iyd"]
[ext_resource type="Texture2D" uid="uid://c4xfg8a07ddy4" path="res://Assets/Textures/UI/left slide button.png" id="32_xhr83"]
[ext_resource type="Script" uid="uid://cglvstu26dupc" path="res://Assets/Scenes/previous_button.gd" id="34_ssaki"]
[ext_resource type="Script" uid="uid://vqe37s4t7tyf" path="res://Assets/Scenes/next_button.gd" id="35_64lsc"]
@ -949,6 +950,24 @@ offset_bottom = 456.0
mouse_default_cursor_shape = 2
script = ExtResource("24_2o5qy")
[node name="TextureRect" type="TextureRect" parent="Slides/TextureRect7"]
offset_left = 1460.0
offset_top = 768.0
offset_right = 1546.0
offset_bottom = 808.0
scale = Vector2(2, 2)
texture = ExtResource("6_4prdx")
stretch_mode = 2
[node name="Reseed Button" type="Panel" parent="Slides/TextureRect7"]
z_index = 1
offset_left = 1459.0
offset_top = 775.0
offset_right = 1639.0
offset_bottom = 837.0
mouse_default_cursor_shape = 2
script = ExtResource("31_n1iyd")
[node name="TextureRect8" type="TextureRect" parent="Slides"]
visible = false
texture_filter = 1
@ -967,7 +986,7 @@ scale = Vector2(4, 4)
texture = ExtResource("6_4prdx")
stretch_mode = 2
[node name="Previous Button" type="Panel" parent="Slides/TextureRect8"]
[node name="Play Game Button" type="Panel" parent="Slides/TextureRect8"]
z_index = 1
layout_mode = 0
offset_left = 799.0
@ -1143,9 +1162,12 @@ autoplay = true
[connection signal="gui_input" from="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" to="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" method="_on_gui_input"]
[connection signal="mouse_entered" from="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" to="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" method="_on_mouse_entered"]
[connection signal="mouse_exited" from="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" to="Slides/TextureRect7/Neighborhood 1/Tool Bar/Stable Upper Button" method="_on_mouse_exited"]
[connection signal="gui_input" from="Slides/TextureRect8/Previous Button" to="Slides/TextureRect8/Previous Button" method="_on_gui_input"]
[connection signal="mouse_entered" from="Slides/TextureRect8/Previous Button" to="Slides/TextureRect8/Previous Button" method="_on_mouse_entered"]
[connection signal="mouse_exited" from="Slides/TextureRect8/Previous Button" to="Slides/TextureRect8/Previous Button" method="_on_mouse_exited"]
[connection signal="gui_input" from="Slides/TextureRect7/Reseed Button" to="Slides/TextureRect7/Reseed Button" method="_on_gui_input"]
[connection signal="mouse_entered" from="Slides/TextureRect7/Reseed Button" to="Slides/TextureRect7/Reseed Button" method="_on_mouse_entered"]
[connection signal="mouse_exited" from="Slides/TextureRect7/Reseed Button" to="Slides/TextureRect7/Reseed Button" method="_on_mouse_exited"]
[connection signal="gui_input" from="Slides/TextureRect8/Play Game Button" to="Slides/TextureRect8/Play Game Button" method="_on_gui_input"]
[connection signal="mouse_entered" from="Slides/TextureRect8/Play Game Button" to="Slides/TextureRect8/Play Game Button" method="_on_mouse_entered"]
[connection signal="mouse_exited" from="Slides/TextureRect8/Play Game Button" to="Slides/TextureRect8/Play Game Button" method="_on_mouse_exited"]
[connection signal="gui_input" from="Node2D/Previous Button" to="Node2D/Previous Button" method="_on_gui_input"]
[connection signal="mouse_entered" from="Node2D/Previous Button" to="Node2D/Previous Button" method="_on_mouse_entered"]
[connection signal="mouse_exited" from="Node2D/Previous Button" to="Node2D/Previous Button" method="_on_mouse_exited"]

View file

@ -90,6 +90,7 @@ func get_seed() -> int:
func set_active_automaton(robot : Automaton) -> void:
active_automaton = robot.duplicate(true)
loaded_preset.emit()
func get_active_automaton() -> Automaton:
@ -149,6 +150,11 @@ func start_game() -> void:
get_tree().change_scene_to_file("res://Assets/Scenes/main.tscn")
func tutorial_setup() -> void:
current_seed = 213451
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and not event.echo: