1
0
Files
AutoLight/Plugin.cs

88 lines
2.3 KiB
C#
Executable File

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<string> 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<Scene, LoadSceneMode>) 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<Behaviour>();
GameObject gameObject = new("AutoLightBehaviour");
Object.DontDestroyOnLoad(gameObject);
gameObject.AddComponent<Behaviour>();
}
if(scene.name == "Main Menu")
{
Object gameObject = GameObject.Find("AutoLightBehaviour");
if(gameObject != null)
{
Object.Destroy(gameObject);
}
}
}
}