using TMPro; using UnityEngine; using UnityEngine.EventSystems; public class BodyLinkHandler : MonoBehaviour, IPointerClickHandler, IPointerExitHandler { private TextMeshProUGUI tmp; void Awake() { tmp = GetComponent(); } void Update() { Camera eventCam = null; // Try to get the event camera from the canvas (better than Camera.main) if (tmp.canvas.renderMode == RenderMode.WorldSpace) { eventCam = tmp.canvas.worldCamera; } int linkIndex = TMP_TextUtilities.FindIntersectingLink(tmp, Input.mousePosition, eventCam); if (linkIndex != -1) { CursorManager.Instance?.SetLinkCursor(); } else { CursorManager.Instance?.SetDefaultCursor(); } } public void OnPointerClick(PointerEventData eventData) { int linkIndex = TMP_TextUtilities.FindIntersectingLink(tmp, Input.mousePosition, eventData.pressEventCamera); if (linkIndex != -1) { string linkID = tmp.textInfo.linkInfo[linkIndex].GetLinkID(); Debug.Log("🔗 Clicked link: " + linkID); EmailPopupManager.Instance?.ShowPopup(linkID); var emailPanelGO = WorldTimelineManager.Instance?.OpenedEmailPanel; if (emailPanelGO != null && emailPanelGO.TryGetComponent(out var emailPanel)) { EmailData email = emailPanel.Email; if (email != null) { //UserActionLogger.Instance?.Log($"Clicked link '{linkID}' in email from '{email.senderName}'"); string englishLog = $"Clicked link '{linkID}' in email from '{email.senderName}'"; string arabicLog = $"تم الضغط على الرابط '{linkID}' في البريد من '{email.senderName}'"; UserActionLogger.Instance?.Log(englishLog, arabicLog); bool isOptimal = !email.isPhishing; SupabaseEventLogger.Instance?.LogDecisionEvent(isOptimal); SceneOutcomeManager.Instance?.Clicked(email); } else { Debug.LogWarning("📭 EmailData is null in EmailOpenPanel."); } } else { Debug.LogWarning("📭 OpenedEmailPanel or EmailOpenPanel script not found."); } } } public void OnPointerExit(PointerEventData eventData) { CursorManager.Instance?.SetDefaultCursor(); } }