sega 8a6d23b77d Реорг Scripts
Разделено на 4 модуля
- Menu
- Gameplay
- Settings
- Common
2026-07-15 10:49:55 +03:00

109 lines
3.0 KiB
C#

using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace PrizeSystem
{
public class VitrinaPrizeInput : AbstractPrizeConfigurator
{
[SerializeField] private RectTransform Content;
[SerializeField] private GameObject TogglePrefab;
[SerializeField] RectTransform Pointer;
[SerializeField] private AudioClip NextToggleClip;
private List<VitrinaToggle> toggles;
private int index = 0;
private const int BoxesCount = 5;
private int[] boxes;
public override void ChangeOption(int direction)
{
//òóò äîáàâèòü çâóê
index = (index + 1 + BoxesCount) % BoxesCount;
SetPointerToCurrentToggle();
if(NextToggleClip != null)
SoundManager.instance.playClip(NextToggleClip);
}
public override void Configure(Prize prize)
{
if (prize is VitrinaPrize vitrinaPrize)
{
boxes = vitrinaPrize.Boxes.ToArray();
for (int i = 0; i < BoxesCount; i++)
{
if (boxes.Contains(i+1))
{
toggles[i].SetValue(true);
}
else
{
toggles[i].SetValue(false);
}
}
}
}
private void OnEnable()
{
index = 0;
toggles = new();
for (int i = 0; i < BoxesCount; i++)
{
var go = Instantiate(TogglePrefab, Content);
if (go.TryGetComponent<VitrinaToggle>(out var toggle))
{
toggle.Configure($"ß÷åéêà {i + 1}:", false);
toggles.Add(toggle);
}
else
{
Debug.LogError("Íåò êîìïîíåíòà íà ïðåôàáå òîããëà.");
}
}
if(toggles.Count > 0) SetPointerToCurrentToggle();
}
void SetPointerToCurrentToggle()
{
RectTransform activeElement = Content.GetChild(index).GetComponent<RectTransform>();
Pointer.position = activeElement.position;
}
private void OnDisable()
{
foreach (var toggle in toggles)
{
Destroy(toggle.gameObject);
}
toggles.Clear();
}
public override Prize GetPrize()
{
List<int> boxNumbers = new List<int>();
for (int i = 0;i < toggles.Count; i++)
if (toggles[i].State)
boxNumbers.Add(i+1);
return PrizeUtils.CreatePrize(boxNumbers.ToArray());
}
public override void Swipe(int direction)
{
bool value = direction > 0 ? true : false;
toggles[index].SetValue(value);
}
public override void Tick()
{
}
}
}