KAZIK/docs/JACKBOX.md

47 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Музыкальный автомат (Jukebox / Jackbox) в казино
## Описание
В зале казино (зона бара и лаунжа, координаты `(6.0, 20.0)`) установлен интерактивный ретро-автомат для выбора и воспроизведения фоновой музыки.
## Возможности
1. **Фоновое воспроизведение (Windows MCI)**:
- Музыка воспроизводится асинхронно в фоне через нативный API `winmm.dll` (`mciSendStringA`).
- Музыка **продолжает играть** при выходе из меню автомата обратно в 3D-зал, во время ходьбы, игры за столами (покер, блэкджек, рулетка, дурак, слоты, дартс и др.).
- При завершении трека он автоматически зацикливается (`repeat`).
2. **Интерактивный экран (`MODE_JACKBOX = 28`)**:
- Отрисовывается на базе текстуры `assets/animations/hall/jackbox-ui-v1.bin` (640×480 BGRA).
- Отображает текущий статус («СЕЙЧАС ИГРАЕТ: <Трек>» или «МУЗЫКА ВЫКЛЮЧЕНА»).
- Список из 10 позиций с подсветкой текущего выбора `> ` и индикатором `[ИГРАЕТ]`.
3. **Управление**:
- `Стрелки Вверх / Вниз` или `W / S`: выбор трека в списке.
- `Enter` / `Пробел`: включить выбранный трек.
- `1`–`9`: мгновенный запуск соответствующего трека по номеру.
- `0`: выключить музыку (тишина).
- `S`: остановить воспроизведение.
- `R`: воспроизвести случайный трек.
- `Esc` / `E` / Клик по кнопке «ВЫХОД»: вернуться в 3D-зал.
- `Клик мыши` по строке трека: мгновенный выбор и запуск.
4. **Физическая 3D-модель в зале**:
- Габариты: ширина 0.7м, глубина 0.45м, высота 1.85м.
- Материал 161 (фасад `Jackbox_front.jpg`), материал 162 (боковины `Jackbox_side.jpg`), верхняя крышка (110).
- Коллизия: игрок не может пройти сквозь автомат (`JackboxCanWalk3D`).
## Плейлист
| № | Исполнитель и трек | Формат |
|---|---|---|
| 1 | Keygen Church — Tenebre Rosso Sangue (ULTRAKILL OST) | MP3 |
| 2 | Keygen Church — Hareklavit | MP3 |
| 3 | Keygen Church — Ladikerfos | MP3 |
| 4 | Keygen Church — Tilaskarot | MP3 |
| 5 | Mick Gordon — BFG Division (DOOM) | MP3 |
| 6 | Mick Gordon — Rip & Tear (DOOM) | MP3 |
| 7 | Mick Gordon — The Only Thing They Fear Is You (DOOM Eternal) | MP3 |
| 8 | Hakari Dance (Jackpot Win Theme) | WAV |
| 9 | Team Fortress 2 — Victory Anthem | WAV |
| 0 | *[ ВЫКЛЮЧИТЬ МУЗЫКУ / ТИШИНА ]* | — |
## Файлы реализации
- `src_graphics/jackbox_data.inc`: структуры, таблицы команд MCI, пути, CP1251 строки.
- `src_graphics/jackbox.inc`: загрузка ассетов, 3D-кабинет, коллизии, аудио-контроллер, ввод и рендеринг GUI.
- `tools/generators/pack_jackbox.py`: оффлайн-компилятор текстур из `assets/sprites/jackbox/` в бинарные контейнеры `ANM1`.
- `tools/tests/check_jackbox.py`: тестовый набор верификации ассетов, аудио-файлов и бинарника.