//using MonomiPark.SlimeRancher.Regions; //using SRMultiplayer.Networking; //using System; //using System.Collections.Generic; //using System.IO; //using System.Linq; //using System.Text.RegularExpressions; //using UnityEngine; //using UnityEngine.SceneManagement; /* * TestUi is a version of the multiplayer ui that adds the following information * Added Chat Cheats * More stats Quick silver race is active client status server status server code send and recieve sizes packet sizes */ //namespace SRMultiplayer //{ // class TestUI : SRSingleton // { // private Rect windowRect = new Rect(Screen.width - 300, 20, 300, 500); // private Rect cheatRect = new Rect(20, 20, 300, Screen.height - 40); // private string ipaddress = "localhost"; // private string port = "1337"; // private string servercode = ""; // private bool selectSave; // private List saveFolders; // private bool openMenu = true; // private Vector2 chatScroll; // private Vector2 saveScroll; // private string chatMessage; // private List chatMessages = new List(); // public bool isPublicServer; // private bool isSharedCurrency; // private bool isSharedUpgrades; // private int state; // private string saveName; // public bool cheat; // private string spawnName; // private int spawnAmount = 1; // private int cheatMenuType = 0; // private bool usernameSelected; // public List gingers = new List(); // public List kookadobas = new List(); // public float lastCodeUse; // public string LastError; // public override void Awake() // { // base.Awake(); // Globals.Username = PlayerPrefs.GetString("username", "Username"); // ipaddress = PlayerPrefs.GetString("ipaddress", "localhost"); // port = PlayerPrefs.GetString("port", "1337"); // saveName = PlayerPrefs.GetString("gamename", "srmp"); // } // public void AddChatMessage(string username, string message) // { // chatMessages.Add(username + ": " + message); // chatScroll = new Vector2(0, 100000); // if (chatMessages.Count > 100) // { // chatMessages.RemoveAt(0); // } // } // private void Update() // { // float prevTime = lastCodeUse; // lastCodeUse -= Time.deltaTime; // if (prevTime > 0 && lastCodeUse <= 0) // { // LastError = "Could not connect with Server code. Try restarting the game or use Port forwarding instead"; // } // if (Input.GetKeyDown(KeyCode.F4)) // { // openMenu = !openMenu; // } // } // private void OnGUI() // { // if (Globals.IsMultiplayer && Input.GetKey(KeyCode.Tab)) // { // GUI.BeginGroup(new Rect(Screen.width / 2 - 100, 50, 200, Globals.Players.Count * 25), GUI.skin.box); // foreach (var player in Globals.Players.Values.ToList()) // { // if (player.ID == Globals.LocalID) // { // GUILayout.Label($"{player.Username} ({player.ID}) {(player == null ? Vector3.zero : SRSingleton.Instance.Player.transform.position)}"); // } // else // { // GUILayout.Label($"{player.Username} ({player.ID}) {(player == null ? Vector3.zero : player.transform.position)}"); // } // } // GUI.EndGroup(); // } // if (!openMenu) return; // if (SceneManager.GetActiveScene().buildIndex >= 2) // { // windowRect = GUI.Window(20, windowRect, MultiplayerWindow, "SRMP v" + Globals.Version); // if (cheat) // { // cheatRect = GUI.Window(21, cheatRect, MultiplayerWindow, "You damn cheater"); // } // } // } // private void MultiplayerWindow(int id) // { // cheatRect.height = Mathf.Min(Screen.height - 40, 800); // if (id == 21) // { // if (GUILayout.Button("All gadgets")) // { // foreach (var data in (Gadget.Id[])Enum.GetValues(typeof(Gadget.Id))) // { // SRSingleton.Instance.GadgetDirector.model.gadgets[data] = 100; // } // foreach (var data in Identifiable.CRAFT_CLASS.Union(Identifiable.PLORT_CLASS)) // { // SRSingleton.Instance.GadgetDirector.model.craftMatCounts[data] = 10000; // } // } // if (GUILayout.Button("All Upgrades")) // { // SRSingleton.Instance.PlayerState.model.SetUpgrades(((PlayerState.Upgrade[])Enum.GetValues(typeof(PlayerState.Upgrade))).ToList()); // } // if (GUILayout.Button("Get rich")) // { // SRSingleton.Instance.PlayerState.AddCurrency(1000000); // } // if (GUILayout.Button("Remove all actors")) // { // foreach (var actor in SRSingleton.Instance.GameModel.AllActors().Values.ToList()) // { // if (actor != null && actor.transform != null && actor.transform.gameObject.activeInHierarchy && !Identifiable.SCENE_OBJECTS.Contains(actor.ident)) // { // Destroyer.DestroyActor(actor.transform.gameObject, "Get.Removed"); // } // } // } // GUILayout.BeginHorizontal(); // if (GUILayout.Button("Sleep 1")) // { // SRSingleton.Instance.TimeDirector.FastForwardTo(SRSingleton.Instance.TimeDirector.HoursFromNow(1)); // } // if (GUILayout.Button("Sleep 6")) // { // SRSingleton.Instance.TimeDirector.FastForwardTo(SRSingleton.Instance.TimeDirector.HoursFromNow(6)); // } // GUILayout.EndHorizontal(); // GUILayout.BeginHorizontal(); // if (GUILayout.Button("Sleep 12")) // { // SRSingleton.Instance.TimeDirector.FastForwardTo(SRSingleton.Instance.TimeDirector.HoursFromNow(12)); // } // if (GUILayout.Button("Sleep 24")) // { // SRSingleton.Instance.TimeDirector.FastForwardTo(SRSingleton.Instance.TimeDirector.HoursFromNow(24)); // } // GUILayout.EndHorizontal(); // GUILayout.BeginHorizontal(); // if (GUILayout.Button("Spawn")) // { // cheatMenuType = 0; // } // if (GUILayout.Button("TP")) // { // cheatMenuType = 1; // } // if (GUILayout.Button("Unlock")) // { // cheatMenuType = 2; // } // if (GUILayout.Button("Exchange")) // { // cheatMenuType = 3; // } // GUILayout.EndHorizontal(); // GUILayout.BeginHorizontal(); // if (GUILayout.Button("Gingers")) // { // cheatMenuType = 4; // gingers = Resources.FindObjectsOfTypeAll().ToList(); // } // if (GUILayout.Button("Kookadobas")) // { // cheatMenuType = 5; // kookadobas = Resources.FindObjectsOfTypeAll().ToList(); // } // if (GUILayout.Button("Phase Sites")) // { // cheatMenuType = 6; // } // GUILayout.EndHorizontal(); // if (cheatMenuType == 0) // { // spawnName = GUILayout.TextField(spawnName); // int.TryParse(GUILayout.TextField(spawnAmount.ToString()), out spawnAmount); // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var ident in (Identifiable.Id[])Enum.GetValues(typeof(Identifiable.Id))) // { // try // { // if (ident != Identifiable.Id.NONE && ident != Identifiable.Id.PLAYER) // { // if (string.IsNullOrWhiteSpace(spawnName) || ident.ToString().ToLower().Contains(spawnName.ToLower())) // { // if (GUILayout.Button("Spawn " + ident.ToString())) // { // GameObject prefab = SRSingleton.Instance.LookupDirector.GetPrefab(ident); // if (prefab != null) // { // for (int i = 0; i < spawnAmount; i++) // { // SRBehaviour.InstantiateActor(prefab, SRSingleton.Instance.GameModel.player.currRegionSetId, SRSingleton.Instance.GameModel.player.GetPos() + new Vector3(UnityEngine.Random.Range(-1f, 1f), 4f + (0.1f * (float)i), UnityEngine.Random.Range(-1f, 1f)), Quaternion.identity, false); // } // } // } // } // } // } // catch { } // } // GUILayout.EndScrollView(); // } // else if (cheatMenuType == 1) // { // foreach (var player in Globals.Players.Values) // { // if (!player.IsLocal) // { // if (GUILayout.Button("Teleport to " + player)) // { // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(player.CurrentRegionSet); // SRSingleton.Instance.player.transform.position = player.transform.position + new Vector3(0, 2, 0); // } // } // } // } // else if (cheatMenuType == 2) // { // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var ident in (ProgressDirector.ProgressType[])Enum.GetValues(typeof(ProgressDirector.ProgressType))) // { // try // { // if (ident.ToString().Contains("UNLOCK")) // { // if (GUILayout.Button(ident.ToString())) // { // SRSingleton.Instance.ProgressDirector.AddProgress(ident); // } // } // } // catch { } // } // GUILayout.EndScrollView(); // } // else if (cheatMenuType == 3) // { // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var ident in (ExchangeDirector.OfferType[])Enum.GetValues(typeof(ExchangeDirector.OfferType))) // { // try // { // if (GUILayout.Button("Clear " + ident.ToString())) // { // SRSingleton.Instance.ExchangeDirector.ClearOffer(ident); // } // } // catch { } // } // GUILayout.EndScrollView(); // } // else if (cheatMenuType == 4) // { // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var ginger in gingers) // { // if (ginger != null && ginger.bed.activeSelf && ginger.spawnJoint.connectedBody != null) // { // if (GUILayout.Button("Active Ginger " + ginger.spawnJoint.connectedBody.transform.position)) // { // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(ginger.GetComponentInParent(true).setId); // SRSingleton.Instance.player.transform.position = ginger.transform.position + new Vector3(0, 2, 0); // } // } // else // { // //if (GUILayout.Button("Inactive Ginger " + ginger.id)) // //{ // // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(ginger.GetComponentInParent(true).setId); // // SRSingleton.Instance.player.transform.position = ginger.transform.position + new Vector3(0, 2, 0); // //} // } // } // GUILayout.EndScrollView(); // } // else if (cheatMenuType == 5) // { // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var kookadoba in kookadobas) // { // if (kookadoba != null && kookadoba.bed.activeSelf && kookadoba.spawnJoint.connectedBody != null) // { // if (GUILayout.Button("Active Kookadoba " + kookadoba.spawnJoint.connectedBody.transform.position)) // { // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(kookadoba.GetComponentInParent(true).setId); // SRSingleton.Instance.player.transform.position = kookadoba.transform.position + new Vector3(0, 2, 0); // } // } // else // { // //if (GUILayout.Button("Inactive Ginger " + ginger.id)) // //{ // // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(ginger.GetComponentInParent(true).setId); // // SRSingleton.Instance.player.transform.position = ginger.transform.position + new Vector3(0, 2, 0); // //} // } // } // GUILayout.EndScrollView(); // } // else if (cheatMenuType == 6) // { // saveScroll = GUILayout.BeginScrollView(saveScroll); // foreach (var site in PhaseSite.allSites) // { // if (site != null) // { // if (GUILayout.Button(site.id + " " + (site.phaseableObject != null))) // { // SRSingleton.Instance.PlayerState.model.SetCurrRegionSet(site.GetComponentInParent(true).setId); // SRSingleton.Instance.player.transform.position = site.transform.position + new Vector3(0, 2, 0); // } // } // } // GUILayout.EndScrollView(); // } // GUI.DragWindow(new Rect(0, 0, 10000, 10000)); // } // else // { // if (lastCodeUse > 0) // { // GUILayout.Label("Trying to connect using server code..."); // } // else if (!string.IsNullOrWhiteSpace(LastError)) // { // GUILayout.Label("Error connecting:"); // GUILayout.Label(LastError); // if (GUILayout.Button("OK")) // { // LastError = ""; // } // } // else // { // GUILayout.Label("You can close this menu with F4"); // GUILayout.Space(20); // if (!Globals.IsClient && !Globals.IsServer) // { // if (state == 0) // { // GUILayout.BeginHorizontal(); // GUILayout.Label("Username", GUILayout.Width(60)); // Globals.Username = GUILayout.TextField(Globals.Username, 30); // GUILayout.EndHorizontal(); // if (string.IsNullOrWhiteSpace(Globals.Username) || !new Regex(@"^[a-zA-Z_][\w]*$").IsMatch(Globals.Username)) // { // GUILayout.Label("Invalid username"); // } // else // { // GUILayout.BeginHorizontal(); // if (GUILayout.Button("Continue")) // { // state = 10; // SaveSettings(); // SRSingleton.Instance.UpdateName(Globals.Username); // } // //if (GUILayout.Button("Join Game")) // //{ // // state = 20; // // SaveSettings(); // //} // GUILayout.EndHorizontal(); // } // } // else if (Levels.isMainMenu()) // { // GUILayout.Label("Username: " + Globals.Username); // if (GUILayout.Button("Change Username")) // { // state = 0; // } // if (SRSingleton.Instance.Status == NetworkMasterServer.ConnectionStatus.Connected) // { // GUILayout.Space(20); // GUILayout.Label("Join with server code:"); // GUILayout.BeginHorizontal(); // servercode = GUILayout.TextField(servercode, 5, GUILayout.Width(80)); // servercode = servercode.Replace(" ", "").ToUpper(); // if (GUILayout.Button("Join")) // { // lastCodeUse = 5; // SRSingleton.Instance.JoinServer(servercode); // } // GUILayout.EndHorizontal(); // } // else // { // GUILayout.Label("Server codes currently not available"); // } // GUILayout.Space(20); // GUILayout.Label("Join with IP Address:"); // GUILayout.BeginHorizontal(); // GUILayout.Label("IP Address", GUILayout.Width(80)); // ipaddress = GUILayout.TextField(ipaddress); // GUILayout.EndHorizontal(); // GUILayout.BeginHorizontal(); // GUILayout.Label("Port", GUILayout.Width(80)); // port = GUILayout.TextField(port); // GUILayout.EndHorizontal(); // if (string.IsNullOrWhiteSpace(ipaddress)) // { // GUILayout.Label("IPAddress invalid"); // } // else if (!int.TryParse(port, out int numport) || numport < 1000 || numport > 65000) // { // GUILayout.Label("Invalid port"); // } // else // { // if (GUILayout.Button("Connect")) // { // SRSingleton.Instance.Connect(ipaddress, numport, Globals.Username); // SaveSettings(); // } // } // GUILayout.Space(20); // GUILayout.Label("Games in the same Network:"); // if (GUILayout.Button("Refresh")) // { // SRSingleton.Instance.SendDiscoverMessage(); // } // if (SRSingleton.Instance.LocalGames.Count == 0) // { // GUILayout.Label("No games found"); // } // foreach (var game in SRSingleton.Instance.LocalGames) // { // if (GUILayout.Button(game.Name)) // { // SRSingleton.Instance.Connect(game.IP, game.Port, Globals.Username); // } // } // } // else if (!Levels.isSpecial()) // { // GUILayout.Label("Username: " + Globals.Username); // if (GUILayout.Button("Change Username")) // { // state = 0; // } // GUILayout.Space(20); // //if (selectSave) // //{ // // saveScroll = GUILayout.BeginScrollView(saveScroll); // // foreach (var save in saveFolders) // // { // // if (GUILayout.Button(save)) // // { // // saveName = save; // // } // // } // // GUILayout.EndScrollView(); // // GUILayout.Label("Selected save: " + saveName); // // if (GUILayout.Button("Create new")) // // { // // selectSave = false; // // } // //} // //else // //{ // // GUILayout.BeginHorizontal(); // // GUILayout.Label("Save Name", GUILayout.Width(80)); // // saveName = GUILayout.TextField(saveName); // // GUILayout.EndHorizontal(); // // isSharedCurrency = GUILayout.Toggle(isSharedCurrency, "Shared Currency"); // // isSharedUpgrades = GUILayout.Toggle(isSharedUpgrades, "Shared Upgrades"); // // if (saveFolders.Count > 0) // // { // // if (GUILayout.Button("Select existing save")) // // { // // selectSave = true; // // } // // } // //} // GUILayout.BeginHorizontal(); // GUILayout.Label("Port", GUILayout.Width(80)); // port = GUILayout.TextField(port); // GUILayout.EndHorizontal(); // isPublicServer = GUILayout.Toggle(isPublicServer, "Show in Discord"); // if (!int.TryParse(port, out int numport) || numport < 1000 || numport > 65000) // { // GUILayout.Label("Invalid port"); // } // //else if (!Utils.IsValidPath(saveName)) // //{ // // GUILayout.Label("Invalid save name"); // //} // else // { // if (GUILayout.Button("Host")) // { // NetworkServer.Instance.StartServer(numport); // SaveSettings(); // } // } // } // } // if (Globals.IsMultiplayer) // { // QuicksilverEnergyGenerator generator = null; // foreach (var region in Globals.LocalPlayer.Regions) // { // generator = region.GetComponent(); // if (generator != null) // { // break; // } // } // GUILayout.Label("Is In Race: " + (generator != null ? generator.id : "None")); // GUILayout.Label($"Client Status: {NetworkClient.Instance.Status}"); // GUILayout.Label($"Server Status: {NetworkServer.Instance.Status}"); // if (!string.IsNullOrWhiteSpace(Globals.ServerCode)) // { // GUILayout.Label($"Server Code: {Globals.ServerCode}"); // } // GUILayout.Label("Received Messages: " + SRSingleton.Instance.Statistics.ReceivedMessages); // GUILayout.Label("Send Messages: " + SRSingleton.Instance.Statistics.SentMessages); // if (NetworkServer.Instance != null && NetworkServer.Instance.Status == NetworkServer.ServerStatus.Running) // { // GUILayout.Label("Received Bytes: " + Utils.GetHumanReadableFileSize(NetworkServer.Instance.Statistics.ReceivedBytes)); // GUILayout.Label("Sent Bytes: " + Utils.GetHumanReadableFileSize(NetworkServer.Instance.Statistics.SentBytes)); // } // else // { // GUILayout.Label("Received Bytes: " + Utils.GetHumanReadableFileSize(NetworkClient.Instance.Statistics.ReceivedBytes)); // GUILayout.Label("Sent Bytes: " + Utils.GetHumanReadableFileSize(NetworkClient.Instance.Statistics.SentBytes)); // } // //GUILayout.Space(20); // //GUILayout.Label("Chat"); // chatScroll = GUILayout.BeginScrollView(chatScroll, GUI.skin.box); // foreach (var sizes in Globals.PacketSize.OrderByDescending(c => c.Value)) // { // GUILayout.Label(sizes.Key + ": " + Utils.GetHumanReadableFileSize(sizes.Value)); // } // //var skin = GUI.skin.box; // //skin.wordWrap = true; // //skin.alignment = TextAnchor.MiddleLeft; // //foreach (var msg in chatMessages) // //{ // // GUILayout.Label(wrapString(msg, 250), skin, GUILayout.MaxWidth(250)); // //} // GUILayout.EndScrollView(); // } // } // GUI.DragWindow(new Rect(0, 0, 10000, 10000)); // } // } // string wrapString(string msg, int width) // { // string[] words = msg.Split(" "[0]); // string retVal = ""; //returning string // string NLstr = ""; //leftover string on new line // for (int index = 0; index < words.Length; index++) // { // string word = words[index].Trim(); // //if word exceeds width // if (words[index].Length >= width + 2) // { // string[] temp = new string[5]; // int i = 0; // while (words[index].Length > width) // { //word exceeds width, cut it at widrh // temp[i] = words[index].Substring(0, width) + "\n"; //cut the word at width // words[index] = words[index].Substring(width); //keep remaining word // i++; // if (words[index].Length <= width) // { //the balance is smaller than width // temp[i] = words[index]; // NLstr = temp[i]; // } // } // retVal += "\n"; // for (int x = 0; x < i + 1; x++) // { //loops through temp array // retVal = retVal + temp[x]; // } // } // else if (index == 0) // { // retVal = words[0]; // NLstr = retVal; // } // else if (index > 0) // { // if (NLstr.Length + words[index].Length <= width) // { // retVal = retVal + " " + words[index]; // NLstr = NLstr + " " + words[index]; //add the current line length // } // else if (NLstr.Length + words[index].Length > width) // { // retVal = retVal + "\n" + words[index]; // NLstr = words[index]; //reset the line length // print("newline! at word " + words[index]); // } // } // } // return retVal; // } // private void SaveSettings() // { // PlayerPrefs.SetString("username", Globals.Username); // PlayerPrefs.SetString("ipaddress", ipaddress); // PlayerPrefs.SetString("port", port); // PlayerPrefs.SetString("gamename", saveName); // } // } //}