forked from Shardstone/trail-into-darkness
92 lines
3.6 KiB
C#
92 lines
3.6 KiB
C#
using Jovian.PopupSystem;
|
|
using Jovian.PopupSystem.UI;
|
|
using UnityEngine;
|
|
|
|
/// <summary>
|
|
/// Example: Showing popups from code without PopupTrigger components.
|
|
///
|
|
/// Use this approach for confirmation dialogs, tutorial tips, or any popup
|
|
/// that is triggered by game logic rather than hover events.
|
|
/// Also demonstrates PopupElementType variants and the generic Add() method.
|
|
/// </summary>
|
|
public class CodeOnlyPopupExample : MonoBehaviour {
|
|
[SerializeField] PopupSettings popupSettings;
|
|
[SerializeField] PopupReference popupReferencePrefab;
|
|
[SerializeField] Transform canvasRoot;
|
|
[SerializeField] RectTransform targetElement;
|
|
|
|
// Custom element type defined in game code
|
|
static readonly PopupElementType BadgeElement = new("badge");
|
|
|
|
IPopupSystem popupSystem;
|
|
|
|
void Start() {
|
|
popupSystem = new PopupSystem(popupSettings, popupReferencePrefab, canvasRoot);
|
|
popupSystem.RegisterCategory(PopupCategory.General, priority: 1);
|
|
}
|
|
|
|
void Update() {
|
|
popupSystem?.Tick(Time.deltaTime);
|
|
|
|
// Show anchored to an element
|
|
if(Input.GetKeyDown(KeyCode.Alpha1)) {
|
|
popupSystem.Show(PopupCategory.General, builder => {
|
|
builder
|
|
.AddText("Anchored Popup", PopupElementType.Header)
|
|
.AddText("This popup is anchored to a UI element.", PopupElementType.Text);
|
|
}, targetElement, AnchorSide.Right);
|
|
}
|
|
|
|
// Show at a fixed screen position
|
|
if(Input.GetKeyDown(KeyCode.Alpha2)) {
|
|
popupSystem.ShowAtPosition(PopupCategory.General, builder => {
|
|
builder
|
|
.AddText("Fixed Position", PopupElementType.Header)
|
|
.AddText("This popup appears at the center of the screen.", PopupElementType.Text);
|
|
}, new Vector2(Screen.width * 0.5f, Screen.height * 0.5f));
|
|
}
|
|
|
|
// Show following the mouse
|
|
if(Input.GetKeyDown(KeyCode.Alpha3)) {
|
|
popupSystem.Show(PopupCategory.General, builder => {
|
|
builder
|
|
.AddText("Follow Mouse", PopupElementType.Header)
|
|
.AddText("This popup follows the cursor.", PopupElementType.Text);
|
|
});
|
|
}
|
|
|
|
// Demonstrate variant elements
|
|
// Requires "header_gold" and "separator_thick" entries in PopupSettings.elementPrefabs
|
|
if(Input.GetKeyDown(KeyCode.Alpha4)) {
|
|
popupSystem.Show(PopupCategory.General, builder => {
|
|
builder
|
|
.AddText("Legendary Item", PopupElementType.Header.Variant("gold"))
|
|
.AddSeparator(PopupElementType.Separator.Variant("thick"))
|
|
.AddNameValue("Damage", "150", PopupElementType.LabelValueText)
|
|
.AddText("A weapon forged in dragon fire.", "FF6600", PopupElementType.Text);
|
|
}, targetElement, AnchorSide.Below);
|
|
}
|
|
|
|
// Demonstrate generic Add() for fully custom elements
|
|
// Requires a "badge" entry in PopupSettings.elementPrefabs
|
|
if(Input.GetKeyDown(KeyCode.Alpha5)) {
|
|
popupSystem.Show(PopupCategory.General, builder => {
|
|
builder.AddText("Custom Element", PopupElementType.Header);
|
|
var badge = builder.Add(BadgeElement);
|
|
if(badge != null) {
|
|
// Access any components on the custom prefab
|
|
// badge.GetComponent<MyBadgeComponent>().SetData(...);
|
|
}
|
|
}, targetElement);
|
|
}
|
|
|
|
if(Input.GetKeyDown(KeyCode.Escape)) {
|
|
popupSystem.HideAll();
|
|
}
|
|
}
|
|
|
|
void OnDestroy() {
|
|
popupSystem?.Dispose();
|
|
}
|
|
}
|