Files
XRLib/Assets/Scripts/UVC/UI/Modal/ModalContent.cs
2025-06-12 19:25:33 +09:00

123 lines
5.9 KiB
C#

using UVC.Locale; // LocalizationManager 사용을 위해 추가
namespace UVC.UI.Modal
{
public class ModalContent
{
/// <summary>
/// 모달 창의 제목입니다. 다국어 지원을 위해 직접 설정하거나, 생성 후 별도로 설정할 수 있습니다.
/// </summary>
public string Title { get; set; }
/// <summary>
/// 모달 창에 표시될 메시지 또는 본문 내용입니다. 다국어 지원을 위해 직접 설정하거나, 생성 후 별도로 설정할 수 있습니다.
/// </summary>
public string Message { get; set; }
private string _confirmButtonText;
/// <summary>
/// 확인 버튼에 표시될 텍스트입니다.
/// 기본적으로 "modal_confirm_button" 키를 사용하여 <see cref="LocalizationManager"/>에서 번역된 문자열을 가져옵니다.
/// 직접 설정하여 이 기본값을 재정의할 수 있습니다.
/// </summary>
public string ConfirmButtonText
{
get
{
// _confirmButtonText가 명시적으로 설정되지 않았고, LocalizationManager 사용이 가능하다면 번역된 문자열을 반환
if (string.IsNullOrEmpty(_confirmButtonText) && LocalizationManager.Instance != null)
{
return LocalizationManager.Instance.GetString("button_confirm");
}
// 명시적으로 설정된 값이 있거나 LocalizationManager를 사용할 수 없다면 해당 값 또는 기본 키 반환
return !string.IsNullOrEmpty(_confirmButtonText) ? _confirmButtonText : "[button_confirm]";
}
set => _confirmButtonText = value;
}
private string _cancelButtonText;
/// <summary>
/// 취소 버튼에 표시될 텍스트입니다.
/// 기본적으로 "modal_cancel_button" 키를 사용하여 <see cref="LocalizationManager"/>에서 번역된 문자열을 가져옵니다.
/// 직접 설정하여 이 기본값을 재정의할 수 있습니다.
/// </summary>
public string CancelButtonText
{
get
{
// _cancelButtonText가 명시적으로 설정되지 않았고, LocalizationManager 사용이 가능하다면 번역된 문자열을 반환
if (string.IsNullOrEmpty(_cancelButtonText) && LocalizationManager.Instance != null)
{
return LocalizationManager.Instance.GetString("button_cancel");
}
// 명시적으로 설정된 값이 있거나 LocalizationManager를 사용할 수 없다면 해당 값 또는 기본 키 반환
return !string.IsNullOrEmpty(_cancelButtonText) ? _cancelButtonText : "[button_cancel]";
}
set => _cancelButtonText = value;
}
/// <summary>
/// 확인 버튼 표시 여부를 결정합니다. (기본값: true)
/// </summary>
public bool ShowConfirmButton { get; set; } = true;
/// <summary>
/// 취소 버튼 표시 여부를 결정합니다. (기본값: true)
/// </summary>
public bool ShowCancelButton { get; set; } = true;
/// <summary>
/// 모달 콘텐츠로 사용될 프리팹의 경로입니다.
/// </summary>
public string PrefabPath { get; private set; }
/// <summary>
/// ModalContent 생성자입니다.
/// </summary>
/// <param name="prefabPath">로드할 프리팹의 경로입니다. 이 프리팹 내부에 UI 요소들이 구성되어 있어야 합니다.</param>
public ModalContent(string prefabPath)
{
PrefabPath = prefabPath;
// Title, Message 등 다른 텍스트 속성도 필요한 경우 여기서 기본 다국어 키를 사용하여 초기화할 수 있습니다.
// 예: Title = LocalizationManager.Instance.GetString("default_modal_title");
}
/// <summary>
/// 특정 다국어 키를 사용하여 확인 버튼 텍스트를 설정합니다.
/// </summary>
/// <param name="localizationKey">사용할 다국어 키입니다.</param>
public void SetConfirmButtonTextFromKey(string localizationKey)
{
// 직접 값을 설정하는 대신, 키를 저장하고 getter에서 처리하도록 할 수도 있으나,
// 현재 구조에서는 setter를 통해 LocalizationManager.GetString을 호출하는 것이 더 간단합니다.
// 다만, 이 경우 인스턴스 생성 시점의 언어에 고정될 수 있으므로,
// 아래와 같이 getter에서 매번 가져오도록 하는 것이 언어 변경에 동적으로 반응합니다.
// 여기서는 명시적 설정을 위해 _confirmButtonText를 사용합니다.
// 만약 항상 최신 언어를 반영해야 한다면, _confirmButtonTextKey 와 같은 필드를 두고 getter에서 처리해야 합니다.
if (LocalizationManager.Instance != null)
{
_confirmButtonText = LocalizationManager.Instance.GetString(localizationKey);
}
else
{
_confirmButtonText = $"[{localizationKey}]";
}
}
/// <summary>
/// 특정 다국어 키를 사용하여 취소 버튼 텍스트를 설정합니다.
/// </summary>
/// <param name="localizationKey">사용할 다국어 키입니다.</param>
public void SetCancelButtonTextFromKey(string localizationKey)
{
if (LocalizationManager.Instance != null)
{
_cancelButtonText = LocalizationManager.Instance.GetString(localizationKey);
}
else
{
_cancelButtonText = $"[{localizationKey}]";
}
}
}
}