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 ZoneBlockStripView { private static readonly BoardZone[] Zones = { BoardZone.Hand, BoardZone.Deck, BoardZone.Drop, BoardZone.Soul, BoardZone.Damage, BoardZone.Guardian, BoardZone.Trigger, }; private readonly Dictionary _labels = new Dictionary(); private Text _header; public RectTransform Root { get; private set; } public event Action ZoneClicked; public void Build( Transform parent, string name, Vector2 anchor, Vector2 pivot, Vector2 position, Vector2 size) { var prefabRoot = OverlayPrefabs.Instantiate("ZoneBlockStrip", parent); if (prefabRoot != null) { Root = prefabRoot; Root.name = name; ApplyLayout(anchor, pivot, position, size); WireButtons(); return; } Root = UiKit.CreatePanel(parent, name, new Color(0.02f, 0.035f, 0.055f, 0.82f)); ApplyLayout(anchor, pivot, position, size); UiKit.AddVerticalLayout(Root, 8, 4); _header = UiKit.CreateText( Root, "Header", string.Empty, 14, new Color(0.86f, 0.91f, 1f), TextAnchor.MiddleLeft); _header.fontStyle = FontStyle.Bold; UiKit.MakeLiteral(_header); UiKit.SetPreferredHeight(_header, 20f); CreateRow("Row1"); CreateRow("Row2"); CreateZoneButtons(); WireButtons(); } private void CreateZoneButtons() { for (var i = 0; i < Zones.Length; i++) { var zone = Zones[i]; var row = Root.Find(i < 4 ? "Row1" : "Row2"); UiKit.CreateButton( row, "Zone_" + zone, string.Empty, null, 13); } } private void ApplyLayout( Vector2 anchor, Vector2 pivot, Vector2 position, Vector2 size) { 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; } private void WireButtons() { _header = Root.Find("Header")?.GetComponent(); if (_header != null) { _header.fontStyle = FontStyle.Bold; UiKit.MakeLiteral(_header); } for (var i = 0; i < Zones.Length; i++) { var zone = Zones[i]; var row = i < 4 ? "Row1" : "Row2"; var button = Root.Find(row + "/Zone_" + zone)?.GetComponent