@vnejs/docs 0.2.42 → 0.2.44
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/CHANGELOG.md +11 -0
- package/package.json +1 -1
- package/plugins/canvas/bg.md +6 -0
- package/plugins/core/stack.md +21 -21
- package/plugins/save/quick.md +44 -0
- package/plugins/views.screens/gamemenu.md +15 -11
- package/plugins/views.screens/settings.md +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
|
|
4
4
|
|
|
5
|
+
## 0.2.43
|
|
6
|
+
|
|
7
|
+
- `core/stack` — `STACK.EMIT` (`$ stack jump` / `call`) ждёт завершения `MEMORY.CLEAR` перед возвратом, чтобы первая строка нового лейбла не гонялась с `CLEARED`.
|
|
8
|
+
- `canvas/bg` — `$ <layer>.bg change … <duration>`: `transition` → `waitRerender` → смена `src` (как `sprite.move`); bg-`Image` с `isSwitchDisabled` (overlays не slideshow).
|
|
9
|
+
- `uis.react` Image — `transition` как у Cursor (`background-image` + `opacity`); switcher не крутит кадры без `duration` и при `isAllSrcRendered`; `isAllSrcRendered` пишет слои в `--vne-image-src`, не в inline `backgroundImage`.
|
|
10
|
+
- `module.layer` — `updateChildren` ждёт `updateStateAndViewFast` до `waitTimeout`.
|
|
11
|
+
- `save/quick` — слот быстрого сохранения (`SAVE_QUICK`): `MAKE` / `LOAD` / `PRELOAD`; `CONST.SAVE_QUICK.SAVE_GROUP` (`"quick"`); `shared.hasQuickSave`.
|
|
12
|
+
- `views.screens/gamemenu` — пункты через `GameMenuItemFactory[]`; `EVENTS.GAMEMENU.ITEMS`; `isDisabled` / `isHided` (вместо `disabled` / `hided`). API: `GameMenuItemFactory`, `EVENTS.GAMEMENU.ITEMS`, `GameMenuItem.isDisabled` / `isHided`.
|
|
13
|
+
- `views.screens/settings.defaults` — hover у кнопки Accept: `PARAMS.SETTINGS_DEFAULT_VIEW.VIEW_PROPS.accept.isHoverable` (`true`).
|
|
14
|
+
- `views.screens/settings` — на `TAB_SET` сначала `UPDATE_FAST` (chrome), потом `SETTINGS_VIEW.TAB_SET` (контент).
|
|
15
|
+
|
|
5
16
|
## 0.2.42
|
|
6
17
|
|
|
7
18
|
- `cli/tools` resize image — флаг `-d` / `--desktop` (webp quality 90); `--web` → 80; без флагов → 100. API: `--desktop`.
|
package/package.json
CHANGED
package/plugins/canvas/bg.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
Показ, скрытие, смена и preload изображений на canvas-слоях.
|
|
6
6
|
|
|
7
|
+
## SHOW vs CHANGE
|
|
8
|
+
|
|
9
|
+
- **`SHOW`** — новый child (часто fade через `opacity`), старые при необходимости снимаются.
|
|
10
|
+
- **`CHANGE`** — смена `src` у уже существующего child. При `duration > 0`: `transition` → `waitRerender` → смена `src` (как `sprite.move`), без opacity-кроссфейда `SHOW`.
|
|
11
|
+
- Bg-`Image` всегда с `isSwitchDisabled` — overlay-массив `src` не крутится как slideshow-кадры.
|
|
12
|
+
|
|
7
13
|
## Overlays
|
|
8
14
|
|
|
9
15
|
В args сценария / событий поле `overlays?: Record<string, string>` задаёт слои поверх базового `{name}/index`: каждый ключ `key → value` резолвится в медиа `{name}/{key}/{value}`.
|
package/plugins/core/stack.md
CHANGED
|
@@ -6,17 +6,17 @@
|
|
|
6
6
|
|
|
7
7
|
## События
|
|
8
8
|
|
|
9
|
-
| Ключ
|
|
10
|
-
|
|
|
11
|
-
| `EMIT`
|
|
12
|
-
| `POP`
|
|
13
|
-
| `CLEAR`
|
|
14
|
-
| `JUMP`
|
|
15
|
-
| `CALL`
|
|
16
|
-
| `EXEC_ARG`
|
|
17
|
-
| `PROHIBIT_REPLACE` | `vne:stack:prohibit_replace` | Цепочка `ModuleReplace`: можно ли идти на `label`. Payload: `{ label?, isProhibited? }`. Старт `isProhibited: false`. Возврат — итоговое `isProhibited`.
|
|
18
|
-
| `PROHIBIT_REPLACE_REG` | `vne:stack:prohibit_replace_reg` | Зарегистрировать обработчик `PROHIBIT_REPLACE`. `{ handler, priority? }`. Не блокирующий хендлер: `return isProhibited`; запрет: `return isProhibited \|\| ownCheck`.
|
|
19
|
-
| `PROHIBITED`
|
|
9
|
+
| Ключ | Строка | Смысл |
|
|
10
|
+
| ---------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| `EMIT` | `vne:stack:emit` | Перейти на метку: сброс `curLine`, clone args, preload label, **await** `MEMORY.CLEAR` (до возврата из `EMIT`). Payload: `{ label?, args? }`. Перед переходом — `PROHIBIT_REPLACE`; при запрете — `PROHIBITED`, без `LABEL_GET`. |
|
|
12
|
+
| `POP` | `vne:stack:pop` | Вернуться к предыдущей позиции в стеке или сбросить игру, если стек пуст. |
|
|
13
|
+
| `CLEAR` | `vne:stack:clear` | Сбросить глобальный state и продолжить сценарий. |
|
|
14
|
+
| `JUMP` | `vne:stack:jump` | Переход на метку без push в стек (делегирует в `EMIT`). |
|
|
15
|
+
| `CALL` | `vne:stack:call` | `PROHIBIT_REPLACE`, затем push текущей позиции и `EMIT`. При запрете — `PROHIBITED`, без push. |
|
|
16
|
+
| `EXEC_ARG` | `vne:stack:exec_arg` | По токену строки вернуть значение аргумента из верхнего frame. Payload: `{ line? }`. |
|
|
17
|
+
| `PROHIBIT_REPLACE` | `vne:stack:prohibit_replace` | Цепочка `ModuleReplace`: можно ли идти на `label`. Payload: `{ label?, isProhibited? }`. Старт `isProhibited: false`. Возврат — итоговое `isProhibited`. |
|
|
18
|
+
| `PROHIBIT_REPLACE_REG` | `vne:stack:prohibit_replace_reg` | Зарегистрировать обработчик `PROHIBIT_REPLACE`. `{ handler, priority? }`. Не блокирующий хендлер: `return isProhibited`; запрет: `return isProhibited \|\| ownCheck`. |
|
|
19
|
+
| `PROHIBITED` | `vne:stack:prohibited` | Переход запрещён. Payload: `{ label?, args?, event? }` — `event` это `JUMP` / `CALL` / `EMIT`, чтобы повторить переход. `$ stack jump/call` при запрете не делает `emitNext`. |
|
|
20
20
|
|
|
21
21
|
## Константы
|
|
22
22
|
|
|
@@ -33,17 +33,17 @@
|
|
|
33
33
|
|
|
34
34
|
## Модули
|
|
35
35
|
|
|
36
|
-
| Модуль | Зона ответственности
|
|
37
|
-
| --------------- |
|
|
38
|
-
| `stack` | State стека; обработка `EMIT` (`PROHIBIT_REPLACE` → переход или `PROHIBITED`); sync на `STATE.SET` / `CLEAR`.
|
|
39
|
-
| `stack.call` | `PROHIBIT_REPLACE`, затем push frame + `EMIT`.
|
|
40
|
-
| `stack.jump` | Jump без сохранения.
|
|
41
|
-
| `stack.pop` | Pop frame.
|
|
42
|
-
| `stack.clear` | Clear state + next.
|
|
43
|
-
| `stack.args` | Резолв аргументов из строки сценария.
|
|
36
|
+
| Модуль | Зона ответственности |
|
|
37
|
+
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `stack` | State стека; обработка `EMIT` (`PROHIBIT_REPLACE` → переход или `PROHIBITED`); sync на `STATE.SET` / `CLEAR`. |
|
|
39
|
+
| `stack.call` | `PROHIBIT_REPLACE`, затем push frame + `EMIT`. |
|
|
40
|
+
| `stack.jump` | Jump без сохранения. |
|
|
41
|
+
| `stack.pop` | Pop frame. |
|
|
42
|
+
| `stack.clear` | Clear state + next. |
|
|
43
|
+
| `stack.args` | Резолв аргументов из строки сценария. |
|
|
44
44
|
| `stack.exec` | Регистрация `$stack` handlers в scenario (jump/call/pop + preload). На `LINE_LOAD` jump/call — `PROHIBIT_REPLACE` до `LABEL_GET`. `onLineExec`: `emitNext` только если jump/call не вернули `false` (запрет); `pop` — как раньше. |
|
|
45
|
-
| `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`.
|
|
46
|
-
| `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг).
|
|
45
|
+
| `stack.replace` | Реестр обработчиков `PROHIBIT_REPLACE_REG`; наследник `@vnejs/module.replace`; `REPLACE_KEY` — `isProhibited`. |
|
|
46
|
+
| `stack.logs` | Логирование операций стека, в т.ч. `PROHIBITED`; в `init` регистрирует хендлер `PROHIBIT_REPLACE` (пропускает флаг). |
|
|
47
47
|
|
|
48
48
|
## Близкие плагины
|
|
49
49
|
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# plugins/save/quick/
|
|
2
|
+
|
|
3
|
+
Пакет: `@vnejs/plugins.save.quick` · namespace: `SAVE_QUICK`
|
|
4
|
+
|
|
5
|
+
Ведёт слот быстрого сохранения: создание, загрузка и предзагрузка.
|
|
6
|
+
|
|
7
|
+
## События
|
|
8
|
+
|
|
9
|
+
| Ключ | Строка | Смысл |
|
|
10
|
+
| --------- | ------------------------ | ------------------------------------ |
|
|
11
|
+
| `MAKE` | `vne:save_quick:make` | Событие `MAKE` namespace плагина. |
|
|
12
|
+
| `LOAD` | `vne:save_quick:load` | Загрузить данные или ресурс. |
|
|
13
|
+
| `PRELOAD` | `vne:save_quick:preload` | Событие `PRELOAD` namespace плагина. |
|
|
14
|
+
|
|
15
|
+
## Константы
|
|
16
|
+
|
|
17
|
+
| Ключ | Смысл |
|
|
18
|
+
| ------------ | ------------------------------------------------------------------------------------------- |
|
|
19
|
+
| `SAVE_GROUP` | Storage group для слота quick (`"quick"`); доступ через `this.CONST.SAVE_QUICK.SAVE_GROUP`. |
|
|
20
|
+
|
|
21
|
+
## Параметры
|
|
22
|
+
|
|
23
|
+
Нет.
|
|
24
|
+
|
|
25
|
+
## Настройки
|
|
26
|
+
|
|
27
|
+
Нет.
|
|
28
|
+
|
|
29
|
+
## Модули
|
|
30
|
+
|
|
31
|
+
| Модуль | Зона ответственности |
|
|
32
|
+
| ------------ | ------------------------------------------------------------------- |
|
|
33
|
+
| `save.quick` | Обрабатывает MAKE, LOAD, PRELOAD; слот в `SAVE` с `group: "quick"`. |
|
|
34
|
+
|
|
35
|
+
## Близкие плагины
|
|
36
|
+
|
|
37
|
+
### plugins/core/
|
|
38
|
+
|
|
39
|
+
- [state.md](../core/state.md) — `STATE`: CONST.MIGRATE_STATUS.OK
|
|
40
|
+
|
|
41
|
+
### Остальные
|
|
42
|
+
|
|
43
|
+
- [save.md](./save.md) — `SAVE`: EVENTS.GET, EVENTS.CREATE, EVENTS.LOAD, EVENTS.PRELOAD
|
|
44
|
+
- [continue.md](./continue.md) — тот же паттерн для слота «Продолжить»
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
| -------------- | --------------------------- | -------------------------------------------------- |
|
|
11
11
|
| `SHOW` | `vne:gamemenu:show` | Показать UI или слой. |
|
|
12
12
|
| `HIDE` | `vne:gamemenu:hide` | Скрыть UI или слой. |
|
|
13
|
+
| `ITEMS` | `vne:gamemenu:items` | Резолв фабрик пунктов меню. |
|
|
13
14
|
| `CLICK` | `vne:gamemenu:click` | Событие `CLICK` namespace плагина. |
|
|
14
15
|
| `UPDATE` | `vne:gamemenu:update` | Обновить состояние или отображение. |
|
|
15
16
|
| `STATE_UPDATE` | `vne:gamemenu:state_update` | Слить partial в стейт контроллера без UPDATE view. |
|
|
@@ -22,13 +23,15 @@
|
|
|
22
23
|
|
|
23
24
|
## Параметры
|
|
24
25
|
|
|
25
|
-
| Ключ | Тип
|
|
26
|
-
| ------------ |
|
|
27
|
-
| `ITEMS` | `
|
|
28
|
-
| `TRANSITION` | `
|
|
29
|
-
| `ZINDEX` | `
|
|
30
|
-
| `LOC_LABEL` | `string`
|
|
31
|
-
| `VIEW_PROPS` | `
|
|
26
|
+
| Ключ | Тип | Смысл |
|
|
27
|
+
| ------------ | ----------------------- | ---------------------------------------------------------------- |
|
|
28
|
+
| `ITEMS` | `GameMenuItemFactory[]` | Фабрики пунктов; резолвятся на SHOW / смене языка через `ITEMS`. |
|
|
29
|
+
| `TRANSITION` | `number` | Длительность анимации (500). |
|
|
30
|
+
| `ZINDEX` | `number` | Z-index экрана (3000). |
|
|
31
|
+
| `LOC_LABEL` | `string` | Имя метки локалей (`gameMenu`). |
|
|
32
|
+
| `VIEW_PROPS` | `ViewProps` | Пропсы Screen / PositionBox / TextControls. |
|
|
33
|
+
|
|
34
|
+
Пункт (`GameMenuItem`): `locKey`, `onClick`, опционально `isDisabled` / `isHided` (как у main menu).
|
|
32
35
|
|
|
33
36
|
## Настройки
|
|
34
37
|
|
|
@@ -38,13 +41,13 @@
|
|
|
38
41
|
|
|
39
42
|
| Модуль | Зона ответственности |
|
|
40
43
|
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
41
|
-
| `gamemenu.controller` | Обрабатывает UPDATE, HIDE, SHOW, STATE_UPDATE, UPDATE_FAST, …. Пустой `controls` на `ZINDEX`, чтобы стопорить слои ниже.
|
|
42
|
-
| `gamemenu.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `ACCEPT` → `CLICK` по `
|
|
44
|
+
| `gamemenu.controller` | Обрабатывает UPDATE, HIDE, SHOW, STATE_UPDATE, UPDATE_FAST, …. Пустой `controls` на `ZINDEX`, чтобы стопорить слои ниже. Резолвит `ITEMS` → `items` / `realItems`. |
|
|
45
|
+
| `gamemenu.controller.accept` | Наследует `@vnejs/module.controller.accept`: `ACCEPT` / `INTERACT` → `ACCEPT` → `CLICK` по полному индексу пункта (через `realItems`); зеркалит `STATE_UPDATE`; PUSH/POP на SHOW/HIDE. |
|
|
43
46
|
| `gamemenu.controller.arrows` | Наследует `@vnejs/module.controller.arrows.vertical`: `ARROW_UP` / `ARROW_BOTTOM` по видимым пунктам; PUSH/POP controls на SHOW/HIDE; эмитит `STATE_UPDATE` с `{ currentArrowVerticalItem }` и `UPDATE_FAST`. |
|
|
44
47
|
| `gamemenu.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
|
|
45
48
|
| `gamemenu.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
|
|
46
|
-
| `gamemenu` |
|
|
47
|
-
| `gamemenu.view` | Подмодуль `view`
|
|
49
|
+
| `gamemenu` | `ITEMS` / `CLICK`; пропускает disabled/hided. |
|
|
50
|
+
| `gamemenu.view` | Подмодуль `view` плагина; `isDisabled` / `isNotRender` в TextControls. |
|
|
48
51
|
|
|
49
52
|
## Близкие плагины
|
|
50
53
|
|
|
@@ -56,3 +59,4 @@
|
|
|
56
59
|
### Остальные
|
|
57
60
|
|
|
58
61
|
- [controls.md](../controls/controls.md) — `CONTROLS`: CONST.BUTTONS.BACK, CONST.BUTTONS.MENU, CONST.BUTTONS.GAMEMENU, CONST.BUTTONS.ACCEPT, CONST.BUTTONS.INTERACT, CONST.BUTTONS.ARROW_UP, CONST.BUTTONS.ARROW_BOTTOM
|
|
62
|
+
- [mainmenu.md](./mainmenu.md) — тот же паттерн фабрик пунктов
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
| `TAB_SET` | `vne:settings_screen_view:tab_set` | Выбрать вкладку по ключу из `PARAMS.SETTINGS_VIEW.TABS` (`{ tab: string }`). |
|
|
18
18
|
| `STATE_UPDATE` | `vne:settings_screen_view:state_update` | Слить partial в стейт (в т.ч. `{ tab }` из tabs-модуля). |
|
|
19
19
|
|
|
20
|
-
На `SHOW_BEFORE` fields-модуль эмитит `SETTINGS_VIEW.SHOW` с `{ tab, tabs, tabKey, locs }`; на `TAB_SET` экрана tabs-модуль шлёт `STATE_UPDATE` `{ tab }`, `SETTINGS_VIEW.TAB_SET`
|
|
20
|
+
На `SHOW_BEFORE` fields-модуль эмитит `SETTINGS_VIEW.SHOW` с `{ tab, tabs, tabKey, locs }`; на `TAB_SET` экрана tabs-модуль шлёт `STATE_UPDATE` `{ tab }`, затем `UPDATE_FAST` (chrome) и `SETTINGS_VIEW.TAB_SET` (контент); на `HIDE` — `SETTINGS_VIEW.HIDE`.
|
|
21
21
|
|
|
22
22
|
## Константы
|
|
23
23
|
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
| `settings.screen.controller.fields` | На `SHOW_BEFORE`: фильтр tabs (`showInSettings`) → `STATE_UPDATE` `{ tabs, tab }` → `SETTINGS_VIEW.SHOW`. |
|
|
48
48
|
| `settings.screen.hide.controls` | Наследует `@vnejs/module.controller.hide.on.controls`: `BACK` / `MENU` / `GAMEMENU` → `HIDE`; PUSH/POP на SHOW/HIDE. |
|
|
49
49
|
| `settings.screen.hide.state` | Наследует `@vnejs/module.controller.hide.on.state`: `STATE.SET` / `STATE.CLEAR` → `HIDE` с `{ isForce: true }`. |
|
|
50
|
-
| `settings.screen.controller.tabs` | Наследник `ModuleControllerTabs`: `TAB_SET` → `applyTab` + `onTabSet` (`SETTINGS_VIEW.TAB_SET`
|
|
50
|
+
| `settings.screen.controller.tabs` | Наследник `ModuleControllerTabs`: `TAB_SET` → `applyTab` + `onTabSet` (`UPDATE_FAST`, затем `SETTINGS_VIEW.TAB_SET`); TAB_PREV/TAB_NEXT → `TAB_SET`; `getTabKeys` по `showInSettings`. |
|
|
51
51
|
| `settings.screen.view` | Chrome экрана (Screen, tabs, cross); поля и example text — в `SETTINGS_VIEW`. |
|
|
52
52
|
|
|
53
53
|
## Близкие плагины
|