prologue: целиком Акт 1 (комната+кухня) + Акт 2 (установка)
Some checks failed
Godot CI / Import + smoke test (push) Failing after 29s

ИНФРАСТРУКТУРА:
- GameState autoload: player_name, прогресс актов, ачивки.
- SceneManager autoload: change_scene с deferred переключением,
  shortcuts go_room/go_kitchen/go_install.
- TextureGen autoload: процедурные pixel-art ImageTexture через
  Image.set_pixel, кешируются в Dictionary. Текстуры: wallpaper
  (бежевая с растительным узором), linoleum (полосы паркета),
  ceiling (побелка с шумом), wall_carpet (бордовый с ромбами),
  blanket (тёмно-синее со звёздами), poster_csgo (жёлтый с
  силуэтом AWP), poster_morgen (тёмно-красный с головой),
  door (дерево с волокном), desk_white, book_color(0-4).

АКТ 1 КОМНАТА (act1_room.tscn / act1.gd):
- Все стены/пол/потолок/ковёр/одеяло/постеры/стол/дверь теперь
  с процедурными текстурами через TextureGen.apply_to_material с
  правильным uv1_scale. Texture filter NEAREST для пиксель-арта.
- Door interactable добавлен в east-wall (рядом с DoorPanel).
  Включается после ухода отца. Клик → переход на кухню.
- GameState persists прогресс — возврат из кухни не повторяет интро.
- _setup_post_intro_state восстанавливает SEEK_DRIVE после кухни.
- После подбора флешки — переход на act2_install.

АКТ 1 КУХНЯ (act1_kitchen.tscn / act1_kitchen.gd):
- 3×3м комнатка с холодильником «Атлант», плитой (4 ручки красные),
  столешницей+раковиной, чайником, столом+2 стула, окном+радиатором.
- Wi-Fi записка приклеена на холодильнике, читается → ачивка
  «Wi-Fi разведчик» + GameState.wifi_password_found = true.
- Дверь обратно в комнату — SceneManager.go_room().
- Текстуры через TextureGen.

АКТ 2 УСТАНОВКА ШИНДОВС (act2_install.tscn / act2_install.gd):
- Полная 2D-сцена с 7 шагами state machine:
  BOOT (4 квадратика логотипа 1.6 сек) → LICENSE_INTRO →
  LICENSE_FULL (по «Читать») → DISK → USERNAME → PASSWORD →
  TIMEZONE → INSTALLING (5 фаз прогресс-бара 3 сек) → COMPLETE.
- ШИЗО-пункты лицензионки: 7.3.2, 11.4, 12.1, 15.7, 18.0, 21.3,
  23.9, 27.1 (полный текст из канона Пролог Акт 2).
- Ввод имени с валидацией: 2-24 символа, regex буквы+цифры,
  ban-list титулов (повелитель/владыка/бог/лорд/царь) и мата.
- Подсказка-плейсхолдеры из канона: bossiara13, fr3sh_n3kit и т.п.
- Пароль с чекбоксом «Без пароля» + ачивки «Главное чтоб удобно»
  (123/qwerty/empty) и «Параноик» (12+ символов со спец).
- Часовой пояс OptionButton с 7 регионами страны Р, UTC+3 default.
- Welcome-экран после установки: «Добро пожаловать, {playerName}».
- Кнопка «Запустить стеме» — заглушка Акта 3.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dmitrii Bykov 2026-05-24 17:50:26 +03:00
parent b833127bcc
commit c3190ad058
15 changed files with 1388 additions and 7 deletions

View file

