macOS companion app
Піктограма в рядку меню
Стани піктограми в рядку меню
Область: застосунок macOS (apps/macos). Відтворення: CritterIconRenderer.makeIcon(...). Зв’язування анімації та стану: CritterStatusLabel + CritterStatusLabel+Behavior.swift.
Стани
| Стан | Умова активації | Вигляд |
|---|---|---|
| Бездіяльність | Типовий стан | Звичайна анімація кліпання/похитування; у відкритих очах зберігається глянцевий відблиск |
| Призупинено | isPaused=true |
Вусики опущені («не на службі»), очі відкриті; без руху |
| Сон | Gateway від’єднано/не налаштовано | Вусики опущені, а очі заплющуються, утворюючи повіки ⌣ ⌣; без руху |
| Святкування | Повідомлення надіслано (sendCelebrationTick) |
Очі на ~0.9s спалахують радісними дугами ∩ ∩, а лапка робить удар |
| Голосове пробудження (великі вуха) | Почуте слово пробудження | Вусики випрямляються й стають вищими (earScale=1.9); опускаються після тиші |
| Робота | isWorking=true або активний IconState |
Швидше рухаються лапки (від legWiggle до 1.0) із невеликим горизонтальним зміщенням; додається до похитування в стані бездіяльності |
Значок активності інструмента (кружок із символом SF, наприклад chevron.left.slash.chevron.right для виконання) може відображатися поверх тієї самої піктограми звірятка, коли сеанс має активне завдання або інструмент. Цей значок надходить із IconState/ActivityKind; повну модель станів наведено в розділі Рядок меню.
Вуха під час голосового пробудження
- Активація:
AppStateStore.shared.triggerVoiceEars(ttl: nil), викликається з конвеєра захоплення голосового пробудження (VoiceWakeRuntime) та з інструментів налагодження/тестування голосового пробудження (VoiceWakeTester,VoiceWakeOverlayController). - Зупинка:
stopVoiceEars(), викликається після завершення захоплення. - Вікно тиші перед завершенням: зазвичай
2.0s, або5.0s, якщо було почуто лише слово активації без подальшого мовлення (VoiceWakeRuntime.silenceWindow/triggerOnlySilenceWindow). - Під час підсилення таймери кліпання/похитування/руху лапок і вух у стані бездіяльності призупинено (
earBoostActiveкерує завданням анімації вCritterStatusLabel+Behavior).
Форми та розміри
- Полотно: шаблонне зображення розміром 18x18pt, відтворене в растровому буфері 36x36px (2x), щоб піктограма залишалася чіткою на дисплеях Retina.
- Типовий масштаб вух —
1.0; голосове підсилення встановлюєearScale=1.9без зміни загального кадру. antennaDroop(0-1) опускає вусики для поз у станах призупинення та сну.- Швидкий рух лапок використовує значення від
legWiggleдо1.0із невеликим горизонтальним посмикуванням.
Примітки щодо поведінки
- Немає зовнішнього перемикача CLI/брокера для вух або робочого стану; обидва стани керуються внутрішніми сигналами застосунку (
AppState.setWorking,AppState.triggerVoiceEars), щоб уникнути випадкового перемикання. - Будь-який новий TTL має бути коротким (значно менше ніж 10s), щоб піктограма швидко поверталася до базового стану, якщо завдання зависне.
Пов’язані матеріали
Was this useful?