39 lines
1.5 KiB
C#
39 lines
1.5 KiB
C#
using System.IO;
|
|
using System;
|
|
using PrizeSystem;
|
|
using UnityEngine;
|
|
using QRCoder;
|
|
|
|
public static class QrMaker
|
|
{
|
|
// Возвращает Texture2D для UI/материалов
|
|
public static Texture2D MakeTexture(string text, int pixelsPerModule = 1,
|
|
bool drawQuietZones = true)
|
|
{
|
|
using var gen = new QRCodeGenerator();
|
|
using var data = gen.CreateQrCode(text, QRCodeGenerator.ECCLevel.M);
|
|
var png = new PngByteQRCode(data);
|
|
|
|
// Генерим PNG-байты без System.Drawing
|
|
byte[] bytes = png.GetGraphic(pixelsPerModule);
|
|
|
|
var tex = new Texture2D(2, 2, TextureFormat.RGBA32, false);
|
|
tex.LoadImage(bytes); // раскодирует PNG → RGBA
|
|
tex.Apply(false, false);
|
|
return tex;
|
|
}
|
|
|
|
public static Texture2D MakePrizeTexture(QrPrize prize, int pixelsPerModule = 1)
|
|
=> MakeTexture(MakePrizeUrl(prize), pixelsPerModule);
|
|
|
|
public static string MakePrizeUrl(QrPrize prize)
|
|
{
|
|
string message = $"Здравствуйте! Я победил на аппарате {PlayerPrefs.GetString("Serial")}. Жду приз!" +
|
|
$" Дата выигрыша: {DateTime.Now:dd.MM.yyyy HH:mm}. " +
|
|
$"Приз: {prize.PrizeText}";
|
|
string administrationNumber = PlayerPrefs.GetString(PrefsKeyVault.NUMBER_ADMIN);
|
|
|
|
return $"https://t.me/+{administrationNumber}?text={Uri.EscapeDataString(message)}";
|
|
}
|
|
}
|