@ -0,0 +1,408 @@
[gd_scene load_steps=44 format=3]
[ext_resource type="Script" path="res://scripts/prologue/act1_kitchen.gd" id="1_kit"]
[ext_resource type="Script" path="res://scripts/interactables/interactable.gd" id="2_int"]
[ext_resource type="PackedScene" path="res://scenes/components/player_fpv.tscn" id="3_player"]
[sub_resource type="BoxMesh" id="mesh_floor"]
size = Vector3(3, 0.1, 3)
[sub_resource type="BoxShape3D" id="shape_floor"]
size = Vector3(3, 0.1, 3)
[sub_resource type="BoxMesh" id="mesh_wall_ns"]
size = Vector3(3, 2.5, 0.1)
[sub_resource type="BoxShape3D" id="shape_wall_ns"]
size = Vector3(3, 2.5, 0.1)
[sub_resource type="BoxMesh" id="mesh_wall_ew"]
size = Vector3(0.1, 2.5, 3)
[sub_resource type="BoxShape3D" id="shape_wall_ew"]
size = Vector3(0.1, 2.5, 3)
[sub_resource type="BoxMesh" id="mesh_fridge"]
size = Vector3(0.6, 1.8, 0.6)
[sub_resource type="BoxShape3D" id="shape_fridge"]
size = Vector3(0.6, 1.8, 0.6)
[sub_resource type="BoxMesh" id="mesh_stove"]
size = Vector3(0.6, 0.85, 0.6)
[sub_resource type="BoxShape3D" id="shape_stove"]
size = Vector3(0.6, 0.85, 0.6)
[sub_resource type="BoxMesh" id="mesh_counter"]
size = Vector3(0.7, 0.85, 0.6)
[sub_resource type="BoxShape3D" id="shape_counter"]
size = Vector3(0.7, 0.85, 0.6)
[sub_resource type="BoxMesh" id="mesh_sink"]
size = Vector3(0.5, 0.05, 0.4)
[sub_resource type="BoxMesh" id="mesh_kitchen_window"]
size = Vector3(0.8, 0.5, 0.06)
[sub_resource type="BoxMesh" id="mesh_door_panel"]
size = Vector3(1.0, 2.0, 0.06)
[sub_resource type="BoxShape3D" id="shape_door"]
size = Vector3(1.0, 2.0, 0.06)
[sub_resource type="BoxMesh" id="mesh_table"]
size = Vector3(0.9, 0.04, 0.7)
[sub_resource type="BoxShape3D" id="shape_table"]
size = Vector3(0.9, 0.04, 0.7)
[sub_resource type="BoxMesh" id="mesh_table_leg"]
size = Vector3(0.05, 0.72, 0.05)
[sub_resource type="BoxMesh" id="mesh_chair_seat"]
size = Vector3(0.35, 0.04, 0.35)
[sub_resource type="BoxShape3D" id="shape_chair_seat"]
size = Vector3(0.35, 0.04, 0.35)
[sub_resource type="BoxMesh" id="mesh_chair_back"]
size = Vector3(0.35, 0.5, 0.04)
[sub_resource type="BoxMesh" id="mesh_chair_leg"]
size = Vector3(0.04, 0.46, 0.04)
[sub_resource type="BoxMesh" id="mesh_note"]
size = Vector3(0.15, 0.01, 0.1)
[sub_resource type="BoxShape3D" id="shape_note"]
size = Vector3(0.15, 0.01, 0.1)
[sub_resource type="BoxMesh" id="mesh_radiator"]
size = Vector3(0.7, 0.4, 0.08)
[sub_resource type="BoxMesh" id="mesh_kettle"]
size = Vector3(0.18, 0.22, 0.18)
[sub_resource type="BoxMesh" id="mesh_knob"]
size = Vector3(0.04, 0.04, 0.04)
[sub_resource type="StandardMaterial3D" id="mat_floor"]
shading_mode = 0
albedo_color = Color(0.72, 0.6, 0.41, 1)
[sub_resource type="StandardMaterial3D" id="mat_wall"]
shading_mode = 0
albedo_color = Color(0.83, 0.72, 0.55, 1)
[sub_resource type="StandardMaterial3D" id="mat_ceiling"]
shading_mode = 0
albedo_color = Color(0.92, 0.9, 0.85, 1)
[sub_resource type="StandardMaterial3D" id="mat_fridge"]
shading_mode = 0
albedo_color = Color(0.95, 0.94, 0.9, 1)
[sub_resource type="StandardMaterial3D" id="mat_stove"]
shading_mode = 0
albedo_color = Color(0.42, 0.42, 0.45, 1)
[sub_resource type="StandardMaterial3D" id="mat_counter"]
shading_mode = 0
albedo_color = Color(0.88, 0.86, 0.82, 1)
[sub_resource type="StandardMaterial3D" id="mat_sink"]
shading_mode = 0
albedo_color = Color(0.65, 0.65, 0.7, 1)
[sub_resource type="StandardMaterial3D" id="mat_kitchen_window"]
shading_mode = 0
albedo_color = Color(0.6, 0.85, 1.0, 1)
emission_enabled = true
emission = Color(0.6, 0.85, 1.0, 1)
emission_energy_multiplier = 0.6
[sub_resource type="StandardMaterial3D" id="mat_door"]
shading_mode = 0
albedo_color = Color(0.85, 0.82, 0.75, 1)
[sub_resource type="StandardMaterial3D" id="mat_table"]
shading_mode = 0
albedo_color = Color(0.55, 0.38, 0.2, 1)
[sub_resource type="StandardMaterial3D" id="mat_chair"]
shading_mode = 0
albedo_color = Color(0.55, 0.38, 0.2, 1)
[sub_resource type="StandardMaterial3D" id="mat_note"]
shading_mode = 0
albedo_color = Color(0.95, 0.95, 0.88, 1)
emission_enabled = true
emission = Color(0.95, 0.95, 0.7, 1)
emission_energy_multiplier = 0.5
[sub_resource type="StandardMaterial3D" id="mat_radiator"]
shading_mode = 0
albedo_color = Color(0.96, 0.94, 0.88, 1)
[sub_resource type="StandardMaterial3D" id="mat_kettle"]
shading_mode = 0
albedo_color = Color(0.85, 0.16, 0.16, 1)
[sub_resource type="StandardMaterial3D" id="mat_knob"]
shading_mode = 0
albedo_color = Color(0.85, 0.2, 0.2, 1)
[node name="Act1Kitchen" type="Node3D"]
script = ExtResource("1_kit")
[node name="Floor" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.05, 0)
[node name="Mesh" type="MeshInstance3D" parent="Floor"]
mesh = SubResource("mesh_floor")
material_override = SubResource("mat_floor")
[node name="Coll" type="CollisionShape3D" parent="Floor"]
shape = SubResource("shape_floor")
[node name="Ceiling" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2.55, 0)
[node name="Mesh" type="MeshInstance3D" parent="Ceiling"]
mesh = SubResource("mesh_floor")
material_override = SubResource("mat_ceiling")
[node name="Coll" type="CollisionShape3D" parent="Ceiling"]
shape = SubResource("shape_floor")
[node name="WallN" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, -1.55)
[node name="Mesh" type="MeshInstance3D" parent="WallN"]
mesh = SubResource("mesh_wall_ns")
material_override = SubResource("mat_wall")
[node name="Coll" type="CollisionShape3D" parent="WallN"]
shape = SubResource("shape_wall_ns")
[node name="Window" type="MeshInstance3D" parent="WallN"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, 0.35, 0.06)
mesh = SubResource("mesh_kitchen_window")
material_override = SubResource("mat_kitchen_window")
[node name="Radiator" type="MeshInstance3D" parent="WallN"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, -0.7, 0.1)
mesh = SubResource("mesh_radiator")
material_override = SubResource("mat_radiator")
[node name="WallS" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.25, 1.55)
[node name="Mesh" type="MeshInstance3D" parent="WallS"]
mesh = SubResource("mesh_wall_ns")
material_override = SubResource("mat_wall")
[node name="Coll" type="CollisionShape3D" parent="WallS"]
shape = SubResource("shape_wall_ns")
[node name="DoorPanel" type="MeshInstance3D" parent="WallS"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.25, -0.06)
mesh = SubResource("mesh_door_panel")
material_override = SubResource("mat_door")
[node name="DoorBack" type="StaticBody3D" parent="WallS"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.7, -0.25, -0.12)
script = ExtResource("2_int")
prompt = "вернуться в комнату"
[node name="Mesh" type="MeshInstance3D" parent="WallS/DoorBack"]
visible = false
mesh = SubResource("mesh_door_panel")
[node name="Coll" type="CollisionShape3D" parent="WallS/DoorBack"]
shape = SubResource("shape_door")
[node name="WallE" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.55, 1.25, 0)
[node name="Mesh" type="MeshInstance3D" parent="WallE"]
mesh = SubResource("mesh_wall_ew")
material_override = SubResource("mat_wall")
[node name="Coll" type="CollisionShape3D" parent="WallE"]
shape = SubResource("shape_wall_ew")
[node name="WallW" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1.55, 1.25, 0)
[node name="Mesh" type="MeshInstance3D" parent="WallW"]
mesh = SubResource("mesh_wall_ew")
material_override = SubResource("mat_wall")
[node name="Coll" type="CollisionShape3D" parent="WallW"]
shape = SubResource("shape_wall_ew")
[node name="Fridge" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.9, 0.9, -1.15)
[node name="Mesh" type="MeshInstance3D" parent="Fridge"]
mesh = SubResource("mesh_fridge")
material_override = SubResource("mat_fridge")
[node name="Coll" type="CollisionShape3D" parent="Fridge"]
shape = SubResource("shape_fridge")
[node name="WiFiNote" type="StaticBody3D" parent="Fridge"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.6, 0.31)
script = ExtResource("2_int")
prompt = "прочитать записку"
[node name="Mesh" type="MeshInstance3D" parent="Fridge/WiFiNote"]
mesh = SubResource("mesh_note")
material_override = SubResource("mat_note")
[node name="Coll" type="CollisionShape3D" parent="Fridge/WiFiNote"]
shape = SubResource("shape_note")
[node name="Stove" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0, 0.425, -1.2)
[node name="Mesh" type="MeshInstance3D" parent="Stove"]
mesh = SubResource("mesh_stove")
material_override = SubResource("mat_stove")
[node name="Coll" type="CollisionShape3D" parent="Stove"]
shape = SubResource("shape_stove")
[node name="Knob1" type="MeshInstance3D" parent="Stove"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.18, 0.4, 0.32)
mesh = SubResource("mesh_knob")
material_override = SubResource("mat_knob")
[node name="Knob2" type="MeshInstance3D" parent="Stove"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, 0.4, 0.32)
mesh = SubResource("mesh_knob")
material_override = SubResource("mat_knob")
[node name="Counter" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.7, 0.425, -1.2)
[node name="Mesh" type="MeshInstance3D" parent="Counter"]
mesh = SubResource("mesh_counter")
material_override = SubResource("mat_counter")
[node name="Coll" type="CollisionShape3D" parent="Counter"]
shape = SubResource("shape_counter")
[node name="Sink" type="MeshInstance3D" parent="Counter"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.45, 0.05)
mesh = SubResource("mesh_sink")
material_override = SubResource("mat_sink")
[node name="Kettle" type="MeshInstance3D" parent="Stove"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.535, 0)
mesh = SubResource("mesh_kettle")
material_override = SubResource("mat_kettle")
[node name="Table" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.73, 0.7)
[node name="Mesh" type="MeshInstance3D" parent="Table"]
mesh = SubResource("mesh_table")
material_override = SubResource("mat_table")
[node name="Coll" type="CollisionShape3D" parent="Table"]
shape = SubResource("shape_table")
[node name="Leg1" type="MeshInstance3D" parent="Table"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.42, -0.38, -0.32)
mesh = SubResource("mesh_table_leg")
material_override = SubResource("mat_table")
[node name="Leg2" type="MeshInstance3D" parent="Table"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.42, -0.38, -0.32)
mesh = SubResource("mesh_table_leg")
material_override = SubResource("mat_table")
[node name="Leg3" type="MeshInstance3D" parent="Table"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.42, -0.38, 0.32)
mesh = SubResource("mesh_table_leg")
material_override = SubResource("mat_table")
[node name="Leg4" type="MeshInstance3D" parent="Table"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.42, -0.38, 0.32)
mesh = SubResource("mesh_table_leg")
material_override = SubResource("mat_table")
[node name="Chair1" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.48, 1.25)
[node name="Mesh" type="MeshInstance3D" parent="Chair1"]
mesh = SubResource("mesh_chair_seat")
material_override = SubResource("mat_chair")
[node name="Coll" type="CollisionShape3D" parent="Chair1"]
shape = SubResource("shape_chair_seat")
[node name="Back" type="MeshInstance3D" parent="Chair1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.27, 0.15)
mesh = SubResource("mesh_chair_back")
material_override = SubResource("mat_chair")
[node name="Leg1" type="MeshInstance3D" parent="Chair1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, -0.25, -0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg2" type="MeshInstance3D" parent="Chair1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, -0.25, -0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg3" type="MeshInstance3D" parent="Chair1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, -0.25, 0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg4" type="MeshInstance3D" parent="Chair1"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, -0.25, 0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Chair2" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0.48, 0.1)
[node name="Mesh" type="MeshInstance3D" parent="Chair2"]
mesh = SubResource("mesh_chair_seat")
material_override = SubResource("mat_chair")
[node name="Coll" type="CollisionShape3D" parent="Chair2"]
shape = SubResource("shape_chair_seat")
[node name="Leg1" type="MeshInstance3D" parent="Chair2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, -0.25, -0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg2" type="MeshInstance3D" parent="Chair2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, -0.25, -0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg3" type="MeshInstance3D" parent="Chair2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.15, -0.25, 0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="Leg4" type="MeshInstance3D" parent="Chair2"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, -0.25, 0.15)
mesh = SubResource("mesh_chair_leg")
material_override = SubResource("mat_chair")
[node name="PlayerFPV" parent="." instance=ExtResource("3_player")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.5, 0, 1.0)
[connection signal="interacted" from="Fridge/WiFiNote" to="." method="_on_note_interacted"]
[connection signal="interacted" from="WallS/DoorBack" to="." method="_on_door_back_interacted"]

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=76 format=3]
[gd_scene load_steps=77 format=3]
[ext_resource type="Script" path="res://scripts/prologue/act1.gd" id="1_act1"]
[ext_resource type="Script" path="res://scripts/interactables/interactable.gd" id="2_int"]
@ -40,6 +40,9 @@ size = Vector3(1.0, 0.5, 0.1)
[sub_resource type="BoxMesh" id="mesh_door"]
size = Vector3(0.06, 2.0, 1.0)
[sub_resource type="BoxShape3D" id="shape_door"]
size = Vector3(0.06, 2.0, 1.0)
[sub_resource type="BoxMesh" id="mesh_desk"]
size = Vector3(1.5, 0.7, 0.6)
@ -393,6 +396,18 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.06, -0.25, 0)
mesh = SubResource("mesh_door")
material_override = SubResource("mat_door")
[node name="Door" type="StaticBody3D" parent="WallE"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1, -0.25, 0)
script = ExtResource("2_int")
prompt = "выйти на кухню"
[node name="Mesh" type="MeshInstance3D" parent="WallE/Door"]
visible = false
mesh = SubResource("mesh_door")
[node name="Coll" type="CollisionShape3D" parent="WallE/Door"]
shape = SubResource("shape_door")
[node name="WallW" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.05, 1.25, 0)
@ -565,3 +580,4 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.5)
[connection signal="interacted" from="Desk/FlashDrive" to="." method="_on_drive_interacted"]
[connection signal="interacted" from="GiftBox" to="." method="_on_gift_interacted"]
[connection signal="interacted" from="SystemUnit/Note" to="." method="_on_note_interacted"]
[connection signal="interacted" from="WallE/Door" to="." method="_on_door_interacted"]

