Decompiled source of ConfigRemedy v1.0.0

ConfigRemedy.dll

Decompiled 2 weeks ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using ComputerysModdingUtilities;
using HarmonyLib;
using SettingsMod;
using UnityEngine;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: StraftatMod(true)]
[assembly: AssemblyTitle("ConfigRemedy")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("ConfigRemedy")]
[assembly: AssemblyCopyright("Copyright ©  2025")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("78d7866a-3e8b-4a94-8469-7f3ff67cb5ea")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyVersion("1.0.0.0")]
[BepInPlugin("Shiina.straftat.ConfigRemedy", "Config Remedy", "1.0.0")]
public class Plugin : BaseUnityPlugin
{
	[HarmonyPatch(typeof(PlayerPrefs), "Save")]
	private static class PlayerPrefsSavePatch
	{
		private static void Postfix()
		{
			Instance.PopulateSettings(((BaseUnityPlugin)Instance).Config);
		}
	}

	public static Plugin Instance { get; private set; }

	private void Awake()
	{
		//IL_0012: Unknown result type (might be due to invalid IL or missing references)
		//IL_0018: Expected O, but got Unknown
		//IL_008b: Unknown result type (might be due to invalid IL or missing references)
		//IL_0098: Expected O, but got Unknown
		Instance = this;
		ConfigFile config = ((BaseUnityPlugin)this).Config;
		Harmony val = new Harmony("Shiina.straftat.settingsmod");
		string[] array = new string[5] { "ChangeMasterVolumeSlider", "ChangeMusicVolumeSlider", "ChangeEffectVolumeSlider", "ChangeAmbientVolumeSlider", "ChangeMenuMusicVolumeSlider" };
		foreach (string text in array)
		{
			MethodInfo methodInfo = AccessTools.Method(typeof(SoundManager), text, new Type[1] { typeof(Slider) }, (Type[])null);
			val.Patch((MethodBase)methodInfo, (HarmonyMethod)null, new HarmonyMethod(typeof(Plugin), "CommonPostfix", (Type[])null), (HarmonyMethod)null, (HarmonyMethod)null, (HarmonyMethod)null);
		}
		val.PatchAll();
		ModConfig.BindTo(config);
		if (!ModConfig.firstRun.Value)
		{
			LoadConfig();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Current config loaded, for bug reports, suggestions contact .shiina. on discord");
		}
		else
		{
			PopulateSettings(config);
			((BaseUnityPlugin)this).Logger.LogWarning((object)"This is first run of the mod cashing settings!");
		}
	}

	public static void CommonPostfix(SoundManager __instance, Slider value, MethodBase __originalMethod)
	{
		Instance.PopulateSettings(((BaseUnityPlugin)Instance).Config);
	}

