Decompiled source of BetterFlashlightMono v1.0.0

BetterFlashlight.dll

Decompiled 2 months ago
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BetterFlashlight;
using HarmonyLib;
using MelonLoader;
using MelonLoader.Utils;
using Newtonsoft.Json;
using ScheduleOne.UI.Phone;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(Main), "Better Flashlight", "1.0.0", "LAKHLEF Mehdi", null)]
[assembly: MelonGame("TVGS", "Schedule I")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("BetterFlashlight")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BetterFlashlight")]
[assembly: AssemblyTitle("BetterFlashlight")]
[assembly: AssemblyVersion("1.0.0.0")]
public static class ConfigManager
{
	public static string ConfigPath = Path.Combine(MelonEnvironment.UserDataDirectory, "flashlight_config.json");

	public static FlashlightConfig LoadConfig()
	{
		if (!File.Exists(ConfigPath))
		{
			FlashlightConfig flashlightConfig = FlashlightConfig.Default();
			SaveConfig(flashlightConfig);
			return flashlightConfig;
		}
		return JsonConvert.DeserializeObject<FlashlightConfig>(File.ReadAllText(ConfigPath));
	}

	public static void SaveConfig(FlashlightConfig config)
	{
		string contents = JsonConvert.SerializeObject((object)config, (Formatting)1);
		File.WriteAllText(ConfigPath, contents);
	}
}
public class FlashlightConfig
{
	public float Range = 20f;

	public float Intensity = 5f;

	public float SpotAngle = 70f;

	public string LightColor = "#00FFFF";

	public static FlashlightConfig Default()
	{
		return new FlashlightConfig();
	}
}
public static class CustomFlashlight
{
	private static Light _customLight;

	public static void Init()
	{
		//IL_000b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0011: Expected O, but got Unknown
		//IL_0083: Unknown result type (might be due to invalid IL or missing references)
		//IL_0076: Unknown result type (might be due to invalid IL or missing references)
		//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
		//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
		FlashlightConfig flashlightConfig = ConfigManager.LoadConfig();
		GameObject val = new GameObject("ModdedFlashlight");
		_customLight = val.AddComponent<Light>();
		_customLight.type = (LightType)0;
		_customLight.range = flashlightConfig.Range;
		_customLight.intensity = flashlightConfig.Intensity;
		_customLight.spotAngle = flashlightConfig.SpotAngle;
		((Behaviour)_customLight).enabled = false;
		Color color = default(Color);
		if (ColorUtility.TryParseHtmlString(flashlightConfig.LightColor, ref color))
		{
			_customLight.color = color;
		}
		else
		{
			_customLight.color = Color.cyan;
			MelonLogger.Msg("Échec de la conversion, couleur par défaut (cyan) appliquée.");
		}
		Camera main = Camera.main;
		if ((Object)(object)main != (Object)null)
		{
			val.transform.SetParent(((Component)main).transform);
			val.transform.localPosition = new Vector3(0f, 0f, 0.5f);
			val.transform.localRotation = Quaternion.identity;
		}
	}

	public static void SetState(bool on)
	{
		if ((Object)(object)_customLight != (Object)null)
		{
			((Behaviour)_customLight).enabled = on;
		}
	}
}
namespace BetterFlashlight;

public class FlashlightConfig
{
	public string LightColor = "#00FF00";

	public float Intensity = 3f;

	public float Range = 30f;

	public float SpotAngle = 100f;

	public static FlashlightConfig Default()
	{
		return new FlashlightConfig();
	}
}
[HarmonyPatch(typeof(Phone), "ToggleFlashlight")]
public class FlashlightPatch
{
	[HarmonyPostfix]
	public static void Postfix(Phone __instance)
	{
		CustomFlashlight.SetState(__instance.FlashlightOn);
	}
}
public class Main : MelonMod
{
	private bool flashlightInitialized;

	public override void OnInitializeMelon()
	{
		MelonLogger.Msg("Mod BetterFlashlight loaded !");
	}

	public override void OnUpdate()
	{
		if (!flashlightInitialized && (Object)(object)Camera.main != (Object)null)
		{
			CustomFlashlight.Init();
			flashlightInitialized = true;
		}
	}
}