@vnejs/docs 0.2.38 → 0.2.40
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 +24 -0
- package/package.json +1 -1
- package/plugins/ai/checkers.md +5 -3
- package/plugins/common/grid.md +39 -0
- package/plugins/common/turn.md +33 -0
- package/plugins/game/checkers.md +39 -28
- package/plugins/scenario/point_and_click.md +8 -6
- package/plugins/views.scenario/point_and_click.md +10 -10
- package/plugins/views.screens/checkers.md +17 -9
- package/scenario.catalog/stubs/point-and-click.block.md +3 -1
- package/scenario.catalog/stubs/point-and-click.option.md +7 -3
- package/scenario.guide/point-and-click.md +13 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,30 @@
|
|
|
2
2
|
|
|
3
3
|
Краткая история изменений движка (плагины, helpers, packages, CLI и прочий runtime) и внешнего API. Версии — релизы пакета `@vnejs/docs`.
|
|
4
4
|
|
|
5
|
+
## 0.2.40
|
|
6
|
+
|
|
7
|
+
- `uis.react` Cursor — дефолтный `size` 180 (было 120); дефолтный `transition` 300 (было 500).
|
|
8
|
+
- `scenario/point_and_click` — `% point-and-click.option {icon} {iconHover} x y` (hover-иконка обязательна); опционально args `imgWidth` / `imgHeight` (px canvas). API: `PointAndClickOption.iconHover`, `imgWidth`, `imgHeight`.
|
|
9
|
+
- `views.scenario/point_and_click` — загрузка `iconHoverSrc`; hover swap на hotspot; размер через `imgWidth` / `imgHeight`; `PARAMS.POINT_AND_CLICK_VIEW.TRANSITION` (300) → `Image.transition` для анимации hover.
|
|
10
|
+
- `uis.react` Image — prop `srcHover` (CSS swap на `[vne-cursor-target]`, как у Icon).
|
|
11
|
+
|
|
12
|
+
## 0.2.39
|
|
13
|
+
|
|
14
|
+
- `game/checkers` — пресеты `FLIPPED` (белые сверху / чёрные снизу, все дамки) и `RANDOM` (12+12 на случайных тёмных клетках; на каждый `SHOW` новый расклад). API: `PARAMS.CHECKERS.PRESETS.FLIPPED` / `RANDOM`, `createFlippedPreset`, `createRandomPreset`.
|
|
15
|
+
- `games/checkers` — `% choose` «Партия»: 6 вариантов (COMMON / FLIPPED / RANDOM × первые ходят белые / чёрные) → `$ checkers show` с args.
|
|
16
|
+
- `game/checkers` — `$ checkers show` берёт `initialOwner` / `initialPreset` из indent-args (`initialOwner: black`, `initialPreset: COMMON`), не из позиционных токенов.
|
|
17
|
+
- `game/checkers` — `PARAMS.CHECKERS.PRESETS` (`COMMON` = стандартный старт); `SHOW.initialPreset` → cells из пресета (нет / неизвестный → `COMMON`). API: `PARAMS.CHECKERS.PRESETS`, `CheckersShowPayload.initialPreset`, `createCommonPreset`.
|
|
18
|
+
- `game/checkers` — `EVENTS.CHECKERS.SHOW` payload `CheckersShowPayload` `{ initialOwner?, initialPreset? }`; без / невалидный `initialOwner` → белые. API: `CheckersShowPayload`.
|
|
19
|
+
- `game/checkers` — `EVENTS.CHECKERS.SET` / `UNSET` (`vne:checkers:set` / `unset`): `{ cells, owner }` → `GRID.SET` + `TURNS.SET` (id / rows / columns из `GRID_ID` / `TURN_ID` / `PARAMS`); `UNSET` → `GRID.UNSET` + `TURNS.UNSET`. Модуль `checkers.set`. Call-sites: `SHOW` / `MOVE_PLAY` → `SET`, `HIDE` → `UNSET`.
|
|
20
|
+
- `common/grid` — плагин квадратной сетки `@vnejs/plugins.common.grid` (`PLUGIN_NAME` `GRID`). API: `EVENTS.GRID.SET` / `GET` / `UNSET` / `CHANGED` / `PUT` / `MOVE` / `REMOVE` (`vne:grid:*`); элемент — объект с `id`; state — map `id → { rows, columns, cells }` (плотная `(item \| null)[][]`). `STATE.SET` / `CLEAR` диффят через `SET` / `UNSET`.
|
|
21
|
+
- `game/checkers` — доска через `GRID.*` вместо `BOARD_CHANGE` / `BOARD_CHANGED` / `BOARD_GET`; модуль `checkers.board` удалён. API: `CONST.CHECKERS.GRID_ID` (`"checkers"`); `SHOW` → `GRID.SET` + `TURNS.SET`; `HIDE` → `GRID.UNSET` + `TURNS.UNSET`; `MOVE_PLAY` читает `GRID.GET`, пишет `GRID.SET`.
|
|
22
|
+
- `views.screens/checkers` / `ai/checkers` — `board` с `GRID.CHANGED` / `UNSET` (`cells`, фильтр `GRID_ID`).
|
|
23
|
+
- `bundles/checkers` — импорт `@vnejs/plugins.common.grid`.
|
|
24
|
+
- `common/turn` — плагин хода `@vnejs/plugins.common.turn` (`PLUGIN_NAME` `TURNS`). API: `EVENTS.TURNS.SET` / `GET` / `UNSET` / `CHANGED` (`vne:turns:*`); payload `{ id, owner }` (`UNSET` — `{ id }`); state — map `id → owner` (параллельные партии). `STATE.SET` / `CLEAR` диффят map через `SET` / `UNSET`.
|
|
25
|
+
- `game/checkers` — `turn` / `winner` убраны из state и `BOARD_CHANGE` / `BOARD_CHANGED` / `BOARD_GET`; ход через `TURNS.*`; победа через `FINISH` `{ winner }` (`CheckersFinishPayload`). API: `CONST.CHECKERS.TURN_ID` (`"checkers"`); `CONST.CHECKERS.COLORS` / `COLOR_VALUES` (бывшие `AI_COLORS` / `AI_COLOR_VALUES`); тип `CheckersColor` (бывший `CheckersAiColor`).
|
|
26
|
+
- `views.screens/checkers` / `ai/checkers` — `turn` с `TURNS.CHANGED` / `UNSET`; `winner` с `CHECKERS.FINISH` / сброс на `SHOW`; `BOARD_CHANGED` / `STATE_UPDATE` только `board`. View: `checkers_view.status` (status text).
|
|
27
|
+
- `bundles/checkers` — импорт `@vnejs/plugins.common.turn`.
|
|
28
|
+
|
|
5
29
|
## 0.2.38
|
|
6
30
|
|
|
7
31
|
- `ai/checkers` — ключи алгоритмов с префиксом домена: `CONST.CHECKERS_AI.AI_TYPES` → `checkers:sacrifice` / `checkers:random` / `checkers:strong` (вместо `sacrifice` / `random` / `strong`). `$ checkers.ai set <color> checkers:strong`.
|
package/package.json
CHANGED
package/plugins/ai/checkers.md
CHANGED
|
@@ -12,7 +12,7 @@ AI-оркестрация русских шашек: конфиг сторон,
|
|
|
12
12
|
| `SET` | `vne:checkers_ai:set` | `$ checkers.ai set`: `{ color, type }`. |
|
|
13
13
|
| `UNSET` | `vne:checkers_ai:unset` | `$ checkers.ai unset <color>`. |
|
|
14
14
|
|
|
15
|
-
Слушает `CHECKERS.START` → `INTERACT`; `CHECKERS.MOVE_PLAYED` → unlock + `INTERACT`.
|
|
15
|
+
Слушает `CHECKERS.START` → `INTERACT`; `CHECKERS.MOVE_PLAYED` → unlock + `INTERACT`. Сторона хода — с `TURNS.CHANGED` / `TURNS.UNSET`; победитель — с `CHECKERS.FINISH` / сброс на `SHOW`; `board` — с `GRID.CHANGED` / `GRID.UNSET` (`cells`, фильтр `CONST.CHECKERS.GRID_ID`).
|
|
16
16
|
|
|
17
17
|
## Константы / Shared / Params
|
|
18
18
|
|
|
@@ -25,7 +25,7 @@ AI-оркестрация русских шашек: конфиг сторон,
|
|
|
25
25
|
|
|
26
26
|
Busy-флаг пишется в `shared.checkersInteractDisableSources` (владелец — `CHECKERS`).
|
|
27
27
|
|
|
28
|
-
Цвета сторон (`CONST.CHECKERS.
|
|
28
|
+
Цвета сторон (`CONST.CHECKERS.COLORS`) — в контракте game.
|
|
29
29
|
|
|
30
30
|
При загрузке контракта в `PARAMS.AI.ALGORITHMS` регистрируются `checkers:sacrifice` / `checkers:random` / `checkers:strong` (мутация как у `SCALE_MANA` → `PARAMS.SCALES.TYPES`).
|
|
31
31
|
|
|
@@ -47,10 +47,12 @@ $ checkers.ai set black player
|
|
|
47
47
|
|
|
48
48
|
## Бандл
|
|
49
49
|
|
|
50
|
-
`@vnejs/bundles.checkers` — `plugins.ai` + `plugins.ai.checkers` + `plugins.game.checkers` + `plugins.views.screens.checkers`.
|
|
50
|
+
`@vnejs/bundles.checkers` — `plugins.common.grid` + `plugins.common.turn` + `plugins.ai` + `plugins.ai.checkers` + `plugins.game.checkers` + `plugins.views.screens.checkers`.
|
|
51
51
|
|
|
52
52
|
## Близкие плагины
|
|
53
53
|
|
|
54
|
+
- [common/grid.md](../common/grid.md) — `GRID` (доска)
|
|
55
|
+
- [common/turn.md](../common/turn.md) — `TURNS` (`id` / `owner`)
|
|
54
56
|
- [ai/ai.md](./ai.md) — `EVENTS.AI.EMIT` / `PARAMS.AI.ALGORITHMS`
|
|
55
57
|
- [game/checkers.md](../game/checkers.md) — правила, `START` / `MOVE_PLAYED`
|
|
56
58
|
- [views.screens/checkers.md](../views.screens/checkers.md) — UI, gate по `SourcesSet`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# plugins/common/grid/
|
|
2
|
+
|
|
3
|
+
Пакет: `@vnejs/plugins.common.grid` · namespace: `GRID`
|
|
4
|
+
|
|
5
|
+
Хранит квадратные сетки по строковому `id` (несколько параллельных досок). Элемент клетки — любой объект с обязательным `id: string`; в одной сетке `id` уникален. Пустая клетка — `null`. Матрица — плотная `(item | null)[][]`.
|
|
6
|
+
|
|
7
|
+
Не путать с UI-навигацией `*.GRID_*` из `@vnejs/module.controller.arrows.grid` (фокус стрелками на экране).
|
|
8
|
+
|
|
9
|
+
## События
|
|
10
|
+
|
|
11
|
+
| Ключ | Строка | Смысл |
|
|
12
|
+
| --------- | ------------------ | ------------------------------------------------------------------------------------------------- |
|
|
13
|
+
| `SET` | `vne:grid:set` | Создать/заменить `{ id, rows, columns, cells? }`. Без `cells` — пустая матрица. Затем `CHANGED`. |
|
|
14
|
+
| `GET` | `vne:grid:get` | `emitOne({ id })` → `{ id, rows, columns, cells } \| undefined`. |
|
|
15
|
+
| `UNSET` | `vne:grid:unset` | Удалить по `{ id }`. Без `CHANGED`. |
|
|
16
|
+
| `CHANGED` | `vne:grid:changed` | Полный снимок после `SET` / `PUT` / `MOVE` / `REMOVE`. |
|
|
17
|
+
| `PUT` | `vne:grid:put` | `{ id, row, column, item }` — положить item; тот же `item.id` сначала снимается со старой клетки. |
|
|
18
|
+
| `MOVE` | `vne:grid:move` | `{ id, from, to }` — перенос; занятый `to` — замена. |
|
|
19
|
+
| `REMOVE` | `vne:grid:remove` | `{ id, row?, column?, itemId? }` — очистить по позиции или по `itemId`. |
|
|
20
|
+
|
|
21
|
+
State: map `id → { rows, columns, cells }`.
|
|
22
|
+
|
|
23
|
+
`STATE.SET` / `STATE.CLEAR` не пишут map напрямую: отсутствующие id — `UNSET`, присутствующие — `SET`.
|
|
24
|
+
|
|
25
|
+
## Константы / Params / Settings
|
|
26
|
+
|
|
27
|
+
Нет.
|
|
28
|
+
|
|
29
|
+
## Модули
|
|
30
|
+
|
|
31
|
+
| Модуль | Зона ответственности |
|
|
32
|
+
| ------ | ---------------------------------------------------------------- |
|
|
33
|
+
| `grid` | `SET` / `GET` / `UNSET` / `CHANGED` / `PUT` / `MOVE` / `REMOVE`. |
|
|
34
|
+
|
|
35
|
+
## Близкие плагины
|
|
36
|
+
|
|
37
|
+
- [game/checkers.md](../game/checkers.md) — пишет `GRID.SET` с `CONST.CHECKERS.GRID_ID`, читает через `GET`
|
|
38
|
+
- [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — зеркало через `CHANGED` / `UNSET`
|
|
39
|
+
- [common/turn.md](./turn.md) — ход стороны (отдельный map)
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# plugins/common/turn/
|
|
2
|
+
|
|
3
|
+
Пакет: `@vnejs/plugins.common.turn` · namespace: `TURNS`
|
|
4
|
+
|
|
5
|
+
Хранит текущий ход по строковому `id` (несколько параллельных партий) и `owner` (кто ходит — произвольная строка).
|
|
6
|
+
|
|
7
|
+
## События
|
|
8
|
+
|
|
9
|
+
| Ключ | Строка | Смысл |
|
|
10
|
+
| --------- | ------------------- | ----------------------------------------------------------- |
|
|
11
|
+
| `SET` | `vne:turns:set` | Записать `{ id, owner }`. Без `id` или без `owner` — no-op. |
|
|
12
|
+
| `GET` | `vne:turns:get` | `emitOne({ id })` → `owner` (`string \| undefined`). |
|
|
13
|
+
| `UNSET` | `vne:turns:unset` | Удалить запись по `{ id }`. |
|
|
14
|
+
| `CHANGED` | `vne:turns:changed` | После успешного `SET`: `{ id, owner }`. |
|
|
15
|
+
|
|
16
|
+
State: map `id → owner`.
|
|
17
|
+
|
|
18
|
+
`STATE.SET` / `STATE.CLEAR` не пишут map напрямую: для новых и изменённых id — `TURNS.SET`, для удалённых — `TURNS.UNSET`.
|
|
19
|
+
|
|
20
|
+
## Константы / Params / Settings
|
|
21
|
+
|
|
22
|
+
Нет.
|
|
23
|
+
|
|
24
|
+
## Модули
|
|
25
|
+
|
|
26
|
+
| Модуль | Зона ответственности |
|
|
27
|
+
| ------- | ------------------------------------ |
|
|
28
|
+
| `turns` | `SET` / `GET` / `UNSET` / `CHANGED`. |
|
|
29
|
+
|
|
30
|
+
## Близкие плагины
|
|
31
|
+
|
|
32
|
+
- [game/checkers.md](../game/checkers.md) — пишет `TURNS.SET` с `CONST.CHECKERS.TURN_ID`, читает через `GET`; доска — через [`common/grid`](./grid.md)
|
|
33
|
+
- [views.screens/checkers.md](../views.screens/checkers.md) / [ai/checkers.md](../ai/checkers.md) — зеркало через `CHANGED` / `UNSET`
|
package/plugins/game/checkers.md
CHANGED
|
@@ -2,58 +2,69 @@
|
|
|
2
2
|
|
|
3
3
|
Пакет: `@vnejs/plugins.game.checkers` · namespace: `CHECKERS`
|
|
4
4
|
|
|
5
|
-
Правила русских шашек и сценарные команды `$ checkers`. AI-оркестрация — в [`ai/checkers`](../ai/checkers.md) (`CHECKERS_AI`). UI — в [`views.screens/checkers`](../views.screens/checkers.md) (`CHECKERS_VIEW`).
|
|
5
|
+
Правила русских шашек и сценарные команды `$ checkers`. AI-оркестрация — в [`ai/checkers`](../ai/checkers.md) (`CHECKERS_AI`). UI — в [`views.screens/checkers`](../views.screens/checkers.md) (`CHECKERS_VIEW`). Доска — в [`common/grid`](../common/grid.md) (`GRID`). Ход стороны — в [`common/turn`](../common/turn.md) (`TURNS`).
|
|
6
6
|
|
|
7
7
|
## События
|
|
8
8
|
|
|
9
|
-
| Ключ
|
|
10
|
-
|
|
|
11
|
-
| `SHOW`
|
|
12
|
-
| `HIDE`
|
|
13
|
-
| `START`
|
|
14
|
-
| `
|
|
15
|
-
| `
|
|
16
|
-
| `
|
|
17
|
-
| `
|
|
18
|
-
| `
|
|
19
|
-
| `
|
|
20
|
-
| `
|
|
21
|
-
|
|
9
|
+
| Ключ | Строка | Смысл |
|
|
10
|
+
| -------------- | --------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| `SHOW` | `vne:checkers:show` | Старт: `SET` (`cells` + `owner`) → `START`. Payload: `{ initialOwner?, initialPreset? }`. |
|
|
12
|
+
| `HIDE` | `vne:checkers:hide` | `UNSET` + сброс busy sources. |
|
|
13
|
+
| `START` | `vne:checkers:start` | Партия готова (слушает `CHECKERS_AI` → `INTERACT`). |
|
|
14
|
+
| `SET` | `vne:checkers:set` | `{ cells, owner }` → `GRID.SET` + `TURNS.SET` (id / rows / columns из констант). |
|
|
15
|
+
| `UNSET` | `vne:checkers:unset` | `GRID.UNSET` + `TURNS.UNSET` по `GRID_ID` / `TURN_ID`. |
|
|
16
|
+
| `STATE_UPDATE` | `vne:checkers:state_update` | Патч game-стейта (без board). |
|
|
17
|
+
| `FINISH` | `vne:checkers:finish` | Конец партии: `{ winner }` → delay → `sources.clear()` + `emitNext`. |
|
|
18
|
+
| `MOVES_GET` | `vne:checkers:moves_get` | `emitOne`: `{ board, turn }` → `{ moves, hanging, safe }`. |
|
|
19
|
+
| `MOVE_PLAY` | `vne:checkers:move_play` | `emitOne`: `{ move, controllerType? }` → `boolean`; успех → `MOVE_PLAYED` или при победе `FINISH`. |
|
|
20
|
+
| `MOVE_PLAYED` | `vne:checkers:move_played` | После хода (из `MOVE_PLAY`); цикл AI — в `CHECKERS_AI`. |
|
|
21
|
+
|
|
22
|
+
`MOVE_PLAY` читает доску через `GRID.GET` и сторону через `TURNS.GET`; после хода пишет `CHECKERS.SET`. Победа — только через `FINISH` (`CheckersFinishPayload`).
|
|
22
23
|
|
|
23
24
|
## Константы / Shared / Params
|
|
24
25
|
|
|
25
|
-
| Ключ
|
|
26
|
-
|
|
|
27
|
-
| `EXEC_ACTIONS` / `
|
|
28
|
-
| `
|
|
29
|
-
| `
|
|
30
|
-
| `
|
|
26
|
+
| Ключ | Смысл |
|
|
27
|
+
| ------------------------------------------ | -------------------------------------------------------------------------- |
|
|
28
|
+
| `EXEC_ACTIONS` / `COLORS` / `COLOR_VALUES` | show/hide; white/black |
|
|
29
|
+
| `CONST.CHECKERS.TURN_ID` | `"checkers"` — id в `TURNS` |
|
|
30
|
+
| `CONST.CHECKERS.GRID_ID` | `"checkers"` — id в `GRID` |
|
|
31
|
+
| `shared.checkersInteractDisableSources` | `SourcesSet` — блок интерактива на ход AI |
|
|
32
|
+
| `PARAMS.CHECKERS.FINISH_DELAY` | пауза перед `emitNext` на `FINISH` (мс, `300`) |
|
|
33
|
+
| `PARAMS.CHECKERS.ROWS` / `COLUMNS` | `8` — размер для `GRID.SET` (внутри `SET`) |
|
|
34
|
+
| `PARAMS.CHECKERS.PRESETS` | пресеты доски: `COMMON`, `FLIPPED`, `RANDOM` (RANDOM каждый `SHOW` заново) |
|
|
31
35
|
|
|
32
36
|
## Модули
|
|
33
37
|
|
|
34
|
-
| Модуль | Зона
|
|
35
|
-
| --------------------------------------- |
|
|
36
|
-
| `checkers` | `$ checkers show/hide`
|
|
37
|
-
| `checkers.show` | SHOW
|
|
38
|
-
| `checkers.
|
|
39
|
-
| `checkers.moves` / `checkers.move.play` |
|
|
40
|
-
| `checkers.finish` | FINISH → delay + `emitNext`
|
|
38
|
+
| Модуль | Зона |
|
|
39
|
+
| --------------------------------------- | ------------------------------------------------------ |
|
|
40
|
+
| `checkers` | `$ checkers show/hide` |
|
|
41
|
+
| `checkers.show` | SHOW → `SET` + START; HIDE → `UNSET` |
|
|
42
|
+
| `checkers.set` | `SET` → `GRID`/`TURNS`; `UNSET` → `GRID`/`TURNS` UNSET |
|
|
43
|
+
| `checkers.moves` / `checkers.move.play` | ходы; `move.play` → `SET` / `FINISH` |
|
|
44
|
+
| `checkers.finish` | FINISH → delay + `emitNext` |
|
|
41
45
|
|
|
42
46
|
## Сценарий
|
|
43
47
|
|
|
44
48
|
```vne
|
|
45
49
|
$ checkers show
|
|
50
|
+
$ checkers show
|
|
51
|
+
initialOwner: black
|
|
52
|
+
initialPreset: COMMON
|
|
46
53
|
$ checkers hide
|
|
47
54
|
```
|
|
48
55
|
|
|
56
|
+
Args под `show`: `initialOwner` (`white` / `black`, иначе белые); `initialPreset` (ключ из `PARAMS.CHECKERS.PRESETS`, дефолт `COMMON`).
|
|
57
|
+
|
|
49
58
|
`$ checkers.ai` — см. [`ai/checkers`](../ai/checkers.md).
|
|
50
59
|
|
|
51
60
|
## Бандл
|
|
52
61
|
|
|
53
|
-
`@vnejs/bundles.checkers` — `plugins.game.checkers` + `plugins.ai.checkers` + `plugins.views.screens.checkers` + `plugins.ai`.
|
|
62
|
+
`@vnejs/bundles.checkers` — `plugins.common.grid` + `plugins.common.turn` + `plugins.game.checkers` + `plugins.ai.checkers` + `plugins.views.screens.checkers` + `plugins.ai`.
|
|
54
63
|
|
|
55
64
|
## Близкие плагины
|
|
56
65
|
|
|
66
|
+
- [common/grid.md](../common/grid.md) — `GRID` (доска)
|
|
67
|
+
- [common/turn.md](../common/turn.md) — `TURNS` (`id` / `owner`)
|
|
57
68
|
- [ai/checkers.md](../ai/checkers.md) — `CHECKERS_AI`
|
|
58
69
|
- [views.screens/checkers.md](../views.screens/checkers.md) — `CHECKERS_VIEW`
|
|
59
70
|
- [ai/ai.md](../ai/ai.md) — диспетчер `AI.EMIT`
|
|
@@ -6,17 +6,19 @@
|
|
|
6
6
|
|
|
7
7
|
## Сценарные команды
|
|
8
8
|
|
|
9
|
-
| Синтаксис
|
|
10
|
-
|
|
|
11
|
-
| `% point-and-click`
|
|
12
|
-
| `% point-and-click.option {icon} x y` | Hotspot; при проходе мимо невыбранного — skip тела по indent.
|
|
13
|
-
| `$ point-and-click repeat`
|
|
9
|
+
| Синтаксис | Смысл |
|
|
10
|
+
| ------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
11
|
+
| `% point-and-click` | Открыть point-and-click: собрать `% point-and-click.option`, emit `EMIT`. Если все опции `hided` (или список пуст) — `SKIP` и переход за блок. |
|
|
12
|
+
| `% point-and-click.option {icon} {iconHover} x y` | Hotspot; при проходе мимо невыбранного — skip тела по indent. Опционально args `imgWidth` / `imgHeight` (px canvas). |
|
|
13
|
+
| `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` **выше** текущей строки в том же label и `emitNext`. |
|
|
14
14
|
|
|
15
15
|
Пример цикла осмотра:
|
|
16
16
|
|
|
17
17
|
```vne
|
|
18
18
|
% point-and-click
|
|
19
|
-
% point-and-click.option {
|
|
19
|
+
% point-and-click.option {search} {search-hover} 25 25
|
|
20
|
+
imgWidth: 60
|
|
21
|
+
imgHeight: 60
|
|
20
22
|
hided: $ flag prologue_2_pac_1
|
|
21
23
|
$ flag prologue_2_pac_1
|
|
22
24
|
"…"
|
|
@@ -21,11 +21,11 @@ React-UI point-and-click (иконки-hotspot). Зависит от scenario-п
|
|
|
21
21
|
|
|
22
22
|
## Параметры
|
|
23
23
|
|
|
24
|
-
| Ключ | Тип | Смысл
|
|
25
|
-
| --------------------- | -------- |
|
|
26
|
-
| `TRANSITION` | `number` | Длительность анимации показа/скрытия (мс). |
|
|
27
|
-
| `ZINDEX` | `number` | Z-index слоя и индекс блока controls.
|
|
28
|
-
| `CONTROLS_EXTENSIONS` | `object` | Дополнительные обработчики controls.
|
|
24
|
+
| Ключ | Тип | Смысл |
|
|
25
|
+
| --------------------- | -------- | ---------------------------------------------------------------------------------------------- |
|
|
26
|
+
| `TRANSITION` | `number` | Длительность анимации показа/скрытия Screen и swap hotspot-картинки на hover (мс); дефолт 300. |
|
|
27
|
+
| `ZINDEX` | `number` | Z-index слоя и индекс блока controls. |
|
|
28
|
+
| `CONTROLS_EXTENSIONS` | `object` | Дополнительные обработчики controls. |
|
|
29
29
|
|
|
30
30
|
## Настройки
|
|
31
31
|
|
|
@@ -33,11 +33,11 @@ React-UI point-and-click (иконки-hotspot). Зависит от scenario-п
|
|
|
33
33
|
|
|
34
34
|
## Модули
|
|
35
35
|
|
|
36
|
-
| Модуль | Зона ответственности
|
|
37
|
-
| --------------------------------- |
|
|
38
|
-
| `point_and_click_view.bridge` | Bridge `POINT_AND_CLICK.SHOW/HIDE` → `POINT_AND_CLICK_VIEW.SHOW/HIDE`; на hide — `INTERFACE.TEXT_HIDE`.
|
|
39
|
-
| `point_and_click_view.controller` | Загрузка `iconSrc`, `controls` из `CONTROLS_EXTENSIONS` в `init`, `beforeShow` / `afterHide`. `SETTINGS.CHANGED` → `updateViewFast` только при `state.isShow`.
|
|
40
|
-
| `point_and_click_view.view` | React-render hotspot
|
|
36
|
+
| Модуль | Зона ответственности |
|
|
37
|
+
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
38
|
+
| `point_and_click_view.bridge` | Bridge `POINT_AND_CLICK.SHOW/HIDE` → `POINT_AND_CLICK_VIEW.SHOW/HIDE`; на hide — `INTERFACE.TEXT_HIDE`. |
|
|
39
|
+
| `point_and_click_view.controller` | Загрузка `iconSrc` / `iconHoverSrc`, `controls` из `CONTROLS_EXTENSIONS` в `init`, `beforeShow` / `afterHide`. `SETTINGS.CHANGED` → `updateViewFast` только при `state.isShow`. |
|
|
40
|
+
| `point_and_click_view.view` | React-render hotspot-иконок (`Image` + `srcHover` + `transition` из `PARAMS.POINT_AND_CLICK_VIEW.TRANSITION`; размер — натуральный или args `imgWidth` / `imgHeight` в px canvas). |
|
|
41
41
|
|
|
42
42
|
## Связь с POINT_AND_CLICK
|
|
43
43
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Экран русских шашек: доска 8×8, сетка, клик / ACCEPT. Правила — в [`game/checkers`](../game/checkers.md) (`CHECKERS`); AI — в [`ai/checkers`](../ai/checkers.md) (`CHECKERS_AI`).
|
|
6
6
|
|
|
7
|
-
Bridge: `CHECKERS.SHOW/HIDE` → `CHECKERS_VIEW.SHOW/HIDE`. Модель доски зеркалится с `CHECKERS.
|
|
7
|
+
Bridge: `CHECKERS.SHOW/HIDE` → `CHECKERS_VIEW.SHOW/HIDE`. Модель доски зеркалится с `GRID.CHANGED` / `GRID.UNSET` (`cells` → `board`, фильтр `CONST.CHECKERS.GRID_ID`); сторона хода — с `TURNS.CHANGED` / `TURNS.UNSET`; победитель — с `CHECKERS.FINISH` `{ winner }` (сброс на `SHOW`).
|
|
8
8
|
|
|
9
9
|
## События
|
|
10
10
|
|
|
@@ -31,15 +31,23 @@ Bridge: `CHECKERS.SHOW/HIDE` → `CHECKERS_VIEW.SHOW/HIDE`. Модель дос
|
|
|
31
31
|
|
|
32
32
|
## Модули
|
|
33
33
|
|
|
34
|
-
| Модуль | Зона
|
|
35
|
-
| ------------------------------------------------ |
|
|
36
|
-
| `checkers_view.bridge` | SHOW/HIDE bridge
|
|
37
|
-
| `checkers_view.controller` / `.grid` / `.accept` | экран, сетка, ACCEPT
|
|
38
|
-
| `checkers_view.click` / `.player.interact` | клик и выбор (game: `MOVES_GET` / `MOVE_PLAY`)
|
|
39
|
-
| `checkers_view.player.select` | `PLAYER_SELECT` → selection + grid
|
|
40
|
-
| `checkers_view.board` | `
|
|
41
|
-
| `checkers_view.
|
|
34
|
+
| Модуль | Зона |
|
|
35
|
+
| ------------------------------------------------ | ------------------------------------------------------ |
|
|
36
|
+
| `checkers_view.bridge` | SHOW/HIDE bridge |
|
|
37
|
+
| `checkers_view.controller` / `.grid` / `.accept` | экран, сетка, ACCEPT |
|
|
38
|
+
| `checkers_view.click` / `.player.interact` | клик и выбор (game: `MOVES_GET` / `MOVE_PLAY`) |
|
|
39
|
+
| `checkers_view.player.select` | `PLAYER_SELECT` → selection + grid |
|
|
40
|
+
| `checkers_view.board` | `GRID.CHANGED` / `UNSET` → `gridItems` + `UPDATE_FAST` |
|
|
41
|
+
| `checkers_view.status` | `TURNS` / `FINISH` / `SHOW` → status text |
|
|
42
|
+
| `checkers_view.view` | React |
|
|
42
43
|
|
|
43
44
|
## Сценарий
|
|
44
45
|
|
|
45
46
|
`$ checkers` — [`game/checkers`](../game/checkers.md); `$ checkers.ai` — [`ai/checkers`](../ai/checkers.md).
|
|
47
|
+
|
|
48
|
+
## Близкие плагины
|
|
49
|
+
|
|
50
|
+
- [common/grid.md](../common/grid.md) — `GRID` (доска)
|
|
51
|
+
- [common/turn.md](../common/turn.md) — `TURNS` (`id` / `owner`)
|
|
52
|
+
- [game/checkers.md](../game/checkers.md) — правила
|
|
53
|
+
- [ai/checkers.md](../ai/checkers.md) — AI
|
|
@@ -3,15 +3,19 @@
|
|
|
3
3
|
| | |
|
|
4
4
|
| ---------- | ------------------------------------------------------------------------ |
|
|
5
5
|
| Тип | `block` (`%`) |
|
|
6
|
-
| Сигнатура | `% point-and-click.option {icon} x y`
|
|
6
|
+
| Сигнатура | `% point-and-click.option {icon} {iconHover} x y` |
|
|
7
7
|
| Plugin doc | [scenario/point_and_click.md](../../plugins/scenario/point_and_click.md) |
|
|
8
8
|
|
|
9
9
|
## Примеры
|
|
10
10
|
|
|
11
11
|
```vne
|
|
12
|
-
% point-and-click.option {
|
|
12
|
+
% point-and-click.option {search} {search-hover} 25 25
|
|
13
|
+
imgWidth: 60
|
|
14
|
+
imgHeight: 60
|
|
13
15
|
"…"
|
|
14
|
-
% point-and-click.option {
|
|
16
|
+
% point-and-click.option {search} {search-hover} 50 50
|
|
17
|
+
imgWidth: 60
|
|
18
|
+
imgHeight: 60
|
|
15
19
|
hided: $ flag done
|
|
16
20
|
```
|
|
17
21
|
|
|
@@ -4,12 +4,16 @@ Hotspot-выбор на фоне. UI — view-плагин; ветки — ка
|
|
|
4
4
|
|
|
5
5
|
```vne
|
|
6
6
|
% point-and-click
|
|
7
|
-
% point-and-click.option {
|
|
7
|
+
% point-and-click.option {search} {search-hover} 25 25
|
|
8
|
+
imgWidth: 60
|
|
9
|
+
imgHeight: 60
|
|
8
10
|
hided: $ flag pac_1
|
|
9
11
|
$ flag pac_1
|
|
10
12
|
"Нашли предмет."
|
|
11
13
|
$ point-and-click repeat
|
|
12
|
-
% point-and-click.option {
|
|
14
|
+
% point-and-click.option {search} {search-hover} 50 50
|
|
15
|
+
imgWidth: 60
|
|
16
|
+
imgHeight: 60
|
|
13
17
|
hided: $ flag pac_2
|
|
14
18
|
$ flag pac_2
|
|
15
19
|
"Другая точка."
|
|
@@ -19,15 +23,15 @@ Hotspot-выбор на фоне. UI — view-плагин; ветки — ка
|
|
|
19
23
|
|
|
20
24
|
## Команды
|
|
21
25
|
|
|
22
|
-
| Синтаксис
|
|
23
|
-
|
|
|
24
|
-
| `% point-and-click`
|
|
25
|
-
| `% point-and-click.option {icon} x y` | Hotspot:
|
|
26
|
-
| `$ point-and-click repeat`
|
|
26
|
+
| Синтаксис | Смысл |
|
|
27
|
+
| ------------------------------------------------- | ----------------------------------------------- |
|
|
28
|
+
| `% point-and-click` | Открыть режим; собрать `.option` |
|
|
29
|
+
| `% point-and-click.option {icon} {iconHover} x y` | Hotspot: иконка, hover-иконка и координаты |
|
|
30
|
+
| `$ point-and-click repeat` | Вернуться к ближайшему `% point-and-click` выше |
|
|
27
31
|
|
|
28
|
-
`x` / `y` — числа (проценты/координаты UI — по конвенции игры). `{icon}` — id
|
|
32
|
+
`x` / `y` — числа (проценты/координаты UI — по конвенции игры). `{icon}` / `{iconHover}` — id иконок из `media/icons/.../point_and_click/`.
|
|
29
33
|
|
|
30
|
-
Props `hided:` / `disabled:` — как у choose.
|
|
34
|
+
Props `hided:` / `disabled:` — как у choose. Опционально `imgWidth:` / `imgHeight:` — размер hotspot в пикселях canvas.
|
|
31
35
|
|
|
32
36
|
## См. также
|
|
33
37
|
|