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

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

58 lines
1.8 KiB
C#

using PrizeSystem;
using TMPro;
using UnityEngine;
using UnityEngine.Serialization;
using UnityEngine.UI;
public class CountablePrizeConfigurator : BasePrizeConfigurator
{
[SerializeField, FormerlySerializedAs("icon")] private Image _icon;
[SerializeField, FormerlySerializedAs("numberInput")] private MNumberStepper _numberInput;
[SerializeField] private TextMeshProUGUI _prizeName;
private PrizeType _prizeType;
public override void Configure(PrizeType prizeType)
{
_prizeType = prizeType;
_icon.sprite = PrizeSystemManager.GetPrizeIcon(prizeType);
_prizeName.text = prizeType switch
{
PrizeType.Hopper => "ХОППЕР",
PrizeType.Ticket => "ТИКЕТ",
PrizeType.Marbles => "МАРБЛС",
_ => PrizeUtils.PrizeTypeToString(prizeType).ToUpperInvariant()
};
int maxValue = prizeType switch
{
PrizeType.Hopper => 10,
PrizeType.Ticket => 100,
PrizeType.Marbles => 10,
_ => 1
};
_numberInput.Initialize(value: 1, min: 1, maxValue);
}
public override void Confirm()
{
CountablePrizeType countableType = _prizeType switch
{
PrizeType.Hopper => CountablePrizeType.Hopper,
PrizeType.Ticket => CountablePrizeType.Ticket,
PrizeType.Marbles => CountablePrizeType.Marbles,
_ => CountablePrizeType.Hopper
};
Complete(PrizeUtils.CreatePrize(countableType, _numberInput.Value));
}
public override void UpdateControls()
{
_numberInput.SetDirection(In.GetAxis(JoystickSide.Both, InteractMode.Continious).x);
if (In.GetAction(JoystickSide.Both, InteractMode.Discrete))
Confirm();
}
}