using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using Vanguard.Board3D; using Vanguard.Shared.Protocol; namespace Vanguard.UI.Overlays { /// /// Компактная панель игрока: Колода, Душа, Рука, Сброс. /// Все блоки одинаковые; кликабельны только Душа и Сброс. /// public sealed class PlayerStatsPanelView { private sealed class StatEntry { public BoardZone Zone; public Text Value; } private readonly List _stats = new List(); private RectTransform _root; private Text _header; public RectTransform Root => _root; public event Action ZoneClicked; public void Build( Transform parent, string name, bool self, Vector2 anchor, Vector2 pivot, Vector2 position, Vector2 size) { _root = UiKit.CreatePanel( parent, name, new Color(0.02f, 0.035f, 0.055f, 0.9f)); _root.anchorMin = anchor; _root.anchorMax = anchor; _root.pivot = pivot; _root.anchoredPosition = position; _root.sizeDelta = size; var image = _root.GetComponent(); if (image != null) image.raycastTarget = false; UiKit.AddVerticalLayout(_root, 8, 4); _header = UiKit.CreateText( _root, "Header", self ? "ВЫ" : "ПРОТИВНИК", 13, new Color(0.86f, 0.91f, 1f), TextAnchor.MiddleLeft); _header.fontStyle = FontStyle.Bold; UiKit.MakeLiteral(_header); UiKit.SetPreferredHeight(_header, 20f); var stats = UiKit.CreatePanel(_root, "Stats", Color.clear); UiKit.AddHorizontalLayout(stats, 0, 4); UiKit.SetPreferredHeight(stats, 42f); AddStat(stats, BoardZone.Deck, "Колода"); AddStat(stats, BoardZone.Soul, "Душа", clickable: true); AddStat(stats, BoardZone.Hand, "Рука"); AddStat(stats, BoardZone.Drop, "Сброс", clickable: true); } private void AddStat( RectTransform parent, BoardZone zone, string label, bool clickable = false) { var block = UiKit.CreatePanel( parent, "Stat_" + zone, new Color(0.06f, 0.09f, 0.14f, 0.85f)); var image = block.GetComponent(); if (image != null) image.raycastTarget = clickable; UiKit.AddVerticalLayout(block, 2, 0); UiKit.SetPreferredHeight(block, 40f); var caption = UiKit.CreateText( block, "Caption", label, 9, new Color(0.62f, 0.70f, 0.86f)); UiKit.MakeLiteral(caption); UiKit.SetPreferredHeight(caption, 12f); var value = UiKit.CreateText( block, "Value", "0", 15, Color.white); value.fontStyle = FontStyle.Bold; UiKit.SetPreferredHeight(value, 18f); if (clickable) { var button = block.gameObject.AddComponent