sega ec0920350d Обновить интерфейс настройки призов и исправить их добавление
Использовать полную иконку персонажа и крестик для пустого приза.
Добавить звук переключения, указатели выбора и анимацию добавленных призов за 0,3 секунды.
Скрывать экран настроек на время работы с конфигуратором призов.
Восстановить ссылку на префаб добавленного приза и оформить контекстные окна по макетам.
Устранить повторное подтверждение QR-приза и исправить направление вертикальной навигации витрины.

Проверено в Unity в режиме игры: ввод и сохранение значений, добавление и удаление пяти типов призов, анимация выбора и защита от повторного добавления. Ошибок в консоли нет.
2026-09-18 13:24:45 +03:00

45 lines
996 B
C#

using PrizeSystem;
using System;
using UnityEngine;
using UnityEngine.UI;
public abstract class BasePrizeConfigurator : MonoBehaviour, IControlable
{
public event Action<Prize> OnPrizeConfigured;
[SerializeField] private Button _applyButton;
private bool _completed;
public bool ControlsEnabled { get; set; } = true;
protected virtual void Awake()
{
if (_applyButton != null)
_applyButton.onClick.AddListener(Confirm);
}
protected virtual void OnDestroy()
{
if (_applyButton != null)
_applyButton.onClick.RemoveListener(Confirm);
}
public abstract void Configure(PrizeType prizeType);
public abstract void Confirm();
public virtual void Complete(Prize prize)
{
if (_completed)
return;
_completed = true;
ControlsEnabled = false;
OnPrizeConfigured?.Invoke(prize);
Destroy(gameObject);
}
public virtual void UpdateControls() { }
}