VanguardReMaster/client/Assets/Vanguard/Runtime/UI/ComingSoonOverlay.cs

86 lines
3.0 KiB
C#

using System;
using UnityEngine;
using UnityEngine.UI;
namespace Vanguard.UI
{
/// <summary>Модальная заглушка раздела: заголовок, пояснение и «скоро».</summary>
public sealed class ComingSoonOverlay
{
private readonly RectTransform _root;
public ComingSoonOverlay(
Transform parent,
string name,
string title,
string note,
Action onClose = null)
{
_root = UiKit.CreatePanel(parent, name, new Color(0f, 0f, 0f, 0.001f));
_root.GetComponent<Image>().raycastTarget = true;
var panel = UiKit.CreateCenteredCard(
_root,
"Panel",
new Vector2(720f, 420f),
Color.white);
panel.GetComponent<Image>().sprite = NeonUi.Body(
720,
420,
20,
new Color(0.024f, 0.058f, 0.15f, 0.97f),
new Color(0.18f, 0.49f, 1f, 0.85f),
2);
panel.GetComponent<Image>().raycastTarget = true;
var titleText = UiKit.CreateText(
panel,
"Title",
title,
34,
new Color(0.88f, 0.94f, 1f));
titleText.fontStyle = FontStyle.Bold;
var titleRect = titleText.rectTransform;
titleRect.anchorMin = new Vector2(0f, 1f);
titleRect.anchorMax = new Vector2(1f, 1f);
titleRect.pivot = new Vector2(0.5f, 1f);
titleRect.sizeDelta = new Vector2(-64f, 56f);
titleRect.anchoredPosition = new Vector2(0f, -34f);
var noteText = UiKit.CreateText(
panel,
"Note",
note,
18,
new Color(0.60f, 0.70f, 0.88f),
TextAnchor.UpperCenter);
var noteRect = noteText.rectTransform;
noteRect.anchorMin = new Vector2(0.5f, 0.5f);
noteRect.anchorMax = new Vector2(0.5f, 0.5f);
noteRect.pivot = new Vector2(0.5f, 0.5f);
noteRect.sizeDelta = new Vector2(600f, 120f);
noteRect.anchoredPosition = new Vector2(0f, 10f);
StubUi.Badge(panel, new Vector2(-18f, -18f));
var close = UiKit.CreateButton(panel, "Close", "Закрыть", () => Close(), 18);
var closeRect = close.GetComponent<RectTransform>();
closeRect.anchorMin = new Vector2(0.5f, 0f);
closeRect.anchorMax = new Vector2(0.5f, 0f);
closeRect.pivot = new Vector2(0.5f, 0f);
closeRect.sizeDelta = new Vector2(240f, 48f);
closeRect.anchoredPosition = new Vector2(0f, 28f);
if (onClose != null)
close.onClick.AddListener(() => onClose());
_root.gameObject.SetActive(false);
}
public bool IsOpen => _root.gameObject.activeSelf;
public void Show() => UiKit.SetActive(_root, true);
public void Close() => UiKit.SetActive(_root, false);
}
}