	private void LoadConfig()
	{
		PlayerPrefs.SetInt("toggleTwoAxis", ModConfig.toggleTwoAxis.Value ? 1 : 0);
		PlayerPrefs.SetInt("invertMouseX", ModConfig.invertMouseX.Value ? 1 : 0);
		PlayerPrefs.SetInt("invertMouseY", ModConfig.invertMouseY.Value ? 1 : 0);
		PlayerPrefs.SetInt("sprintToggle", ModConfig.sprintToggle.Value ? 1 : 0);
		PlayerPrefs.SetInt("aimToggle", ModConfig.aimToggle.Value ? 1 : 0);
		PlayerPrefs.SetInt("leanToggle", ModConfig.leanToggle.Value ? 1 : 0);
		PlayerPrefs.SetInt("crouchToggle", ModConfig.crouchToggle.Value ? 1 : 0);
		PlayerPrefs.SetInt("reverseSprintBind", ModConfig.reverseSprintBind.Value ? 1 : 0);
		PlayerPrefs.SetInt("isFullscreen", ModConfig.isFullscreen.Value ? 1 : 0);
		PlayerPrefs.SetInt("enableVoiceChat", ModConfig.enableVoiceChat.Value ? 1 : 0);
		PlayerPrefs.SetInt("minimalistUi", ModConfig.minimalistUi.Value ? 1 : 0);
		PlayerPrefs.SetInt("motionBlur", ModConfig.motionBlur.Value ? 1 : 0);
		PlayerPrefs.SetInt("inverseFireBinding", ModConfig.inverseFireBinding.Value ? 1 : 0);
		PlayerPrefs.SetFloat("mouseSensitivity", ModConfig.mouseSensitivity.Value);
		PlayerPrefs.SetFloat("mouseAimScopeSensitivity", ModConfig.mouseAimScopeSensitivity.Value);
		PlayerPrefs.SetFloat("mouseAimSensitivity", ModConfig.mouseAimSensitivity.Value);
		PlayerPrefs.SetFloat("mouseXSensitivity", ModConfig.mouseXSensitivity.Value);
		PlayerPrefs.SetFloat("mouseYSensitivity", ModConfig.mouseYSensitivity.Value);
		PlayerPrefs.SetFloat("fovValue", ModConfig.fovValue.Value);
		PlayerPrefs.SetFloat("brightness", ModConfig.brightness.Value);
		PlayerPrefs.SetFloat("damageIntensity", ModConfig.damageIntensity.Value);
		PlayerPrefs.SetFloat("voiceChatVolume", ModConfig.voiceChatVolume.Value);
		PlayerPrefs.SetInt("qualitySetting", 3);
		PlayerPrefs.SetInt("targetFps", ModConfig.targetFps.Value);
		PlayerPrefs.SetInt("targetFpsToggle", ModConfig.targetFpsToggle.Value ? 1 : 0);
		PlayerPrefs.SetInt("useVsync", ModConfig.useVsync.Value ? 1 : 0);
		PlayerPrefs.SetInt("exclusiveFullscreen", ModConfig.exclusiveFullscreen.Value ? 1 : 0);
		PlayerPrefs.SetInt("pushToTalk", ModConfig.pushToTalk.Value ? 1 : 0);
		PlayerPrefs.SetInt("reduceVFX", ModConfig.reduceVFX.Value ? 1 : 0);
		PlayerPrefs.SetInt("inGameMusic", ModConfig.inGameMusic.Value ? 1 : 0);
		PlayerPrefs.SetInt("enableFixedCrosshair", ModConfig.enableFixedCrosshair.Value ? 1 : 0);
		PlayerPrefs.SetInt("showSpeedometer", ModConfig.showSpeedometer.Value ? 1 : 0);
		PlayerPrefs.SetInt("disableCrosshair", ModConfig.disableCrosshair.Value ? 1 : 0);
		PlayerPrefs.SetInt("qualitySetting", ModConfig.qualitySetting.Value);
		PlayerPrefs.SetFloat("masterVolume", ModConfig.masterVolume.Value);
		PlayerPrefs.SetFloat("effectsVolume", ModConfig.effectsVolume.Value);
		PlayerPrefs.SetFloat("musicVolume", ModConfig.musicVolume.Value);
		PlayerPrefs.SetFloat("ambientVolume", ModConfig.ambientVolume.Value);
		PlayerPrefs.SetFloat("menuMusicVolume", ModConfig.menuMusicVolume.Value);
		PlayerPrefs.Save();
	}

