Danro/Assets/Scripts/Managers/PrizeSystemManager.cs

90 lines
3.0 KiB
C#

using System;
using System.Collections.Generic;
using JetBrains.Annotations;
using RR.Common.Managers;
using UnityEngine;
using RR.Common.Utility;
using RR.Game2D.Core.Managers;
public class PrizeSystemManager : MonoBehaviour
{
public static PrizeSystemManager Instance { get; private set; }
[Header("Настройки выдачи призов")]
[SerializeField] private bool givePrizes = true;
[SerializeField] private bool enableHopper = false;
[Header("Настройки генерации QR-кодов")]
[SerializeField] private List<QRCodeInfo> qrCodes = new();
private readonly List<Texture2D> generatedQRCodes = new();
[SerializeField] private string _phoneNumberMask = "+7XXXXXXXXXX";
// [SerializeField] private string telegramLinkPrefix = "https://t.me/";
// [SerializeField] private string whatsappLinkPrefix = "https://wa.me/";
private string _phoneNumber = string.Empty;
public void Initialize()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
return;
}
Instance = this;
DontDestroyOnLoad(gameObject);
Debug.Log(givePrizes
? "Prize System Initialized: Prizes will be given."
: "Prize System Initialized: Prizes will NOT be given.");
Debug.Log(enableHopper ? "Hopper is enabled for prize dispensing." : "Hopper is disabled.");
_phoneNumber = SettingsManager.Instance.GetCurrentGameSettings().phoneNumber;
_phoneNumber = PhoneNumberUtils.ValidatePhoneNumber(_phoneNumber);
_phoneNumber = PhoneNumberUtils.ApplyPhoneMask(_phoneNumber, _phoneNumberMask);
GenerateQRCodes();
}
// Если не инициализируется в GameManager, инициализировать тут
// private void Awake()
// {
// Initialize();
// }
public void GivePrize()
{
if (enableHopper)
PrizeSystem.GivePrize();
else
Debug.Log("Hopper is disabled. Prize dispensing skipped.");
}
public Texture2D[] GetQRCodes()
{
return generatedQRCodes.ToArray();
}
private void GenerateQRCodes()
{
// Очищаем предыдущие QR-коды
if (generatedQRCodes.Count > 0) generatedQRCodes.Clear();
foreach (QRCodeInfo data in qrCodes)
{
if (!data.generateQRCode) continue;
string fullLink = data.GetFullLink(_phoneNumber);
Texture2D qrTexture = QRMaker.MakeTexture(fullLink,
8,
true,
QRCodeInfo.GetColor(data.darkColor),
QRCodeInfo.GetColor(data.lightColor));
generatedQRCodes.Add(qrTexture);
Debug.Log($"Generated QR Code for link: {fullLink}");
}
}
}