using System; using System.Collections; using System.Linq; using NitroxClient.Unity.Helper; using TMPro; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.UI; namespace NitroxClient.MonoBehaviours.Gui.MainMenu; public class MainMenuNotificationPanel : MonoBehaviour, uGUI_INavigableIconGrid, uGUI_IButtonReceiver { public const string NAME = "MultiplayerNotification"; private static MainMenuNotificationPanel instance; private Image loadingCircle; private TextMeshProUGUI text; private GameObject confirmObject; private Button confirmButton; private mGUI_Change_Legend_On_Select confirmButtonLegend; private LegendButtonData[] savedLegendData; private string returningMenuPanel; private Action continuationAction; public static void ShowLoading() { if (!instance) { Log.Error($"Tried to use {nameof(ShowLoading)} while {nameof(MainMenuNotificationPanel)} was not ready"); return; } instance.confirmObject.SetActive(false); instance.loadingCircle.gameObject.SetActive(true); instance.text.text = Language.main.Get("Nitrox_Loading"); uGUI_MainMenu.main.ShowPrimaryOptions(true); MainMenuRightSide.main.OpenGroup(NAME); instance.confirmButtonLegend.legendButtonConfiguration = []; } public static void ShowMessage(string message, string returningMenuPanel, Action continuationAction = null) { if (!instance) { Log.Error("Tried to use ShowMessage() while MainMenuJoinServerNotificationPanel was not ready"); return; } instance.text.text = message; instance.returningMenuPanel = returningMenuPanel; instance.continuationAction = continuationAction; instance.confirmObject.SetActive(true); instance.loadingCircle.gameObject.SetActive(false); uGUI_MainMenu.main.ShowPrimaryOptions(true); MainMenuRightSide.main.OpenGroup(NAME); instance.confirmButtonLegend.legendButtonConfiguration = instance.savedLegendData; } public void Setup(GameObject savedGamesRef) { instance = this; Destroy(transform.RequireGameObject("Scroll View")); Destroy(GetComponentInChildren()); text = GetComponentInChildren(); text.horizontalAlignment = HorizontalAlignmentOptions.Center; text.verticalAlignment = VerticalAlignmentOptions.Top; text.transform.localPosition = new Vector3(-375, 350, 0); text.GetComponent().sizeDelta = new Vector2(350, 280); GameObject multiplayerButtonRef = savedGamesRef.RequireGameObject("Scroll View/Viewport/SavedGameAreaContent/NewGame"); confirmObject = Instantiate(multiplayerButtonRef, transform, false); confirmObject.transform.localPosition = new Vector3(-200, 50, 0); confirmObject.transform.localScale = new Vector3(1.25f, 1.25f, 1.25f); confirmObject.transform.GetChild(0).GetComponent().sizeDelta = new Vector2(200, 40); confirmObject.GetComponentInChildren().text = Language.main.Get("Nitrox_OK"); confirmButton = confirmObject.RequireTransform("NewGameButton").GetComponent