// Copyright 2013-2023, AFI.Inc. All rights reserved.

using System;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using BackEnd;

// AlertUI는 게임 내에서 발생하는 오류를 알려주는 UI입니다.
public class AlertUI : MonoBehaviour {

    [SerializeField] private TMP_Text titleText;
    [SerializeField] private TMP_Text contentText;
    [SerializeField] private Button confirmButton;


    public static AlertUI Instance { get; private set; }
    void Awake() {
        if (Instance == null) {
            Instance = this;
            
        }
        
        confirmButton.onClick.RemoveAllListeners();
        confirmButton.onClick.AddListener(() => gameObject.SetActive(false));

        titleText.text = string.Empty;
        contentText.text = string.Empty;
        
        gameObject.SetActive(false);
    }
    
    public void Alert(string title, string content) {
        Alert(title, content, null);
    }
    
    public void Alert(BackendReturnObject bro) {
        Alert("오류 발생", bro.ToString(), null);
    }
    
    public void Alert(string title, string content, Action action) {
        
        // 확인 버튼 클릭시 알림창 비활성화
        confirmButton.onClick.RemoveAllListeners();
        confirmButton.onClick.AddListener(() => {
            gameObject.SetActive(false);
        });
        
        // 만약 액션까지 등록할 경우, 확인 버튼 클릭시 알림창 비활성화 + 액션 시작
        if (action != null) {
            confirmButton.onClick.AddListener(() => {
                action();
            });
        }

        gameObject.SetActive(true);
        titleText.text = title;
        contentText.text = content;
    }
}
