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 qrCodes = new(); private readonly List 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}"); } } }