Show director summons as info toasts and presence queue labels.
Corridor waiters need a summon-phase byte on presence (v11); EventDef DirectorSummoned is info-only so clocks keep running.
This commit is contained in:
@@ -11,21 +11,21 @@
|
||||
|
||||
## Задачи
|
||||
|
||||
- [ ] `EventDef` info на авто-вызов (ваниль в `core`); факт из симуляции → доска уведомлений
|
||||
- [x] `EventDef` info на авто-вызов (ваниль в `core`); факт из симуляции → доска уведомлений
|
||||
среза 11
|
||||
- [ ] Тост не паузит часы; не в сейве sticky
|
||||
- [ ] В панели локации / присутствии понятно «идёт к директору» / «ждёт у кабинета» / «на приёме»
|
||||
- [x] Тост не паузит часы; не в сейве sticky
|
||||
- [x] В панели локации / присутствии понятно «идёт к директору» / «ждёт у кабинета» / «на приёме»
|
||||
— через действие и узел; новый байт в кадре присутствия — только если иначе нельзя; тогда
|
||||
протокол +1 в этом коммите (`ProtocolCodec`, `protocol.ts`, `docs/protocol.md`)
|
||||
- [ ] Гость видит те же info; ничего не назначает
|
||||
- [ ] Локали RU/EN
|
||||
- [x] Гость видит те же info; ничего не назначает
|
||||
- [x] Локали RU/EN
|
||||
|
||||
## Тесты, без которых фаза не закрыта
|
||||
|
||||
- [ ] Qualifying-вызов эмитит notice с ожидаемым `EventDef`
|
||||
- [ ] Info не пишет sticky в сейв
|
||||
- [ ] Если бамп протокола — round-trip и byte-layout на C# и TS
|
||||
- [ ] Без открытого клиента очередь в мире всё равно двигается (подписка не обязательна для сима)
|
||||
- [x] Qualifying-вызов эмитит notice с ожидаемым `EventDef`
|
||||
- [x] Info не пишет sticky в сейв
|
||||
- [x] Если бамп протокола — round-trip и byte-layout на C# и TS
|
||||
- [x] Без открытого клиента очередь в мире всё равно двигается (подписка не обязательна для сима)
|
||||
|
||||
## Критерий готовности
|
||||
|
||||
|
||||
+5
-2
@@ -1,4 +1,4 @@
|
||||
# Wire protocol v10
|
||||
# Wire protocol v11
|
||||
|
||||
The client talks to the server two ways:
|
||||
|
||||
@@ -1159,10 +1159,13 @@ Each person:
|
||||
| `u8` | `1` here, `2` walking |
|
||||
| `u8` | talk-circle member count, then that many person-id strings |
|
||||
| string | topic id (empty when not in a circle) |
|
||||
| `u8` | summon phase: `0` none, `1` going to the principal, `2` waiting in the corridor, `3` in a hearing |
|
||||
|
||||
Member ids are the live circle, including self, sorted by id. Count `0` and an empty topic mean
|
||||
the person is not talking — the same id/node/state as before the circle fields. Names are not
|
||||
on this frame; the client builds «говорит с Машей о футболе» from the HTTP directory and locale.
|
||||
Summon phase is a dedicated byte because node + here/walking alone cannot tell a corridor waiter
|
||||
from a passer-by (protocol v11).
|
||||
|
||||
### `0x87` Notice — variable
|
||||
|
||||
@@ -1197,7 +1200,7 @@ Layout extra after the v10 personId field; protocol version stays 10.
|
||||
the oldest, because a stale clock is worthless once a newer one exists.
|
||||
- The map snapshot, presence and notices use a separate reliable queue so ticks cannot crowd them out.
|
||||
|
||||
## Not in v10 yet
|
||||
## Not in v11 yet
|
||||
|
||||
Authentication, Sit orders, a year-long event log, walk animation, and `OpenLocation` on the server —
|
||||
the tree and the location panel are filtered on the client from the snapshot plus presence.
|
||||
|
||||
Reference in New Issue
Block a user