	private void PopulateSettings(ConfigFile config)
	{
		ModConfig.firstRun.Value = false;
		ModConfig.toggleTwoAxis.Value = PlayerPrefs.GetInt("toggleTwoAxis", ModConfig.toggleTwoAxis.Value ? 1 : 0) == 1;
		ModConfig.invertMouseX.Value = PlayerPrefs.GetInt("invertMouseX", ModConfig.invertMouseX.Value ? 1 : 0) == 1;
		ModConfig.invertMouseY.Value = PlayerPrefs.GetInt("invertMouseY", ModConfig.invertMouseY.Value ? 1 : 0) == 1;
		ModConfig.sprintToggle.Value = PlayerPrefs.GetInt("sprintToggle", ModConfig.sprintToggle.Value ? 1 : 0) == 1;
		ModConfig.aimToggle.Value = PlayerPrefs.GetInt("aimToggle", ModConfig.aimToggle.Value ? 1 : 0) == 1;
		ModConfig.leanToggle.Value = PlayerPrefs.GetInt("leanToggle", ModConfig.leanToggle.Value ? 1 : 0) == 1;
		ModConfig.crouchToggle.Value = PlayerPrefs.GetInt("crouchToggle", ModConfig.crouchToggle.Value ? 1 : 0) == 1;
		ModConfig.reverseSprintBind.Value = PlayerPrefs.GetInt("reverseSprintBind", ModConfig.reverseSprintBind.Value ? 1 : 0) == 1;
		ModConfig.isFullscreen.Value = PlayerPrefs.GetInt("isFullscreen", ModConfig.isFullscreen.Value ? 1 : 0) == 1;
		ModConfig.enableVoiceChat.Value = PlayerPrefs.GetInt("enableVoiceChat", ModConfig.enableVoiceChat.Value ? 1 : 0) == 1;
		ModConfig.minimalistUi.Value = PlayerPrefs.GetInt("minimalistUi", ModConfig.minimalistUi.Value ? 1 : 0) == 1;
		ModConfig.motionBlur.Value = PlayerPrefs.GetInt("motionBlur", ModConfig.motionBlur.Value ? 1 : 0) == 1;
		ModConfig.inverseFireBinding.Value = PlayerPrefs.GetInt("inverseFireBinding", ModConfig.inverseFireBinding.Value ? 1 : 0) == 1;
		ModConfig.pushToTalk.Value = PlayerPrefs.GetInt("pushToTalk", ModConfig.pushToTalk.Value ? 1 : 0) == 1;
		ModConfig.reduceVFX.Value = PlayerPrefs.GetInt("reduceVFX", ModConfig.reduceVFX.Value ? 1 : 0) == 1;
		ModConfig.inGameMusic.Value = PlayerPrefs.GetInt("inGameMusic", ModConfig.inGameMusic.Value ? 1 : 0) == 1;
		ModConfig.enableFixedCrosshair.Value = PlayerPrefs.GetInt("enableFixedCrosshair", ModConfig.enableFixedCrosshair.Value ? 1 : 0) == 1;
		ModConfig.showSpeedometer.Value = PlayerPrefs.GetInt("showSpeedometer", ModConfig.showSpeedometer.Value ? 1 : 0) == 1;
		ModConfig.disableCrosshair.Value = PlayerPrefs.GetInt("disableCrosshair", ModConfig.disableCrosshair.Value ? 1 : 0) == 1;
		ModConfig.targetFpsToggle.Value = PlayerPrefs.GetInt("targetFpsToggle", ModConfig.targetFpsToggle.Value ? 1 : 0) == 1;
		ModConfig.useVsync.Value = PlayerPrefs.GetInt("useVsync", ModConfig.useVsync.Value ? 1 : 0) == 1;
		ModConfig.exclusiveFullscreen.Value = PlayerPrefs.GetInt("exclusiveFullscreen", ModConfig.exclusiveFullscreen.Value ? 1 : 0) == 1;
		ModConfig.qualitySetting.Value = PlayerPrefs.GetInt("qualitySetting", ModConfig.qualitySetting.Value);
		ModConfig.targetFps.Value = PlayerPrefs.GetInt("targetFps", ModConfig.targetFps.Value);
		ModConfig.mouseSensitivity.Value = PlayerPrefs.GetFloat("mouseSensitivity", ModConfig.mouseSensitivity.Value);
		ModConfig.mouseAimScopeSensitivity.Value = PlayerPrefs.GetFloat("mouseAimScopeSensitivity", ModConfig.mouseAimScopeSensitivity.Value);
		ModConfig.mouseAimSensitivity.Value = PlayerPrefs.GetFloat("mouseAimSensitivity", ModConfig.mouseAimSensitivity.Value);
		ModConfig.mouseXSensitivity.Value = PlayerPrefs.GetFloat("mouseXSensitivity", ModConfig.mouseXSensitivity.Value);
		ModConfig.mouseYSensitivity.Value = PlayerPrefs.GetFloat("mouseYSensitivity", ModConfig.mouseYSensitivity.Value);
		ModConfig.fovValue.Value = PlayerPrefs.GetFloat("fovValue", ModConfig.fovValue.Value);
		ModConfig.brightness.Value = PlayerPrefs.GetFloat("brightness", ModConfig.brightness.Value);
		ModConfig.damageIntensity.Value = PlayerPrefs.GetFloat("damageIntensity", ModConfig.damageIntensity.Value);
		ModConfig.voiceChatVolume.Value = PlayerPrefs.GetFloat("voiceChatVolume", ModConfig.voiceChatVolume.Value);
		ModConfig.masterVolume.Value = PlayerPrefs.GetFloat("masterVolume", ModConfig.masterVolume.Value);
		ModConfig.effectsVolume.Value = PlayerPrefs.GetFloat("effectsVolume", ModConfig.effectsVolume.Value);
		ModConfig.musicVolume.Value = PlayerPrefs.GetFloat("musicVolume", ModConfig.musicVolume.Value);
		ModConfig.ambientVolume.Value = PlayerPrefs.GetFloat("ambientVolume", ModConfig.ambientVolume.Value);
		ModConfig.menuMusicVolume.Value = PlayerPrefs.GetFloat("menuMusicVolume", ModConfig.menuMusicVolume.Value);
		ModConfig.Save(config);
	}
}
namespace SettingsMod;

