Использовать полную иконку персонажа и крестик для пустого приза. Добавить звук переключения, указатели выбора и анимацию добавленных призов за 0,3 секунды. Скрывать экран настроек на время работы с конфигуратором призов. Восстановить ссылку на префаб добавленного приза и оформить контекстные окна по макетам. Устранить повторное подтверждение QR-приза и исправить направление вертикальной навигации витрины. Проверено в Unity в режиме игры: ввод и сохранение значений, добавление и удаление пяти типов призов, анимация выбора и защита от повторного добавления. Ошибок в консоли нет.
46 lines
1.1 KiB
C#
46 lines
1.1 KiB
C#
using PrizeSystem;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
using UnityEngine.UI;
|
|
|
|
public class QrPrizeConfigurator : BasePrizeConfigurator
|
|
{
|
|
[SerializeField, FormerlySerializedAs("icon")] private Image _icon;
|
|
[SerializeField, FormerlySerializedAs("textInput")] private TextInput _textInput;
|
|
|
|
protected override void Awake()
|
|
{
|
|
base.Awake();
|
|
_textInput.OnComplete += OnTextCompleted;
|
|
}
|
|
|
|
protected override void OnDestroy()
|
|
{
|
|
_textInput.OnComplete -= OnTextCompleted;
|
|
base.OnDestroy();
|
|
}
|
|
|
|
public override void Configure(PrizeType prizeType)
|
|
{
|
|
_icon.sprite = PrizeSystemManager.GetPrizeIcon(prizeType);
|
|
_textInput.SetDestroyOnComplete(false);
|
|
_textInput.Initialize(12, Alphabets.RUS_AND_DIGITS);
|
|
}
|
|
|
|
public override void Confirm()
|
|
{
|
|
OnTextCompleted(_textInput.CollectText());
|
|
}
|
|
|
|
public override void UpdateControls()
|
|
{
|
|
_textInput.UpdateControls();
|
|
}
|
|
|
|
private void OnTextCompleted(string text)
|
|
{
|
|
if (!string.IsNullOrWhiteSpace(text))
|
|
Complete(PrizeUtils.CreatePrize(text));
|
|
}
|
|
}
|