using Jovian.PopupSystem; using Jovian.PopupSystem.UI; using UnityEngine; /// /// Example: Setting up PopupSystem with auto-scanned triggers. /// /// 1. Attach this to a GameObject in your scene. /// 2. Assign the PopupSettings asset and PopupReference prefab. /// 3. Set canvasRoot to the root Canvas that contains your UI and PopupTrigger components. /// 4. Place PopupTrigger components on any UI elements that should show popups on hover. /// 5. The system auto-scans triggers on creation. Use SetContent() to provide data. /// public class PopupSystemExample : MonoBehaviour { [SerializeField] PopupSettings popupSettings; [SerializeField] PopupReference popupReferencePrefab; [SerializeField] Transform canvasRoot; IPopupSystem popupSystem; void Start() { // Create the system. Passing canvasRoot auto-scans all PopupTrigger components. popupSystem = new PopupSystem(popupSettings, popupReferencePrefab, canvasRoot); // Register categories before showing popups. popupSystem.RegisterCategory(PopupCategory.Character, priority: 10); popupSystem.RegisterCategory(PopupCategory.Item, priority: 5); popupSystem.RegisterCategory(PopupCategory.General, priority: 1); // Option A: Set content on an auto-scanned trigger by GameObject name. var characterTrigger = popupSystem.GetTrigger("CharacterPortrait"); if(characterTrigger != null) { characterTrigger.SetContent(builder => { builder .AddHeader("Kael") .AddText("Human Warrior", "CCCCCC") .AddSeparator() .AddStat("Health", 55) .AddStat("Mana", 42) .AddStat("Level", 1) .AddSeparator() .AddStat("Might", 8) .AddStat("Reflex", 2) .AddStat("Knowledge", 5) .AddStat("Perception", 1); }); } // Option B: Set content on all triggers of a category. foreach(var trigger in popupSystem.GetTriggers(PopupCategory.Item)) { trigger.SetContent(builder => { builder .AddHeader("Health Potion") .AddSeparator() .AddText("Restores a moderate amount of health.") .AddStat("Heal Amount", 50); }); } } void Update() { // Tick drives delay timers and animations. popupSystem?.Tick(Time.deltaTime); } void OnDestroy() { // Clean up all popup views. popupSystem?.Dispose(); } }