808c2a5349
Три места, где нажатие раньше не работало или работало наполовину. FADE. fade_run() был замкнутым циклом на 2,13 с без опроса клавиш, а на стыке экранов их два: пропуск работал внутри сценария, но не между его шагами, и заставка ощущалась невыключаемой. Добавлены прерываемые варианты (pop_ui_fade_*_skip, обёртки в pop_pal) — отдельными функциями, а не флагом в прежних: в меню паузы и на переходе уровня прерывать нечего, и менять там поведение молча не следует. Прерванный fade всё равно доводит палитру до конца, экран не остаётся на промежуточной ступени. Подключено в интерпретаторе сценария, сцене с принцессой, четырёх катсценах cut_*, титрах и таблице рекордов. ПРОЯВЛЕНИЕ ПОЛОСАМИ. pop_screen_present_ltr() была void и нажатие ГЛОТАЛА: полосы схлопывались, картинка появлялась целиком — и всё, вызывающий о нажатии не узнавал. На заставке это выглядело как «клавиша срабатывает наполовину». Теперь возвращает признак прерывания, и он проброшен по маршруту: первый экран истории, титры финала, логотип между «свадьбой» и титрами. Везде считается КРОМКА нажатия от входа, как в сценах: клавиша, которой закончили предыдущий экран, ещё зажата, и принимать её за новое нажатие нельзя — иначе весь маршрут заставки схлопывался бы сам собой. F10 — НЕМЕДЛЕННЫЙ ВЫХОД, откуда угодно. Проверка стоит в kbd_idle(), а этот хук висит на gfx_wait_vsync, то есть вызывается везде, где программа ждёт кадр: заставка, титры, fade, проявление полосами, меню, игра. Одна точка вместо десятка по циклам ожидания. Флаг pop_quit_req резидентный — взводится и читается без трамплина из любого банка. Проверка в НАЧАЛЕ витка автомата обязательна: заставку прерывает любая клавиша, и без неё F10 успевал уронить программу в загрузку уровня перед закрытием. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
1.7 KiB
Plaintext
59 lines
1.7 KiB
Plaintext
* Left: turn or run left
|
|
* Right: turn or run right
|
|
* Up: jump or climb up
|
|
* Down: crouch or climb down
|
|
* Down+Left/Right: hop
|
|
* Shift: pick up things
|
|
* Shift+Left/Right: careful step
|
|
* Home or Up+Left: jump left
|
|
* Page Up or Up+Right: jump right
|
|
* Up while running: running jump
|
|
* Shift while falling: grab onto ledge
|
|
|
|
* Left/Right: walk (advance or retreat)
|
|
* Shift: strike (attack)
|
|
* Up: block (defend)
|
|
* Down: put sword away; press Shift to draw your sword again.
|
|
|
|
===
|
|
|
|
* Esc: Pause game.
|
|
* Space: Show how much time is left.
|
|
* Ctrl+A: Restart level.
|
|
|
|
* Ctrl+R: Return to intro.
|
|
* Ctrl+S: Sound on/off.
|
|
* Ctrl+M: Music on/off.
|
|
* Ctrl+V: Show version of SprPoP.
|
|
* Ctrl+Q / F10: Quit game.
|
|
|
|
* F6: Quicksave: Save the exact state of the game.
|
|
* F9: Quickload: Load what the last quicksave saved.
|
|
* F12: Save a screenshot to the screenshots folder (optional - можно пока не делать).
|
|
* Backspace: Display the in-game menu. (Esc will also display the menu by default, but you can turn that off.)
|
|
|
|
* Shift+L: Go to next level.
|
|
* -: Decrease remaining time by one minute.
|
|
* +: Increase remaining time by one minute.
|
|
* R: Resurrect kid.
|
|
* K: Kill guard.
|
|
* Shift+I: Flip the screen upside down.
|
|
* Shift+W: Slow falling.
|
|
* Shift+S: Restore a lost hit-point. (Like a small red potion.)
|
|
* Shift+T: Give more hit-points. (Like a big red potion.)
|
|
|
|
===
|
|
|
|
* H: Look at the room to the left.
|
|
* J: Look at the room to the right.
|
|
* U: Look at the room above.
|
|
* N: Look at the room below.
|
|
* Ctrl+B: Go back to the room where the prince is. (Undo H,J,U,N.)
|
|
|
|
===
|
|
|
|
* [: Shift kid 1 pixel to the left.
|
|
* ]: Shift kid 1 pixel to the right.
|
|
* T: Toggle display of timer (remaining minutes:seconds).
|
|
|