using System.Collections.Generic; using System.Reflection; using BepInEx; using BepInEx.Logging; using GBSU.Addons; using HarmonyLib; using HarmonyLib.Tools; using UnityEngine; #pragma warning disable IDE0051 // Private member is unused namespace GBSU; [BepInPlugin(MyPluginInfo.PLUGIN_GUID, MyPluginInfo.PLUGIN_NAME, MyPluginInfo.PLUGIN_VERSION)] [BepInProcess("Gang Beasts.exe")] public class Plugin : BaseUnityPlugin { public static Dictionary GameScore = []; private static GameObject _gbsuCompContainer; internal static ManualLogSource Log; public static GameObject GBSUCompContainer { get { if (_gbsuCompContainer == null) { _gbsuCompContainer = new GameObject("GBSUSingletons"); } return _gbsuCompContainer; } set { Destroy(_gbsuCompContainer); _gbsuCompContainer = value; } } private void Awake() { // Plugin startup logic Log = base.Logger; Log.LogInfo($"\n------\nPlugin {MyPluginInfo.PLUGIN_NAME} [{MyPluginInfo.PLUGIN_VERSION}] is loaded!\n------\n"); HarmonyFileLog.Enabled = true; var harmony = new Harmony(MyPluginInfo.PLUGIN_GUID); harmony.PatchAll(Assembly.GetExecutingAssembly()); GBSUCompInit(); Helper.DisableAnalytics(); // thank me later // create server config path Helper.CreateRotationFolder(); Log.LogDebug("Server game config should be found at " + Helper.GameConfigPath); // Parse CLI arguments if (CommandLineParser.Instance.KeyExists("-ip")) { Helper.serverip = CommandLineParser.Instance.GetValueForKey("-ip", true); } if (CommandLineParser.Instance.KeyExists("-port")) { int.TryParse(CommandLineParser.Instance.GetValueForKey("-port", true), out Helper.serverport); } } private static void GBSUCompInit() { // Create a container that wont lose our objects GBSUCompContainer = new GameObject("GBSUSingletons"); DontDestroyOnLoad(GBSUCompContainer); GBSUCompContainer.hideFlags = HideFlags.DontUnloadUnusedAsset; GBSUCompContainer.AddComponent(); } public static void AddServerComp() { DestroyServerComp(); Log.LogDebug("Adding GBSUServer component"); GBSUCompContainer.AddComponent(); } public static void DestroyServerComp() { Component[] comps = GBSUCompContainer.GetComponents(typeof(Component)); foreach (var comp in comps) { Log.LogDebug("iterating thru singleton comps"); if(comp is GBSUServer) { Log.LogDebug("GBSUServer component was found! Destroying it"); Destroy(comp); } } } }