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

SusLobbyScreenContent

SusLobbyScreenContent

Оболочка хаба / лобби — back, title chip, tabs, empty alert, хост child-view, footer Ready + Vs AI.

Пакет

SusGame · Экраны (коммерческий)

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

SusGame · Screens

Свойства

ИмяТипПо умолчанию
TitleProp<string>"Hub"
EmptyTextProp<string>"No data"
CanActProp<bool>false
HasDataProp<bool>false
ActionLabelProp<string>"Ready"
SoloActionLabelProp<string>"Vs AI"

Слоты

Слотов нет.

События

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

Хуки стиля

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

  • sc-lobby-footer
  • sc-lobby-header
  • sus-lobby-screen
  • sus-lobby-screen__back-btn
  • sus-lobby-screen__child-view
  • sus-lobby-screen__content
  • sus-lobby-screen__empty-text
  • sus-lobby-screen__row
  • sus-lobby-screen__row-icon
  • sus-lobby-screen__row-label
  • sus-lobby-screen__row-value
  • sus-lobby-screen__rows
  • sus-lobby-screen__solo-action-btn
  • sus-lobby-screen__tabs
  • sus-lobby-screen__title
  • sus-lobby-screen--limbo

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

Привяжите пропы chrome; заполните Tabs / ChildViewHost со стороны хоста или дочерних view. Управляйте footer через CanAct.

xml
<template>
  <sus:SusLobbyScreenContent
    :Title="Title.Value"
    :EmptyText="Empty.Value"
    :CanAct="Ready.Value"
    :ActionLabel="Act.Value"
    :SoloActionLabel="Solo.Value"
  />
</template>

<script>
public Prop<string> Title = new("Hub");
public Prop<string> Empty = new("No data");
public Prop<bool> Ready = new(false);
public Prop<string> Act = new("Ready");
public Prop<string> Solo = new("Vs AI");
</script>
csharp
var lobby = new SusLobbyScreenContent();
lobby.Title.Value = "Multiplayer";
lobby.EmptyText.Value = "No parties";
lobby.CanAct.Value = true;
lobby.ActionLabel.Value = "Ready";
lobby.SoloActionLabel.Value = "Vs AI";
// After mount:
lobby.Tabs.Items.Value = new List<SusTabs.TabItem> {
  new() { Title = "Parties", Value = "parties" },
  new() { Title = "Friends", Value = "friends" },
};
lobby.ChildViewHost.Add(myListView);
lobby.BackBtn.OnClick += () => { /* back */ };
lobby.ActionBtn.OnClick += () => { /* ready */ };
lobby.SoloActionBtn.OnClick += () => { /* vs AI */ };
Prop / APIРоль
TitleПодпись чипа заголовка
EmptyTextEmpty-alert; пустая строка → скрыт
CanActВключает/отключает обе кнопки footer (Disabled = !CanAct)
ActionLabel / SoloActionLabelПодписи Ready / Vs AI
HasDataОбъявленный Prop<bool>не подключён к UI в текущем пине
BackBtn / Tabs / EmptyAlert / ActionBtn / SoloActionBtnПодключение со стороны хоста
ChildViewHostСюда монтируется контент списка/деталей

Заметки

  • USS-модификаторы --limbo есть на root для прозрачных overlay-хабов (класс добавляется со стороны хоста).
  • Tabs изначально пустые — хост должен задать Items / Model.
  • HasData извлекается в API, но не используется WireProps; пустое состояние управляется через EmptyText + видимость со стороны хоста.