using UnityEngine;
namespace RR.Common.UI
{
///
/// Пример использования TextInputModal для различных типов ввода
///
public class TextInputModal_Test : MonoBehaviour
{
[SerializeField] private TextInputModal textInputModal;
///
/// Открывает модальное окно для ввода номера телефона
///
public void OpenPhoneNumberInput()
{
if (textInputModal == null) return;
// Устанавливаем алфавит для телефонных номеров
textInputModal.SetAlphabet(TextInputAlphabets.PhoneNumber);
// Устанавливаем количество ячеек (например, 11 для российского номера)
textInputModal.SetCellCount(11);
// Подписываемся на события
textInputModal.OnTextConfirmed += OnPhoneNumberEntered;
textInputModal.OnTextCancelled += OnInputCancelled;
// Открываем окно
textInputModal.OpenForInput("Введите номер телефона", "+7");
}
///
/// Открывает модальное окно для ввода имени игрока
///
public void OpenPlayerNameInput()
{
if (textInputModal == null) return;
// Устанавливаем алфавит для имени (русские буквы)
textInputModal.SetAlphabet(TextInputAlphabets.RussianStandard);
// Устанавливаем количество ячеек
textInputModal.SetCellCount(15);
// Подписываемся на события
textInputModal.OnTextConfirmed += OnPlayerNameEntered;
textInputModal.OnTextCancelled += OnInputCancelled;
// Открываем окно
textInputModal.OpenForInput("Введите ваше имя");
}
///
/// Открывает модальное окно для ввода кода приза
///
public void OpenPrizeCodeInput()
{
if (textInputModal == null) return;
// Устанавливаем алфавит только из цифр
textInputModal.SetAlphabet(TextInputAlphabets.Numeric);
// Устанавливаем количество ячеек (например, 6 для кода)
textInputModal.SetCellCount(6);
// Подписываемся на события
textInputModal.OnTextConfirmed += OnPrizeCodeEntered;
textInputModal.OnTextCancelled += OnInputCancelled;
// Открываем окно
textInputModal.OpenForInput("Введите код приза");
}
///
/// Открывает модальное окно для ввода email
///
public void OpenEmailInput()
{
if (textInputModal == null) return;
// Устанавливаем алфавит для email
textInputModal.SetAlphabet(TextInputAlphabets.Email);
// Устанавливаем количество ячеек
textInputModal.SetCellCount(20);
// Подписываемся на события
textInputModal.OnTextConfirmed += OnEmailEntered;
textInputModal.OnTextCancelled += OnInputCancelled;
// Открываем окно
textInputModal.OpenForInput("Введите email");
}
private void OnPhoneNumberEntered(string phoneNumber)
{
Debug.Log($"Введен номер телефона: {phoneNumber}");
// Отписываемся от событий
textInputModal.OnTextConfirmed -= OnPhoneNumberEntered;
textInputModal.OnTextCancelled -= OnInputCancelled;
// Здесь можно сохранить номер телефона
PlayerPrefs.SetString("PlayerPhone", phoneNumber);
}
private void OnPlayerNameEntered(string playerName)
{
Debug.Log($"Введено имя игрока: {playerName}");
// Отписываемся от событий
textInputModal.OnTextConfirmed -= OnPlayerNameEntered;
textInputModal.OnTextCancelled -= OnInputCancelled;
// Здесь можно сохранить имя игрока
PlayerPrefs.SetString("PlayerName", playerName);
}
private void OnPrizeCodeEntered(string prizeCode)
{
Debug.Log($"Введен код приза: {prizeCode}");
// Отписываемся от событий
textInputModal.OnTextConfirmed -= OnPrizeCodeEntered;
textInputModal.OnTextCancelled -= OnInputCancelled;
// Здесь можно проверить код приза
// CheckPrizeCode(prizeCode);
}
private void OnEmailEntered(string email)
{
Debug.Log($"Введен email: {email}");
// Отписываемся от событий
textInputModal.OnTextConfirmed -= OnEmailEntered;
textInputModal.OnTextCancelled -= OnInputCancelled;
// Здесь можно сохранить email
PlayerPrefs.SetString("PlayerEmail", email);
}
private void OnInputCancelled()
{
Debug.Log("Ввод отменен");
// Отписываемся от всех событий
textInputModal.OnTextConfirmed -= OnPhoneNumberEntered;
textInputModal.OnTextConfirmed -= OnPlayerNameEntered;
textInputModal.OnTextConfirmed -= OnPrizeCodeEntered;
textInputModal.OnTextConfirmed -= OnEmailEntered;
textInputModal.OnTextCancelled -= OnInputCancelled;
}
}
}