97 lines
3.7 KiB
C#
Raw Permalink Normal View History

2025-06-07 19:06:25 +05:00
using UnityEngine;
2025-05-28 10:27:04 +05:00
using TMPro;
using UnityEngine.UI;
2025-05-31 05:14:48 +05:00
using ArabicSupport;
2025-06-23 14:13:43 +05:00
using System.Collections;
2025-05-28 10:27:04 +05:00
public class EmailUIController : MonoBehaviour
{
public TextMeshProUGUI senderInitial;
public Image senderBg;
public TextMeshProUGUI senderNameText;
public TextMeshProUGUI subjectText;
public TextMeshProUGUI previewText;
public TextMeshProUGUI timeOrDateText;
public Sprite[] backgroundSprites;
public EmailData data;
[SerializeField, HideInInspector]
public string cachedInitial;
[SerializeField, HideInInspector]
public Sprite cachedSprite;
2025-06-26 00:49:25 +05:00
static bool isAlreadyOpened=false;
2025-06-23 14:13:43 +05:00
EmailOpenPanel m_EmailOpenPanel;
2025-05-28 10:27:04 +05:00
public void Setup(EmailData emailData)
{
data = emailData;
2025-05-31 05:14:48 +05:00
bool isArabic = LanguageManager.Instance != null && LanguageManager.Instance.currentLanguage == "Arabic";
senderNameText.text = isArabic ? ArabicFixer.Fix(data.senderName) : data.senderName;
subjectText.text = isArabic ? ArabicFixer.Fix(data.subjectAr) : data.subject;
previewText.text = isArabic ? ArabicFixer.Fix(GeneratePreview(data.fullBodyTextAr)) : GeneratePreview(data.fullBodyText);
timeOrDateText.text = isArabic ? ArabicFixer.Fix(data.timeOrDateAr) : data.timeOrDate;
AlignText(subjectText, isArabic);
AlignText(previewText, isArabic);
AlignText(timeOrDateText, isArabic);
2025-05-28 10:27:04 +05:00
cachedInitial = data.senderName[0].ToString().ToUpper();
cachedSprite = backgroundSprites[Random.Range(0, backgroundSprites.Length)];
senderInitial.text = cachedInitial;
senderBg.sprite = cachedSprite;
}
2025-05-31 05:14:48 +05:00
void AlignText(TextMeshProUGUI tmp, bool isArabic)
{
if (tmp == null) return;
tmp.font = LanguageManager.Instance?.GetCurrentFont();
//tmp.isRightToLeftText = isArabic;
//tmp.alignment = isArabic ? TextAlignmentOptions.Right : TextAlignmentOptions.Left;
}
2025-05-28 10:27:04 +05:00
string GeneratePreview(string body)
{
int max = 60;
string clean = body.Replace("\n", " ").Trim();
return clean.Length <= max ? clean : clean.Substring(0, max) + "...";
}
public void OnClick()
{
2025-06-26 00:49:25 +05:00
if(EmailPopupManager.Instance.emailScannedBool==false)
2025-06-25 23:14:09 +05:00
{
2025-06-26 00:49:25 +05:00
EmailPopupManager.Instance.emailScannedBool = true;
2025-06-25 23:14:09 +05:00
NarrationPlayer.Instance.PlayNarration(NarrationID.ScanEmail);
2025-07-24 14:26:09 +05:00
2025-06-25 23:14:09 +05:00
}
//InstructionManager.Instance.HideScreenInstruction();
2025-06-13 22:45:46 +05:00
SoundManager.Instance.PlayButtonClick();
2025-05-28 10:27:04 +05:00
GameObject panel = Instantiate(Resources.Load<GameObject>("EmailOpenPanel"), transform.root);
2025-06-23 14:13:43 +05:00
panel.transform.SetSiblingIndex(5);
m_EmailOpenPanel=panel.GetComponent<EmailOpenPanel>();
2025-05-29 00:19:15 +05:00
WorldTimelineManager.Instance.OpenedEmailPanel = panel;
2025-05-28 10:27:04 +05:00
EmailOpenPanel controller = panel.GetComponent<EmailOpenPanel>();
controller.Setup(data, cachedInitial, cachedSprite);
2025-06-07 19:06:25 +05:00
string englishLog = $"Opened email from '{data.senderName}' with subject '{data.subject}'";
string arabicLog = $"تم فتح البريد من '{data.senderName}' بعنوان '{data.subjectAr}'";
2025-05-29 20:41:47 +05:00
2025-06-13 22:45:46 +05:00
2025-06-27 17:32:33 +05:00
SceneOutcomeManager.Instance.OnEmailOpened();
2025-06-23 14:13:43 +05:00
if(isAlreadyOpened) return;
2025-06-07 19:06:25 +05:00
UserActionLogger.Instance?.Log(englishLog, arabicLog);
2025-06-23 14:13:43 +05:00
isAlreadyOpened = true;
2025-06-07 19:06:25 +05:00
//UserActionLogger.Instance?.Log($"Opened email from '{data.senderName}' with subject '{data.subject}'");
2025-05-28 10:27:04 +05:00
}
2025-06-23 14:13:43 +05:00
public void ButtonSetter(Button button)
{
StartCoroutine(ButtonSetterRoutine(button));
}
IEnumerator ButtonSetterRoutine(Button button)
{
yield return new WaitUntil(()=>m_EmailOpenPanel!=null);
m_EmailOpenPanel.MainButtonToDisable = button;
}
2025-05-28 10:27:04 +05:00
}