using System; using System.Numerics; using System.Security.Cryptography; using System.Text; using TMPro; using UnityEngine; using UnityEngine.UI; public static class Tools { public static Sprite GetIconForUser(BigInteger user) { if (user == 1) return Resources.Load("Icons/Icons/bird_-1"); else if (user == 2) return Resources.Load("Icons/Icons/bird_-2"); else if (user == 4) return Resources.Load("Icons/Icons/bird_-3"); else if (user == 3) return Resources.Load("Icons/Icons/bird_-4"); else return Resources.Load("Icons/Icons/bird_1"); } public static string FormatWithCommas(string number) { try { return FormatWithCommas(BigInteger.Parse(number)); } catch { return number; } } public static string FormatWithCommas(BigInteger number) { return string.Format("{0:N0}", number); } public static void UpdateStatusText(TMP_Text statusText, string message, Color color) { statusText.text = message; statusText.color = color; } public static void RenderFromBase64(string base64, Image targetImage) { byte[] imageData = Convert.FromBase64String(base64); Texture2D tex = new(2, 2, TextureFormat.ARGB32, false); if (!tex.LoadImage(imageData)) return; tex.filterMode = FilterMode.Point; tex.Apply(false, false); Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); targetImage.sprite = sprite; } public static void RenderFromBase64(string base64, SpriteRenderer targetImage) { byte[] imageData = Convert.FromBase64String(base64); Texture2D tex = new(2, 2, TextureFormat.ARGB32, false); if (!tex.LoadImage(imageData)) return; tex.filterMode = FilterMode.Point; tex.Apply(false, false); Sprite sprite = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new UnityEngine.Vector2(0.5f, 0.5f)); targetImage.sprite = sprite; } public static void RefreshHierarchy(GameObject root) { foreach (Transform child in root.transform) RefreshHierarchy(child.gameObject); if (root.TryGetComponent(out var rect)) LayoutRebuilder.ForceRebuildLayoutImmediate(rect); } public static string Sha512Sum(byte[] data) { using var sha512 = SHA512.Create(); var hash = sha512.ComputeHash(data); var sb = new StringBuilder(hash.Length * 2); foreach (var b in hash) sb.Append(b.ToString("x2")); return sb.ToString(); } }