public static class ModConfig
{
	public static ConfigEntry<bool> firstRun;

	public static ConfigEntry<float> mouseSensitivity;

	public static ConfigEntry<float> mouseAimSensitivity;

	public static ConfigEntry<float> mouseAimScopeSensitivity;

	public static ConfigEntry<bool> toggleTwoAxis;

	public static ConfigEntry<float> mouseYSensitivity;

	public static ConfigEntry<float> mouseXSensitivity;

	public static ConfigEntry<bool> crouchToggle;

	public static ConfigEntry<bool> leanToggle;

	public static ConfigEntry<bool> aimToggle;

	public static ConfigEntry<bool> sprintToggle;

	public static ConfigEntry<bool> invertMouseY;

	public static ConfigEntry<bool> invertMouseX;

	public static ConfigEntry<bool> reverseSprintBind;

	public static ConfigEntry<bool> inverseFireBinding;

	public static ConfigEntry<float> masterVolume;

	public static ConfigEntry<float> ambientVolume;

	public static ConfigEntry<float> voiceChatVolume;

	public static ConfigEntry<float> effectsVolume;

	public static ConfigEntry<float> musicVolume;

	public static ConfigEntry<float> menuMusicVolume;

	public static ConfigEntry<bool> enableVoiceChat;

	public static ConfigEntry<bool> pushToTalk;

	public static ConfigEntry<bool> inGameMusic;

	public static ConfigEntry<bool> isFullscreen;

	public static ConfigEntry<int> targetFps;

	public static ConfigEntry<int> qualitySetting;

	public static ConfigEntry<bool> targetFpsToggle;

	public static ConfigEntry<bool> exclusiveFullscreen;

	public static ConfigEntry<bool> useVsync;

	public static ConfigEntry<bool> showSpeedometer;

	public static ConfigEntry<bool> reduceVFX;

	public static ConfigEntry<bool> minimalistUi;

	public static ConfigEntry<bool> motionBlur;

	public static ConfigEntry<float> fovValue;

	public static ConfigEntry<bool> enableFixedCrosshair;

	public static ConfigEntry<bool> disableCrosshair;

	public static ConfigEntry<float> brightness;

	public static ConfigEntry<float> damageIntensity;

