2026-07-14 11:14:13 +03:00

103 lines
2.4 KiB
C#

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;
}
}