diff --git a/Assets/Scripts/ChatroomMenu.cs b/Assets/Scripts/ChatroomMenu.cs index c767e94..fe414a9 100644 --- a/Assets/Scripts/ChatroomMenu.cs +++ b/Assets/Scripts/ChatroomMenu.cs @@ -1,10 +1,10 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Text; using System.Threading.Tasks; -using Newtonsoft.Json; using Newtonsoft.Json.Linq; using TMPro; using UnityEngine; @@ -44,6 +44,7 @@ public class ChatroomMenu : MonoBehaviour public Button reportMessagePanelExitButton; public Button reportMessagePanelSubmitButton; public TMP_InputField reportMessagePanelReportReason; + public Dictionary customIcons; void Start() { @@ -105,38 +106,46 @@ public class ChatroomMenu : MonoBehaviour usernameText.text = selectedMessageForOptions.Username; messageText.text = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content)); - playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + selectedMessageForOptions.Icon); - if (selectedMessageForOptions.Icon == 1) + if (selectedMessageForOptions.CustomIcon == null) { - playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID); + playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + selectedMessageForOptions.Icon); + if (selectedMessageForOptions.Icon == 1) + { + playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID); + } + playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay); + if (selectedMessageForOptions.Overlay == 0) + { + playerOverlayIcon.gameObject.SetActive(false); + } + else if (selectedMessageForOptions.Overlay == 8) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); + } + else if (selectedMessageForOptions.Overlay == 11) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); + } + else if (selectedMessageForOptions.Overlay == 13) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); + } + try + { + playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f); + playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f); + } + catch (Exception) + { + playerIcon.color = Color.white; + playerOverlayIcon.color = Color.white; + } } - playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay); - if (selectedMessageForOptions.Overlay == 0) + else { + Tools.RenderFromBase64(customIcons[selectedMessageForOptions.CustomIcon], playerIcon); playerOverlayIcon.gameObject.SetActive(false); } - else if (selectedMessageForOptions.Overlay == 8) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); - } - else if (selectedMessageForOptions.Overlay == 11) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); - } - else if (selectedMessageForOptions.Overlay == 13) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); - } - try - { - playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f); - playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f); - } - catch (Exception) - { - playerIcon.color = Color.white; - playerOverlayIcon.color = Color.white; - } rowInfo = editMessageChild.GetChild(3); usernameText = rowInfo.transform.GetChild(2).GetComponent(); @@ -148,38 +157,46 @@ public class ChatroomMenu : MonoBehaviour usernameText.text = selectedMessageForOptions.Username; messageText.text = Encoding.UTF8.GetString(Convert.FromBase64String(selectedMessageForOptions.Content)); editMessageChildNewContentInputBox.onValueChanged.AddListener((value) => messageText.text = value); - playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + selectedMessageForOptions.Icon); - if (selectedMessageForOptions.Icon == 1) + if (selectedMessageForOptions.CustomIcon == null) { - playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID); + playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + selectedMessageForOptions.Icon); + if (selectedMessageForOptions.Icon == 1) + { + playerIcon.sprite = Tools.GetIconForUser(selectedMessageForOptions.UserID); + } + playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay); + if (selectedMessageForOptions.Overlay == 0) + { + playerOverlayIcon.gameObject.SetActive(false); + } + else if (selectedMessageForOptions.Overlay == 8) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); + } + else if (selectedMessageForOptions.Overlay == 11) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); + } + else if (selectedMessageForOptions.Overlay == 13) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); + } + try + { + playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f); + playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f); + } + catch (Exception) + { + playerIcon.color = Color.white; + playerOverlayIcon.color = Color.white; + } } - playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + selectedMessageForOptions.Overlay); - if (selectedMessageForOptions.Overlay == 0) + else { + Tools.RenderFromBase64(customIcons[selectedMessageForOptions.CustomIcon], playerIcon); playerOverlayIcon.gameObject.SetActive(false); } - else if (selectedMessageForOptions.Overlay == 8) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); - } - else if (selectedMessageForOptions.Overlay == 11) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); - } - else if (selectedMessageForOptions.Overlay == 13) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); - } - try - { - playerIcon.color = new Color(selectedMessageForOptions.BirdColor[0] / 255f, selectedMessageForOptions.BirdColor[1] / 255f, selectedMessageForOptions.BirdColor[2] / 255f); - playerOverlayIcon.color = new Color(selectedMessageForOptions.OverlayColor[0] / 255f, selectedMessageForOptions.OverlayColor[1] / 255f, selectedMessageForOptions.OverlayColor[2] / 255f); - } - catch (Exception) - { - playerIcon.color = Color.white; - playerOverlayIcon.color = Color.white; - } optionsPanel.SetActive(false); editMessage.SetActive(true); @@ -361,7 +378,9 @@ public class ChatroomMenu : MonoBehaviour break; default: shouldClear = false; - var messages = JsonConvert.DeserializeObject(response); + var jsonResponse = JObject.Parse(response); + var messages = jsonResponse["messages"].ToObject(); + customIcons = jsonResponse["customIcons"].ToObject>(); var localUserId = BazookaManager.Instance.GetAccountID(); var sortedMessages = messages.OrderBy(m => m.ID).ToArray(); for (int i = 0; i < sortedMessages.Length; i++) @@ -406,38 +425,46 @@ public class ChatroomMenu : MonoBehaviour usernameText.text = message.Username; messageText.text = Encoding.UTF8.GetString(Convert.FromBase64String(message.Content)); - playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + message.Icon); - if (message.Icon == 1) + if (message.CustomIcon == null) { - playerIcon.sprite = Tools.GetIconForUser(message.UserID); + playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + message.Icon); + if (message.Icon == 1) + { + playerIcon.sprite = Tools.GetIconForUser(message.UserID); + } + playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + message.Overlay); + if (message.Overlay == 0) + { + playerOverlayIcon.gameObject.SetActive(false); + } + else if (message.Overlay == 8) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); + } + else if (message.Overlay == 11) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); + } + else if (message.Overlay == 13) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); + } + try + { + playerIcon.color = new Color(message.BirdColor[0] / 255f, message.BirdColor[1] / 255f, message.BirdColor[2] / 255f); + playerOverlayIcon.color = new Color(message.OverlayColor[0] / 255f, message.OverlayColor[1] / 255f, message.OverlayColor[2] / 255f); + } + catch (Exception) + { + playerIcon.color = Color.white; + playerOverlayIcon.color = Color.white; + } } - playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + message.Overlay); - if (message.Overlay == 0) + else { + Tools.RenderFromBase64(customIcons[message.CustomIcon], playerIcon); playerOverlayIcon.gameObject.SetActive(false); } - else if (message.Overlay == 8) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); - } - else if (message.Overlay == 11) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); - } - else if (message.Overlay == 13) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); - } - try - { - playerIcon.color = new Color(message.BirdColor[0] / 255f, message.BirdColor[1] / 255f, message.BirdColor[2] / 255f); - playerOverlayIcon.color = new Color(message.OverlayColor[0] / 255f, message.OverlayColor[1] / 255f, message.OverlayColor[2] / 255f); - } - catch (Exception) - { - playerIcon.color = Color.white; - playerOverlayIcon.color = Color.white; - } optionsButton.onClick.AddListener(() => OptionsButtonClick(message, localUserId ?? 0)); rowInfo.name = "ChatroomRow_" + message.ID; var entryComponet = rowInfo.AddComponent(); diff --git a/Assets/Scripts/LeaderboardsMenu.cs b/Assets/Scripts/LeaderboardsMenu.cs index dd5d88a..c1f0d6e 100644 --- a/Assets/Scripts/LeaderboardsMenu.cs +++ b/Assets/Scripts/LeaderboardsMenu.cs @@ -1,6 +1,6 @@ using System; +using System.Collections.Generic; using System.Numerics; -using System.Text; using Newtonsoft.Json.Linq; using TMPro; using UnityEngine; @@ -26,6 +26,7 @@ public class LeaderboardsMenu : MonoBehaviour public GameObject berryContent; public TMP_Dropdown berryShowTypeDropdown; public GameObject berrySampleObject; + public Dictionary customIcons; void Awake() { @@ -144,10 +145,12 @@ public class LeaderboardsMenu : MonoBehaviour } else { - var jsonResponse = JArray.Parse(response); - for (int i = 0; i < jsonResponse.Count; i++) + var jsonResponse = JObject.Parse(response); + var entries = (JArray)jsonResponse["entries"]; + customIcons = jsonResponse["customIcons"].ToObject>(); + for (int i = 0; i < entries.Count; i++) { - var entry = JObject.Parse(jsonResponse[i].ToString()); + var entry = JObject.Parse(entries[i].ToString()); var username = (string)entry["username"]; var highScore = BigInteger.Parse((string)entry["value"]); var icon = (int)entry["icon"]; @@ -155,6 +158,7 @@ public class LeaderboardsMenu : MonoBehaviour var uid = BigInteger.Parse((string)entry["userid"]); var birdColor = (JArray)entry["birdColor"]; var overlayColor = (JArray)entry["overlayColor"]; + var customIcon = (string)entry["customIcon"]; var entryInfo = Instantiate(scoreSampleObject, scoreContent.transform); var usernameText = entryInfo.transform.GetChild(0).GetComponent(); @@ -170,38 +174,46 @@ public class LeaderboardsMenu : MonoBehaviour usernameText.text = $"{username} (#{i + 1})"; highScoreText.text += Tools.FormatWithCommas(highScore); - playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + icon); - if (icon == 1) + if (customIcon == null) { - playerIcon.sprite = Tools.GetIconForUser(uid); + playerIcon.sprite = Resources.Load("Icons/Icons/bird_" + icon); + if (icon == 1) + { + playerIcon.sprite = Tools.GetIconForUser(uid); + } + playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + overlay); + if (overlay == 0) + { + playerOverlayIcon.gameObject.SetActive(false); + } + else if (overlay == 8) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); + } + else if (overlay == 11) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); + } + else if (overlay == 13) + { + playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); + } + try + { + playerIcon.color = new Color((int)birdColor[0] / 255f, (int)birdColor[1] / 255f, (int)birdColor[2] / 255f); + playerOverlayIcon.color = new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f); + } + catch (Exception) + { + playerIcon.color = Color.white; + playerOverlayIcon.color = Color.white; + } } - playerOverlayIcon.sprite = Resources.Load("Icons/Overlays/overlay_" + overlay); - if (overlay == 0) + else { + Tools.RenderFromBase64(customIcons[customIcon], playerIcon); playerOverlayIcon.gameObject.SetActive(false); } - else if (overlay == 8) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.56f, 14.81f); - } - else if (overlay == 11) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-14.74451f, 20.39122f); - } - else if (overlay == 13) - { - playerOverlayIcon.transform.localPosition = new UnityEngine.Vector2(-16.54019f, 14.70365f); - } - try - { - playerIcon.color = new Color((int)birdColor[0] / 255f, (int)birdColor[1] / 255f, (int)birdColor[2] / 255f); - playerOverlayIcon.color = new Color((int)overlayColor[0] / 255f, (int)overlayColor[1] / 255f, (int)overlayColor[2] / 255f); - } - catch (Exception) - { - playerIcon.color = Color.white; - playerOverlayIcon.color = Color.white; - } entryInfo.SetActive(true); } } diff --git a/Assets/Scripts/Types/ChatroomMessage.cs b/Assets/Scripts/Types/ChatroomMessage.cs index f33fe8b..3e92450 100644 --- a/Assets/Scripts/Types/ChatroomMessage.cs +++ b/Assets/Scripts/Types/ChatroomMessage.cs @@ -39,4 +39,8 @@ public class ChatroomMessage { [Preserve] [JsonProperty("deleted")] public bool Deleted { get; set; } + + [Preserve] + [JsonProperty("customIcon")] + public string CustomIcon { get; set; } } \ No newline at end of file