123 lines
5.9 KiB
C#
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}]";
|
|
}
|
|
}
|
|
}
|
|
} |