using PrizeSystem; using System; using TMPro; using UnityEngine; using UnityEngine.UI; public class QrPanel : MonoBehaviour { private bool initialized = false; public event Action OnComplete; [SerializeField] private Image QrImage; [SerializeField] private TextMeshProUGUI Label; [SerializeField] private float timer = 0; private float timeToAct = 3; private void OnEnable() { initialized = false; } private void OnDisable() { initialized = false; Clear(); } public void Initialize(Prize prize) { if (initialized) return; if (prize is QrPrize qrPrize) { string message = $"Здравствуйте! Я победил на аппарате {PlayerPrefs.GetString("Serial")}. Жду приз!" + $" Дата выигрыша: {DateTime.Now:dd.MM.yyyy HH:mm}. " + $"Приз: {qrPrize.PrizeText}"; message = workOnSuffix(message); message = "https://t.me/+" + PlayerPrefs.GetString("Number")+"?text=" + message; var tex = QrMaker.MakeTexture(message, 1, drawQuietZones: true); tex.filterMode = FilterMode.Point; var sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0.5f, 0.5f)); QrImage.sprite = sprite; Label.text = qrPrize.PrizeText; } else { OnComplete?.Invoke(); } initialized = true; } private void Clear() { } private void Update() { if (!initialized) return; var input = CollectInputs(); if (input) { timer = Mathf.Clamp(timer + Time.deltaTime, 0, timeToAct); } else { timer = 0; } if (timer >= timeToAct) { OnComplete?.Invoke(); gameObject.SetActive(false); } } bool CollectInputs() { bool action = In.GetButtonAnyPlayer(PlayerAction.left); return action; } string workOnSuffix(string suffix) { suffix = suffix.Replace("%", "%25") .Replace("?", "%3F") .Replace(" ", "%20") .Replace("!", "%21") .Replace("\"", "%22"); return suffix; } }