feat(control): трекер инициативы в отдельном окне

Очередь NPC/игроков с DnD, курсором на сцене, состояниями и запасом; сброс при смене сцены.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Ivan Fontosh
2026-09-04 10:09:51 +08:00
parent db1168a46c
commit 86d6d157f0
28 changed files with 1783 additions and 4 deletions
@@ -659,6 +659,7 @@ export const EDITOR_MESSAGES: Record<EditorLocale, Record<string, string>> = {
'control.materialsTool': 'Материалы',
'control.playlistsTool': 'Плейлисты',
'control.timerTool': 'Таймер',
'control.initiativeTool': 'Инициатива',
'control.npcsTool': 'НПС',
'sessionTimer.duration': 'Длительность (MM:SS)',
@@ -668,6 +669,37 @@ export const EDITOR_MESSAGES: Record<EditorLocale, Record<string, string>> = {
'sessionTimer.showToPlayers': 'Показать игрокам',
'sessionTimer.positionHint':
'Когда показ включён, перетащите таймер на предпросмотре пульта; углы — размер, ручка сверху — поворот.',
'initiative.next': 'Следующий',
'initiative.queue': 'Очередь',
'initiative.queueEmpty': 'Очередь пуста — добавьте вручную или разместите НПС на сцене',
'initiative.reserve': 'Запас',
'initiative.reserveEmpty': 'Запас пуст',
'initiative.addManual': 'Добавить',
'initiative.manualPlaceholder': 'Имя вручную',
'initiative.toReserve': 'В запас',
'initiative.restore': 'Вернуть',
'initiative.delete': 'Удалить',
'initiative.conditions': 'Состояния',
'initiative.conditionsEmpty': 'Все состояния уже добавлены',
'initiative.removeCondition': 'Убрать состояние',
'initiative.condition.frightened': 'Испуган',
'initiative.condition.exhaustion': 'Истощение',
'initiative.condition.concentration': 'Концентрация',
'initiative.condition.invisible': 'Невидимый',
'initiative.condition.incapacitated': 'Недееспособен',
'initiative.condition.petrified': 'Окаменевший',
'initiative.condition.restrained': 'Опутан',
'initiative.condition.blinded': 'Ослеплён',
'initiative.condition.poisoned': 'Отравлен',
'initiative.condition.charmed': 'Очарован',
'initiative.condition.stunned': 'Ошеломлён',
'initiative.condition.paralyzed': 'Парализован',
'initiative.condition.prone': 'Сбит с ног',
'initiative.condition.grappled': 'Схвачен',
'initiative.condition.unconscious': 'Без сознания',
'initiative.condition.deafened': 'Оглохший',
'control.descriptionMissing': 'Описание отсутствует',
'control.effects': 'ЭФФЕКТЫ',
'control.tools': 'Очистка',
@@ -1359,6 +1391,7 @@ export const EDITOR_MESSAGES: Record<EditorLocale, Record<string, string>> = {
'control.materialsTool': 'Materials',
'control.playlistsTool': 'Playlists',
'control.timerTool': 'Timer',
'control.initiativeTool': 'Initiative',
'control.npcsTool': 'NPCs',
'sessionTimer.duration': 'Duration (MM:SS)',
@@ -1368,6 +1401,37 @@ export const EDITOR_MESSAGES: Record<EditorLocale, Record<string, string>> = {
'sessionTimer.showToPlayers': 'Show to players',
'sessionTimer.positionHint':
'When shown, drag the timer on the control preview; corners resize, the top handle rotates.',
'initiative.next': 'Next',
'initiative.queue': 'Queue',
'initiative.queueEmpty': 'Queue is empty — add manually or place NPCs on the scene',
'initiative.reserve': 'Reserve',
'initiative.reserveEmpty': 'Reserve is empty',
'initiative.addManual': 'Add',
'initiative.manualPlaceholder': 'Manual name',
'initiative.toReserve': 'To reserve',
'initiative.restore': 'Restore',
'initiative.delete': 'Delete',
'initiative.conditions': 'Conditions',
'initiative.conditionsEmpty': 'All conditions already added',
'initiative.removeCondition': 'Remove condition',
'initiative.condition.frightened': 'Frightened',
'initiative.condition.exhaustion': 'Exhaustion',
'initiative.condition.concentration': 'Concentration',
'initiative.condition.invisible': 'Invisible',
'initiative.condition.incapacitated': 'Incapacitated',
'initiative.condition.petrified': 'Petrified',
'initiative.condition.restrained': 'Restrained',
'initiative.condition.blinded': 'Blinded',
'initiative.condition.poisoned': 'Poisoned',
'initiative.condition.charmed': 'Charmed',
'initiative.condition.stunned': 'Stunned',
'initiative.condition.paralyzed': 'Paralyzed',
'initiative.condition.prone': 'Prone',
'initiative.condition.grappled': 'Grappled',
'initiative.condition.unconscious': 'Unconscious',
'initiative.condition.deafened': 'Deafened',
'control.descriptionMissing': 'No description',
'control.effects': 'EFFECTS',
'control.tools': 'Cleanup',