К содержимому

SusWallet ​

SusWallet

Полоса валюты для шапки лобби или магазина — пункты «подпись / значение», прочерк для неизвестного баланса, пульс при изменении.

Пакет

SusGame · Молекулы (коммерческий)

Открыть в песочнице

SusGame · Molecules

Свойства

ИмяТипПо умолчанию
IconProp<string>""
EmptyValueProp<string>"—"

Слоты

Слотов нет.

События

Публичных событий нет.

Хуки стиля ​

Контракт USS-классов — внешний вид переопределяется без правки C#. Состояния переключаются этими классами:

  • sus-hidden
  • sus-wallet
  • sus-wallet__icon
  • sus-wallet__item
  • sus-wallet__item--empty
  • sus-wallet__item--first
  • sus-wallet__item-icon
  • sus-wallet__item-label
  • sus-wallet__item-value
  • sus-wallet__item-value--flash

SusWallet ​

Полоса валют для шапки лобби или магазина — пункты «подпись / значение», прочерк для неизвестного баланса, пульс на изменившемся.

Использование ​

SusWallet показывает ряд пунктов-валют. Список передаётся через SetEntries. У каждого пункта есть необязательная иконка, подпись и значение. Значение — строка, которую вы форматируете сами, например "12 400", поэтому компонент никогда не решает за вас форматирование чисел и локаль.

csharp
var wallet = new SusWallet();
wallet.Icon.Value = "coins";            // optional wallet-level icon
wallet.SetEntries(new List<SusWallet.SusWalletEntry>
{
    SusWallet.SusWalletEntry.Of("gold", "Gold", "12 400", "coin"),
    SusWallet.SusWalletEntry.Of("gems", "Gems", "35", "diamond"),
    // Balance not loaded yet: the item renders empty and shows EmptyValue.
    new SusWallet.SusWalletEntry { Code = "tokens", Label = "Tokens", Available = false },
});

// After a balance change: replace the entries, then pulse the changed value.
wallet.FlashValue("gold");
xml
<template>
  <sus:SusWallet :Icon="WalletIcon.Value" :EmptyValue="Dash.Value" />
</template>

<script>
public Prop<string> WalletIcon = new("coins");
public Prop<string> Dash = new("—");
</script>

В лобби кошелёк обычно не создают вручную. SusLobbyScreenContent держит его в своей шапке: вызовите lobby.SetWallet(entries), и он остаётся скрытым, пока в списке нет хотя бы одного пункта.

Проп / APIРоль
IconКлюч иконки уровня кошелька перед пунктами (sus-wallet__icon); пусто (по умолчанию) → скрыта
EmptyValueТекст, показываемый как значение пустого пункта (по умолчанию "—")
SetEntries(entries)Заменяет пункты в порядке показа; null или пустой список очищает их
EntriesЗаписи из последнего вызова SetEntries (только чтение)
FlashValue(code)Добавляет sus-wallet__item-value--flash к значению этого пункта на ValueFlashMs (600 мс); неизвестный код ничего не делает
WalletIconSusIcon за Icon, для подключения хостом

Записи ​

SusWallet.SusWalletEntry — обычная структура:

ПолеЗначение
CodeСтабильный id валюты ("gold") — ключ для FlashValue
LabelПодпись перед значением; пустая — подставляется Code
ValueТекст баланса, уже отформатированный; пустой — пункт отображается пустым
IconKeyНеобязательная иконка этой валюты (sus-wallet__item-icon)
Availablefalse = баланс неизвестен или ещё загружается: пункт получает sus-wallet__item--empty и показывает EmptyValue

Available по умолчанию false, как любое поле bool у структуры. Создавайте записи через SusWalletEntry.Of(...), который ставит его в true, или задавайте сами. Запись, созданная через new SusWalletEntry { ... } без Available = true, отображается пустой.

Хуки скина ​

КлассНа чём
sus-walletКорневой ряд; без записей и без иконки имеет нулевой размер
sus-wallet__iconИконка уровня кошелька
sus-wallet__itemОдин пункт-валюта (ряд); sus-wallet__item--first — на первом
sus-wallet__item-iconИконка пункта
sus-wallet__item-labelПодпись пункта
sus-wallet__item-valueЗначение пункта
sus-wallet__item--emptyПункт, чей баланс неизвестен или пуст
sus-wallet__item-value--flashЗначение во время пульса FlashValue

Пульс — это класс, а не transition. Пакет окрашивает пульсирующее значение сигнальным токеном и снимает класс по таймеру. Скин может переопределить стиль класса или добавить собственный USS-transition. Цвета и размеры берутся из токенов --sk-*, так что полоса следует вашей теме.

Заметки ​

  • Замена записей перестраивает пункты и отменяет идущий пульс.
  • Порядок пунктов на экране — порядок переданного списка.