	public static void BindTo(ConfigFile config)
	{
		firstRun = config.Bind<bool>("Internal", "First Run", true, "IF TRUE YOUR CURRENT CONFIG WILL BE OVERWRITTEN!");
		mouseSensitivity = config.Bind<float>("Controls", "Mouse Sensitivity", 2f, (ConfigDescription)null);
		mouseAimSensitivity = config.Bind<float>("Controls", "Aming Mouse Sensitivity", 2f, (ConfigDescription)null);
		mouseAimScopeSensitivity = config.Bind<float>("Controls", "Sniper Rifle Mouse Sensitivity", 0.8f, (ConfigDescription)null);
		toggleTwoAxis = config.Bind<bool>("Controls", "Two Axis Sensitivity", false, (ConfigDescription)null);
		mouseYSensitivity = config.Bind<float>("Controls", "Vertical Sensitivity", 2f, (ConfigDescription)null);
		mouseXSensitivity = config.Bind<float>("Controls", "Horizontal Sensitivity", 2f, (ConfigDescription)null);
		crouchToggle = config.Bind<bool>("Controls", "Toggle Crouch", false, (ConfigDescription)null);
		leanToggle = config.Bind<bool>("Controls", "Toggle Camera Lean", false, (ConfigDescription)null);
		aimToggle = config.Bind<bool>("Controls", "Toggle Aim", false, (ConfigDescription)null);
		sprintToggle = config.Bind<bool>("Controls", "Toggle Sprint", false, (ConfigDescription)null);
		invertMouseY = config.Bind<bool>("Controls", "Invert Vertical Look", false, (ConfigDescription)null);
		invertMouseX = config.Bind<bool>("Controls", "Invert Horizontal Look", false, (ConfigDescription)null);
		reverseSprintBind = config.Bind<bool>("Controls", "Reverse Sprint Bind (Hold sprint key to walk when enabled)", false, (ConfigDescription)null);
		inverseFireBinding = config.Bind<bool>("Controls", "Invert Fire Binding when holding two weapons", false, (ConfigDescription)null);
		effectsVolume = config.Bind<float>("Audio", "Effects Music Volume", 1f, (ConfigDescription)null);
		ambientVolume = config.Bind<float>("Audio", "Ambient Volume", 1f, (ConfigDescription)null);
		voiceChatVolume = config.Bind<float>("Audio", "Voice Chat Volume", 1f, (ConfigDescription)null);
		musicVolume = config.Bind<float>("Audio", "Victory Music Volume", 1f, (ConfigDescription)null);
		menuMusicVolume = config.Bind<float>("Audio", "Music Volume", 1f, (ConfigDescription)null);
		masterVolume = config.Bind<float>("Audio", "Main Volume", 1f, (ConfigDescription)null);
		enableVoiceChat = config.Bind<bool>("Audio", "Enable Proximity Voice Chat", true, (ConfigDescription)null);
		pushToTalk = config.Bind<bool>("Audio", "Push To Talk", true, (ConfigDescription)null);
		inGameMusic = config.Bind<bool>("Audio", "Enable In Game Music", false, (ConfigDescription)null);
		isFullscreen = config.Bind<bool>("Graphics", "Fullscreen", true, (ConfigDescription)null);
		targetFps = config.Bind<int>("Graphics", "Target FPS", 120, (ConfigDescription)null);
		targetFpsToggle = config.Bind<bool>("Graphics", "Enable FPS Cap", true, (ConfigDescription)null);
		qualitySetting = config.Bind<int>("Graphics", "Graphics Settings Low - 0 Medium - 1 High - 2 Ultra - 3", 3, (ConfigDescription)null);
		minimalistUi = config.Bind<bool>("Graphics", "Minimalist HUD (Enabling this improves performance)", true, (ConfigDescription)null);
		motionBlur = config.Bind<bool>("Graphics", "Motion Blur", true, (ConfigDescription)null);
		fovValue = config.Bind<float>("Graphics", "FOV Value", 90f, (ConfigDescription)null);
		enableFixedCrosshair = config.Bind<bool>("Graphics", "Enable Static Crosshair", false, (ConfigDescription)null);
		disableCrosshair = config.Bind<bool>("Graphics", "Disable Crosshair", false, (ConfigDescription)null);
		brightness = config.Bind<float>("Graphics", "Brightness", 1f, (ConfigDescription)null);
		damageIntensity = config.Bind<float>("Graphics", "Damage Overlay Intensity", 1f, (ConfigDescription)null);
		exclusiveFullscreen = config.Bind<bool>("Graphics", "Exclusive Fullscreen", false, (ConfigDescription)null);
		useVsync = config.Bind<bool>("Graphics", "Use VSync", false, (ConfigDescription)null);
		showSpeedometer = config.Bind<bool>("Graphics", "Show Speedometer", true, (ConfigDescription)null);
		reduceVFX = config.Bind<bool>("Graphics", "Reduce VFX", true, (ConfigDescription)null);
	}

	public static void Save(ConfigFile config)
	{
		config.Save();
	}
}