@vnejs/docs 0.2.5 → 0.2.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/architecture.md +6 -3
- package/package.json +1 -1
- package/plugins/controls/gamepad.md +42 -0
- package/plugins/core/scenario.md +1 -1
package/architecture.md
CHANGED
|
@@ -101,7 +101,7 @@ flowchart BT
|
|
|
101
101
|
|-------|------------|
|
|
102
102
|
| **`@vnejs/shared`** | Реестр **`VNE`**, массив **`VNE_MODULES`**, **`regPlugin`** / **`regModule`**, типы для module augmentation |
|
|
103
103
|
| **`@vnejs/observer`** | **`Observer`** — pub/sub: `subscribe`, `emit`, `emitOne`, `emitReal`, `emitReals` |
|
|
104
|
-
| **`@vnejs/core`** | **`VneCore`**: модули из `VNE_MODULES`, lifecycle, загрузка `mods.json` /
|
|
104
|
+
| **`@vnejs/core`** | **`VneCore`**: модули из `VNE_MODULES`, lifecycle, загрузка `mods.json` / `media_info/`, `reset` |
|
|
105
105
|
| **`@vnejs/constants`** | Общие константы-заглушки (`EMPTY_OBJECT`, `EMPTY_ARRAY`) |
|
|
106
106
|
| **`@vnejs/sources-set`** | **`SourcesSet`** — управление множеством «источников» (text и связанная логика) |
|
|
107
107
|
| **`@vnejs/semaphore`** | **`Semaphore`** — очередь задач с весами и ограничением параллелизма |
|
|
@@ -397,6 +397,9 @@ games/<name>/
|
|
|
397
397
|
├── game/<mod>/ # scenario (.vne), scripts, media, public
|
|
398
398
|
├── desktop/ # Electron dev/prod
|
|
399
399
|
├── dist/ # JSON + JS после сборки
|
|
400
|
+
│ ├── mods.json
|
|
401
|
+
│ ├── label/ # label/<path>.json (например label/prologue/1.json)
|
|
402
|
+
│ └── media_info/ # media_info/<mod>.json (не путать с /media/ ассетов)
|
|
400
403
|
└── package.json
|
|
401
404
|
```
|
|
402
405
|
|
|
@@ -404,7 +407,7 @@ games/<name>/
|
|
|
404
407
|
flowchart LR
|
|
405
408
|
SC["game/**/*.vne"]
|
|
406
409
|
DATA["build data"]
|
|
407
|
-
JSON["dist
|
|
410
|
+
JSON["dist mods.json label/ media_info/"]
|
|
408
411
|
ENTRY["entry/index.ts"]
|
|
409
412
|
CLIENT["build client"]
|
|
410
413
|
DIST["dist/"]
|
|
@@ -417,7 +420,7 @@ flowchart LR
|
|
|
417
420
|
SRV --> RUN
|
|
418
421
|
```
|
|
419
422
|
|
|
420
|
-
1. **`build:data`** — JSON для **`VneCore.init()
|
|
423
|
+
1. **`build:data`** — JSON для **`VneCore.init()`**: `mods.json`, `label/<path>.json`, `media_info/<mod>.json`.
|
|
421
424
|
2. **`build:client`** — Vite + `bundles/`.
|
|
422
425
|
3. **`entry/`** — `new VneCore()`, `await init()`.
|
|
423
426
|
|
package/package.json
CHANGED
|
@@ -20,6 +20,48 @@
|
|
|
20
20
|
|
|
21
21
|
Нет.
|
|
22
22
|
|
|
23
|
+
## Маппинг кнопок (W3C / Xbox standard)
|
|
24
|
+
|
|
25
|
+
После того как joypad выдаёт логическое имя `button_N`, плагин эмитит ключи в `CONTROLS.EMIT`:
|
|
26
|
+
|
|
27
|
+
| joypad | Физическая (standard) | Абстрактный control |
|
|
28
|
+
|--------|----------------------|---------------------|
|
|
29
|
+
| `button_0` | A / Cross (низ) | `ACCEPT` |
|
|
30
|
+
| `button_1` | B / Circle (право) | `BACK` |
|
|
31
|
+
| `button_2` | X / Square (лево) | `INTERACT` |
|
|
32
|
+
| `button_3` | Y / Triangle (верх) | `MENU` |
|
|
33
|
+
| `button_4` | LB / L1 | `TAB_PREV` |
|
|
34
|
+
| `button_5` | RB / R1 | `TAB_NEXT` |
|
|
35
|
+
| `button_6` | LT / L2 | `FASTFORWARD_START` / `FASTFORWARD_FINISH` |
|
|
36
|
+
| `button_7` | RT / R2 | (cursor click через compatibility) |
|
|
37
|
+
| `button_8` | View / Select | `GAMEMENU` |
|
|
38
|
+
| `button_9` | Menu / Start | `MENU` |
|
|
39
|
+
| `button_12`…`15` | D-pad | `ARROW_*` |
|
|
40
|
+
|
|
41
|
+
## Профили
|
|
42
|
+
|
|
43
|
+
На `joypad` `connect` выбирается профиль и, при необходимости, вызывается `joypad.set({ customButtonMapping })`.
|
|
44
|
+
|
|
45
|
+
Приоритет: `steam-deck` → `playstation` → `nintendo` → `firefox` → `standard`.
|
|
46
|
+
|
|
47
|
+
| Профиль | Когда | Что делает |
|
|
48
|
+
|---------|-------|------------|
|
|
49
|
+
| `standard` | по умолчанию | identity (сырой индекс = logical `button_N`) |
|
|
50
|
+
| `steam-deck` | `mapping !== "standard"` и id Deck/Steam (`steam deck` / `valve` / `jupiter` / `28de`) | raw HID Deck → W3C |
|
|
51
|
+
| `playstation` | `mapping !== "standard"` и id PS (`dualsense` / `dualshock` / `054c` / …) | raw Square-first layout → W3C |
|
|
52
|
+
| `nintendo` | id Nintendo/Switch (`nintendo` / `switch` / `057e` / …), в т.ч. при `standard` | A/B и X/Y под Nintendo confirm |
|
|
53
|
+
| `firefox` | Firefox UA и не сработал device-профиль | индексы из доки joypad.js |
|
|
54
|
+
|
|
55
|
+
Если Steam Input / браузер отдаёт корректный `STANDARD GAMEPAD` для Xbox/PS — обычно остаётся `standard` (для PS при `mapping === "standard"` playstation-профиль не включается).
|
|
56
|
+
|
|
57
|
+
Все маппинги — объект `CUSTOM_BUTTON_MAPPING` в `plugins/controls/gamepad/src/profiles/custom-button-mapping.ts`:
|
|
58
|
+
|
|
59
|
+
- `CUSTOM_BUTTON_MAPPING.STANDARD` — `null` (identity)
|
|
60
|
+
- `CUSTOM_BUTTON_MAPPING.STEAM_DECK` — A→7, B→5, X→6, Y→4, LB→3, RB→2, LT→1, RT→0, Select→12, Start→14, D-pad → 8/11/10/9
|
|
61
|
+
- `CUSTOM_BUTTON_MAPPING.PLAYSTATION` — Cross←1, Circle←2, Square←0, Triangle←3; L1…R3 → 4…11
|
|
62
|
+
- `CUSTOM_BUTTON_MAPPING.NINTENDO` — ACCEPT←1 (A), BACK←0 (B), INTERACT←3 (X), MENU←2 (Y)
|
|
63
|
+
- `CUSTOM_BUTTON_MAPPING.FIREFOX` — `button_0`←1, `button_7`←11, `button_8`←12
|
|
64
|
+
|
|
23
65
|
## Модули
|
|
24
66
|
|
|
25
67
|
| Модуль | Зона ответственности |
|
package/plugins/core/scenario.md
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
| `scenario.exec` | Dispatch `$module` / `%block`, registry handlers, `EXEC_DELAY`. |
|
|
51
51
|
| `scenario.label` | `LABEL_GET`, preload меток; init label на `STATE.CLEAR`. |
|
|
52
52
|
| `scenario.line` | `LINE_LOAD` / `LINE_GET`, registry preload handlers. |
|
|
53
|
-
| `scenario.lines` | Fetch `label
|
|
53
|
+
| `scenario.lines` | Fetch `label/<path>.json` с `HOST` (например `label/prologue/1.json`). |
|
|
54
54
|
|
|
55
55
|
## Близкие плагины
|
|
56
56
|
|