88 lines
2.3 KiB
C#
Executable File
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);
|
|
}
|
|
}
|
|
}
|
|
} |