client: кнопка «В лобби» в топбаре DeckBuilder
CI / test (push) Successful in 3m19s Details

- PlayerTopBar рисует «← В лобби» слева от Rating/Community, если передан
  onLobby; в Lobby кнопки нет.
- Тест PlayerTopBar проверяет наличие кнопки.
- Проверки: EditMode 69/69, standalone собран.
This commit is contained in:
MpakobecEx 2026-11-01 15:43:18 +05:00
parent 13654ce134
commit ce98ea5ed3
2 changed files with 17 additions and 7 deletions

View File

@ -115,6 +115,8 @@ namespace Vanguard.UI
AddAction(top, "Rating", "Рейтинг", -312f, 180f, onRating, LobbyIcon.Chart);
AddAction(top, "Community", "Сообщество", -96f, 200f, onCommunity, LobbyIcon.Friends);
if (onLobby != null)
AddAction(top, "ToLobby", "← В лобби", -508f, 160f, onLobby, null);
_menu = new HamburgerMenu(
top,
@ -209,11 +211,16 @@ namespace Vanguard.UI
else
button.interactable = false;
var textLeft = 18f;
if (icon != null)
{
var iconColor = onClick != null
? Accent
: new Color(Accent.r, Accent.g, Accent.b, 0.35f);
var iconRect = Icon(buttonRect, new Vector2(30f, 30f), new Vector2(-width * 0.5f + 30f, 0f), 0.6f);
icon(iconRect, iconColor);
textLeft = 52f;
}
var text = UiKit.CreateText(
buttonRect,
@ -225,7 +232,7 @@ namespace Vanguard.UI
var textRect = text.rectTransform;
textRect.anchorMin = new Vector2(0f, 0f);
textRect.anchorMax = new Vector2(1f, 1f);
textRect.offsetMin = new Vector2(52f, 0f);
textRect.offsetMin = new Vector2(textLeft, 0f);
textRect.offsetMax = new Vector2(-14f, 0f);
}

View File

@ -890,7 +890,7 @@ namespace Vanguard.Tests
var canvas = UiKit.CreateCanvas("Test Canvas");
var bar = new PlayerTopBar(
canvas.transform, config, player, null, null, null, null);
canvas.transform, config, player, null, null, null, null, () => { });
var root = GameObject.Find(PlayerTopBar.RootName);
Assert.IsNotNull(root, "PlayerTopBar не создан");
@ -905,6 +905,9 @@ namespace Vanguard.Tests
Assert.IsNotNull(community);
Assert.IsFalse(rating.interactable, "Rating без обработчика должен быть неактивен");
Assert.IsFalse(community.interactable, "Community без обработчика должен быть неактивен");
Assert.IsNotNull(
root.transform.Find("ToLobby"),
"Кнопка «В лобби» должна быть при переданном onLobby");
bar.Dispose();
Cleanup();