47 lines
3.8 KiB
Markdown
47 lines
3.8 KiB
Markdown
# Музыкальный автомат (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`: тестовый набор верификации ассетов, аудио-файлов и бинарника.
|