farming-simulator/scripts/main_menu.gd

47 lines
1.2 KiB
GDScript3
Raw Permalink Normal View History

fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
extends Control
@onready var btn_new: Button = $Center/V/BtnNew
@onready var btn_continue: Button = $Center/V/BtnContinue
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
@onready var btn_settings: Button = $Center/V/BtnSettings
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
@onready var btn_quit: Button = $Center/V/BtnQuit
func _ready() -> void:
Input.mouse_mode = Input.MOUSE_MODE_VISIBLE
DialogManager.set_crosshair_visible(false)
DialogManager.set_controls_hint("")
DialogManager.set_date_time("", "")
DialogManager.set_objective("")
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
btn_new.pressed.connect(_on_new_game)
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
btn_continue.pressed.connect(_on_continue)
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
btn_quit.pressed.connect(_on_quit)
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
btn_continue.disabled = not GameState.has_save()
if not btn_continue.disabled:
btn_continue.text = "Продолжить"
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
btn_new.grab_focus()
func _on_new_game() -> void:
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
GameState.reset()
GameState.delete_save()
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
SceneManager.go_room()
полная мета-структура игры: pause + settings + save/load PAUSE-МЕНЮ (autoload PauseMenu CanvasLayer): - ESC во время геймплея открывает оверлей с тёмным фоном и центральной панелью в Шиндовс-стиле. - 4 кнопки: Продолжить / Настройки / В главное меню / Сохранить и выйти. - process_mode = ALWAYS чтобы работать при tree.paused = true. - При закрытии меню в 3D-сценах автоматически возвращает Input.mouse_mode = CAPTURED. - В главном меню pause не активируется (_can_pause false). - set_input_as_handled блокирует FPV-контроллер от перехвата ESC одновременно. НАСТРОЙКИ (под-панель в Pause-меню): - Слайдер «Чувствительность мыши» 0.001-0.010 (по умолчанию 0.0025). - Слайдер «Громкость» 0-100% — связан с AudioServer Bus 0 Master через linear_to_db (audio ассетов пока нет, но шкала рабочая). - Кнопки Назад / Применить. Применить пишет в user://settings.json. - settings.json грузится автоматически при старте GameState._ready. SAVE/LOAD: - GameState.save_game(scene_path) → user://save01.json в JSON с player_name, прогрессом актов 1-2, ачивками, текущей сценой. - GameState.load_game() читает и восстанавливает state, заполняет last_scene_path для перехода. - has_save() / delete_save() помощники. - Кнопка «Продолжить» в главном меню активна только если есть save и грузит игрока в сохранённую сцену. - Кнопка «Новая игра» удаляет старый save и сбрасывает state. AUTO-SAVE: - При закрытии окна через X (NOTIFICATION_WM_CLOSE_REQUEST) — save_game перед quit. - Кнопка Q в FPV-контроллере — save+quit. - Кнопка «Сохранить и выйти» в pause-меню — save+quit. - Кнопка «В главное меню» — save перед переходом. FPV-КОНТРОЛЛЕР: - mouse_sensitivity больше не локальное @export, читается из GameState.mouse_sensitivity каждый mouse_motion event (применяется живьём после Apply). - _input → _unhandled_input чтобы PauseMenu мог перехватить ESC через set_input_as_handled. - Убран ESC-toggle захвата мыши (теперь это делает PauseMenu). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:28:58 +03:00
func _on_continue() -> void:
if not GameState.load_game():
return
var target: String = GameState.last_scene_path
if target == "" or not ResourceLoader.exists(target):
target = SceneManager.SCENE_ACT1_ROOM
SceneManager.change_scene(target)
fix: установка пустая, отец в стену, нет меню ФИКС АКТА 2 (главный баг): - CenterContainer/WelcomeScreen/FourSquares имели anchor_right=1.0 + offset_right=640 → элементы уезжали ЗА пределы экрана (далеко на восток). Установочное окно было невидно. Заменил на anchors_preset=15 (full rect) без offset, теперь Center правильно центрирует Window. - PanelContainer без StyleBox = прозрачный. Добавлены 3 StyleBoxFlat (style_window — основное окно с рамкой, style_titlebar — тёмный header с жёлтым заголовком, style_panel — для вложенных панелей). Окно установки теперь видимо как настоящее Шиндовс-окно. - Body теперь без scroll_active (fit_content), Buttons с min_size 110×28 — кнопки чётко видны. ОТЕЦ: - Шёл на ЗАПАД (position.x - 2.5 = -0.8) в стену, а дверь на ВОСТОКЕ. Меняю на +1.0 (восток к двери при x=2.05). - _walk_father_out: сначала поворот корпуса 0.3 сек к двери (rotation:y = -PI/2), потом 1.4 сек шагание: * движение position:x на восток * абс(sin) bob тела на 0.04м (4 шага) * sin качание ног (LegL/LegR) и рук (ArmL/ArmR) в противофазе с амплитудой 0.4/0.24 радиан - Теперь отец действительно идёт к двери с шагающей походкой. ГЛАВНОЕ МЕНЮ (чего не хватало): - scenes/main_menu.tscn: тёмный фон с виньетками, заголовок жёлтым акцентом, 4 кнопки (Новая игра / Продолжить / Настройки / Выйти), StyleBoxFlat для кнопок. - main_menu.gd: ESC = Quit, кнопка «Новая игра» → SceneManager.go_room(), GameState.reset() при входе в меню. - project.godot main_scene = main_menu.tscn (было act1_room). - SceneManager + go_main() метод. HUD UX: - set_date_time("","") теперь прячет лейбл (раньше показывал "· "). В меню HUD скрыт полностью. - В Акте 1 и кухне при _ready восстанавливается crosshair + controls_hint (которые меню скрывает). ЧЕГО ВСЁ ЕЩЁ НЕ ХВАТАЕТ (для следующих сессий): - Звуки/SFX (шаги, клики, sfxr-эффекты, дверь) - Pause-меню по ESC во время геймплея - Save/load система (сейчас всё сбрасывается) - Анимация перехода между сценами (fade-in/out) - Реальные ассеты (CC0 модели мебели/персонажей) - Музыка/амбиент (CC0 трек комнаты) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 18:23:05 +03:00
func _on_quit() -> void:
get_tree().quit()
func _input(event: InputEvent) -> void:
if event is InputEventKey and event.pressed and event.keycode == KEY_ESCAPE:
get_tree().quit()