using System.Net; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using BepInEx.Unity.IL2CPP; using Il2CppInterop.Runtime.Injection; using UnityEngine; using UnityEngine.Events; using UnityEngine.SceneManagement; namespace AutoLight; [BepInPlugin(PLUGIN_GUID, PLUGIN_NAME, PLUGIN_VERSION)] public class Plugin : BasePlugin { public const string PLUGIN_GUID = "de.mpburgmann.AutoLight"; public const string PLUGIN_NAME = "AutoLight"; public const string PLUGIN_VERSION = "1.1.0"; internal static new ManualLogSource Log; private static ConfigEntry Time; public static int Hour; public static int Minute; public static bool AM; public override void Load() { Log = base.Log; Log.LogInfo($"Plugin {PLUGIN_GUID} is loaded!"); SceneManager.sceneLoaded += (UnityAction) OnSceneLoaded; Time = Config.Bind("Settings", "Time", "18:00", "Time to turn light on. Use 24HR format"); LoadTime(); } private static void LoadTime() { string[] time_parts = Time.Value.Split(":"); if (time_parts.Length == 2) { Hour = int.Parse(time_parts[0]); Minute = int.Parse(time_parts[1]); } else { Hour = 18; Minute = 0; } if (Hour < 8 || Hour > 21) { Time.Value = "18:00"; Hour = 18; Minute = 0; } if (Hour >= 12) { AM = false; Hour -= 12; } else { AM = true; } } private static void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (scene.name == "Main Scene") { ClassInjector.RegisterTypeInIl2Cpp(); GameObject gameObject = new("AutoLightBehaviour"); Object.DontDestroyOnLoad(gameObject); gameObject.AddComponent(); } if(scene.name == "Main Menu") { Object gameObject = GameObject.Find("AutoLightBehaviour"); if(gameObject != null) { Object.Destroy(gameObject); } } } }