using System; using System.IO; using GB.Core; using GB.Networking.Utils; using GB.Platform.Lobby; using UnityEngine; using UnityEngine.Analytics; using UnityEngine.SceneManagement; namespace GBSU.Addons; public class Helper { public static string RotationFolderPath = BepInEx.Paths.BepInExRootPath + "/config/GBSU/"; public static string GameConfigPath = RotationFolderPath + "config.json"; public static string serverip = null; public static int serverport = 5999; public static bool hosting = false; public static float saved_volume; public static void DisableAnalytics() { // Try disabling analytics https://docs.unity3d.com/ScriptReference/Analytics.Analytics-deviceStatsEnabled.html try { Analytics.enabled = false; Analytics.deviceStatsEnabled = false; } catch (Exception e) { Plugin.Log.LogWarning("Failed to disable analytics: " + e.Message); } } public static void CreateRotationFolder() { try { Plugin.Log.LogInfo("Creating rotation folder at " + RotationFolderPath); Directory.CreateDirectory(RotationFolderPath); } catch (Exception e) { Plugin.Log.LogError("Could not create rotation folder path: " + e.Message); } } public static string FilesInRotationDir() { // https://stackoverflow.com/a/14877330 DirectoryInfo d = new(RotationFolderPath); FileInfo[] files = d.GetFiles(); int number = files.Length; // no files? if (number == 0) { return @"No files were found in the directory."; } else { string names = ""; foreach (FileInfo file in files) { names = file.Name + " " + names; } return $"There are {number} files: {names}"; } } public static void FlipVSync() { if (QualitySettings.vSyncCount == 0) { QualitySettings.vSyncCount = 1; } else { QualitySettings.vSyncCount = 0; } } public static void CheckCustomRotationPath() { // Did the host request to use their own rotation config path? if (CommandLineParser.Instance.KeyExists("-maplist")) { GameConfigPath = CommandLineParser.Instance.GetValueForKey("-maplist"); Plugin.Log.LogInfo("Set custom rotation config path at " + GameConfigPath); } } public static void SwitchToMenu() { if (hosting) { GBSUGui.PushError("Please press the Stop server button instead!"); } else { // uhm, time to panic! // let's begin by disconnecting if theres an active connection try { GBNetUtils.DisconnectSelf(false); } catch (Exception e) { Plugin.Log.LogWarning("Couldn't disconnect from server:\n" + e); } // go back to main menu SceneManager.LoadScene(Global.MENU_SCENE_NAME); // make sure our lobby state is menu LobbyManager.Instance.LobbyStates.SelfState = LobbyState.Game.Menu; } } }