View file

@ -0,0 +1,179 @@
[gd_scene load_steps=2 format=3]
[ext_resource type="Script" path="res://scripts/prologue/act2_install.gd" id="1_act2"]
[node name="Act2Install" type="Control"]
layout_mode = 3
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
script = ExtResource("1_act2")
[node name="Desktop" type="ColorRect" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
color = Color(0.04, 0.08, 0.18, 1)
[node name="FourSquares" type="Control" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
[node name="LogoText" type="Label" parent="FourSquares"]
offset_left = 0.0
offset_top = 130.0
offset_right = 640.0
offset_bottom = 160.0
text = "ШИНДОВС 9"
horizontal_alignment = 1
modulate = Color(0.94, 0.94, 0.94, 1)
[node name="SqRed" type="ColorRect" parent="FourSquares"]
offset_left = 290.0
offset_top = 170.0
offset_right = 314.0
offset_bottom = 194.0
color = Color(0.9, 0.2, 0.2, 1)
[node name="SqGreen" type="ColorRect" parent="FourSquares"]
offset_left = 316.0
offset_top = 170.0
offset_right = 340.0
offset_bottom = 194.0
color = Color(0.2, 0.78, 0.3, 1)
[node name="SqBlue" type="ColorRect" parent="FourSquares"]
offset_left = 290.0
offset_top = 196.0
offset_right = 314.0
offset_bottom = 220.0
color = Color(0.2, 0.4, 0.9, 1)
[node name="SqYellow" type="ColorRect" parent="FourSquares"]
offset_left = 316.0
offset_top = 196.0
offset_right = 340.0
offset_bottom = 220.0
color = Color(0.94, 0.71, 0.1, 1)
[node name="BootHint" type="Label" parent="FourSquares"]
offset_left = 0.0
offset_top = 240.0
offset_right = 640.0
offset_bottom = 260.0
text = "Подготовка установки…"
horizontal_alignment = 1
modulate = Color(0.7, 0.7, 0.7, 1)
[node name="Center" type="CenterContainer" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
[node name="Window" type="PanelContainer" parent="Center"]
custom_minimum_size = Vector2(540, 300)
layout_mode = 2
[node name="V" type="VBoxContainer" parent="Center/Window"]
layout_mode = 2
[node name="TitleBar" type="PanelContainer" parent="Center/Window/V"]
layout_mode = 2
[node name="Title" type="Label" parent="Center/Window/V/TitleBar"]
layout_mode = 2
text = "Шиндовс 9 — Установка"
horizontal_alignment = 1
modulate = Color(0.94, 0.71, 0.1, 1)
[node name="Body" type="RichTextLabel" parent="Center/Window/V"]
custom_minimum_size = Vector2(520, 160)
layout_mode = 2
bbcode_enabled = true
fit_content = true
scroll_active = true
text = ""
[node name="Input" type="LineEdit" parent="Center/Window/V"]
layout_mode = 2
placeholder_text = "..."
max_length = 24
[node name="InputHint" type="Label" parent="Center/Window/V"]
layout_mode = 2
text = ""
autowrap_mode = 3
modulate = Color(0.55, 0.55, 0.55, 1)
[node name="CheckBoxNoPwd" type="CheckBox" parent="Center/Window/V"]
layout_mode = 2
text = "Без пароля"
[node name="TimeZone" type="OptionButton" parent="Center/Window/V"]
layout_mode = 2
[node name="ErrorLabel" type="Label" parent="Center/Window/V"]
layout_mode = 2
text = ""
modulate = Color(0.85, 0.16, 0.16, 1)
[node name="Progress" type="ProgressBar" parent="Center/Window/V"]
layout_mode = 2
max_value = 100.0
show_percentage = true
[node name="Buttons" type="HBoxContainer" parent="Center/Window/V"]
layout_mode = 2
alignment = 2
[node name="BtnB" type="Button" parent="Center/Window/V/Buttons"]
layout_mode = 2
text = "Читать"
[node name="BtnA" type="Button" parent="Center/Window/V/Buttons"]
layout_mode = 2
text = "Принять"
[node name="WelcomeScreen" type="Control" parent="."]
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
visible = false
[node name="BG" type="ColorRect" parent="WelcomeScreen"]
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = 640.0
offset_bottom = 360.0
color = Color(0.04, 0.08, 0.18, 1)
[node name="V" type="VBoxContainer" parent="WelcomeScreen"]
offset_left = 0.0
offset_top = 130.0
offset_right = 640.0
offset_bottom = 240.0
alignment = 1
[node name="WelcomeText" type="Label" parent="WelcomeScreen/V"]
layout_mode = 2
text = "Добро пожаловать."
horizontal_alignment = 1
modulate = Color(0.94, 0.94, 0.94, 1)
[node name="Hint" type="Label" parent="WelcomeScreen/V"]
layout_mode = 2
text = ""
horizontal_alignment = 1
modulate = Color(0.7, 0.7, 0.7, 1)
[node name="LaunchSteme" type="Button" parent="WelcomeScreen/V"]
layout_mode = 2
text = "Запустить стеме"
[connection signal="pressed" from="WelcomeScreen/V/LaunchSteme" to="." method="_on_launch_steme"]