Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
Decompiled source of OBS v0.0.6
OBS.dll
Decompiled 2 years agousing System; using System.CodeDom.Compiler; using System.Collections.Generic; using System.ComponentModel; using System.Diagnostics; using System.Globalization; using System.IO; using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using System.Runtime.Versioning; using System.Security; using System.Security.Permissions; using Badgers_Shading_Overhaul.Gui; using Badgers_Shading_Overhaul.Gui.GUIScriptComponents; using Badgers_Shading_Overhaul.Properties; using BepInEx; using BepInEx.Configuration; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.Events; using UnityEngine.Rendering; using UnityEngine.UI; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: AssemblyTitle("Badgers_Shading_Overhaul")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Badgers_Shading_Overhaul")] [assembly: AssemblyCopyright("Copyright © 2021")] [assembly: AssemblyTrademark("")] [assembly: ComVisible(false)] [assembly: Guid("d972bffe-cbf4-4b17-8276-007e986e6195")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")] [assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)] [assembly: AssemblyVersion("1.0.0.0")] [module: UnverifiableCode] namespace Badgers_Shading_Overhaul { internal class BVTAssets { private AssetBundle GUIAssetBundle; private Dictionary<string, Mesh> bvtMeshes = new Dictionary<string, Mesh>(); private GameObject BVTCanvas = null; private GameObject BVTSliderWidget = null; private GameObject BVTButtonWidget = null; private GameObject BVTLabelWidget = null; private GameObject BVTToggleWidget = null; private GameObject ClockWidget = null; public bool assetsLoaded = false; public BVTAssets() { LoadAssets(); } public void LoadAssets() { byte[] guiassets = Resources.guiassets; GUIAssetBundle = AssetBundle.LoadFromMemory(guiassets); if (!((Object)(object)GUIAssetBundle != (Object)null)) { return; } bLog.Log("Loading GUI Assets", force: true); string[] allAssetNames = GUIAssetBundle.GetAllAssetNames(); foreach (string text in allAssetNames) { GameObject val = GUIAssetBundle.LoadAsset<GameObject>(text); switch (((Object)val).name) { case "Canvas": BVTCanvas = val; break; case "SliderWidget": BVTSliderWidget = val; break; case "ButtonWidget": BVTButtonWidget = val; break; case "LabelWidget": BVTLabelWidget = val; break; case "ToggleWidget": BVTToggleWidget = val; break; } } assetsLoaded = true; GUIAssetBundle.Unload(false); guiassets = null; } public GameObject GetCanvas() { if ((Object)(object)BVTCanvas != (Object)null) { return BVTCanvas; } return null; } public GameObject GetSliderWidget() { if ((Object)(object)BVTSliderWidget != (Object)null) { return BVTSliderWidget; } return null; } public GameObject GetButtonWidget() { if ((Object)(object)BVTButtonWidget != (Object)null) { return BVTButtonWidget; } return null; } public GameObject GetLabelWidget() { if ((Object)(object)BVTLabelWidget != (Object)null) { return BVTLabelWidget; } return null; } public GameObject GetToggleWidget() { if ((Object)(object)BVTToggleWidget != (Object)null) { return BVTToggleWidget; } return null; } public GameObject GetClockWidget() { if ((Object)(object)ClockWidget != (Object)null) { return ClockWidget; } return null; } } public class CameraPostProcess : MonoBehaviour { private RenderTexture rt = null; private void OnPreRender() { Mod.mainCamera.targetTexture = rt; } private void OnRenderImage(RenderTexture src, RenderTexture dest) { if ((Object)(object)Mod.PostProcessMaterial != (Object)null && Mod.config.CleanShadingOn.Value) { Mod.mainCamera.targetTexture = null; Graphics.Blit((Texture)(object)src, (RenderTexture)null, Mod.PostProcessMaterial); } else { Graphics.Blit((Texture)(object)src, dest); } } } internal class Config { private ConfigFile cf = new ConfigFile(Mod.ConfigFile, true); public ConfigEntry<float> AmbientLight; public ConfigEntry<bool> CleanShadingOn; public ConfigEntry<KeyCode> ModToggleKey; public ConfigEntry<bool> DebugInfo; public ConfigEntry<float> SpecularIntensity; public ConfigEntry<float> ColorTemp; public ConfigEntry<float> ColorSaturation; public Config() { //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0011: Expected O, but got Unknown CleanShadingOn = cf.Bind<bool>("Mod", "Enable Smooth Shading", true, "Enable Smooth Shading"); ModToggleKey = cf.Bind<KeyCode>("Mod", "Key to enable/disable mod", (KeyCode)281, "Mod Toggle Key"); DebugInfo = cf.Bind<bool>("Mod", "Enable debug information", false, "Enable debug information"); SpecularIntensity = cf.Bind<float>("Visual", "Specular Intensity", 0f, "Specular Intensity"); AmbientLight = cf.Bind<float>("Visual", "Ambient Light Modifier", 0.9f, "Ambient Light Modifier"); ColorTemp = cf.Bind<float>("Visual", "Colour Temperature", 0f, "Colour Temperature"); ColorSaturation = cf.Bind<float>("Visual", "Colour Saturation", 1f, "Colour Saturation"); } } internal class MouseDragComponent : MonoBehaviour, IDragHandler, IEventSystemHandler, IBeginDragHandler, IEndDragHandler { private Vector2 dragStartPosition; private Vector2 menuPos; private Vector2 pointerOffset; public void OnBeginDrag(PointerEventData eventData) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000d: Unknown result type (might be due to invalid IL or missing references) //IL_0012: Unknown result type (might be due to invalid IL or missing references) //IL_0019: Unknown result type (might be due to invalid IL or missing references) //IL_001e: Unknown result type (might be due to invalid IL or missing references) //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Unknown result type (might be due to invalid IL or missing references) //IL_0030: Unknown result type (might be due to invalid IL or missing references) //IL_0035: Unknown result type (might be due to invalid IL or missing references) menuPos = Vector2.op_Implicit(((Transform)((Component)this).GetComponent<RectTransform>()).position); dragStartPosition = eventData.position; pointerOffset = dragStartPosition - menuPos; } public void OnDrag(PointerEventData eventData) { //IL_0002: Unknown result type (might be due to invalid IL or missing references) //IL_0007: Unknown result type (might be due to invalid IL or missing references) //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000a: Unknown result type (might be due to invalid IL or missing references) //IL_000f: Unknown result type (might be due to invalid IL or missing references) //IL_0014: Unknown result type (might be due to invalid IL or missing references) //IL_0017: Unknown result type (might be due to invalid IL or missing references) //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_001d: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Unknown result type (might be due to invalid IL or missing references) //IL_002e: Unknown result type (might be due to invalid IL or missing references) //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_0034: Unknown result type (might be due to invalid IL or missing references) //IL_0039: Unknown result type (might be due to invalid IL or missing references) //IL_0045: Unknown result type (might be due to invalid IL or missing references) //IL_0046: Unknown result type (might be due to invalid IL or missing references) Vector2 position = eventData.position; Vector2 val = position - dragStartPosition; menuPos += val; ((Transform)((Component)this).GetComponent<RectTransform>()).position = Vector2.op_Implicit(menuPos + val); dragStartPosition = position; } public void OnEndDrag(PointerEventData eventData) { //IL_0008: Unknown result type (might be due to invalid IL or missing references) //IL_000e: Unknown result type (might be due to invalid IL or missing references) //IL_0013: Unknown result type (might be due to invalid IL or missing references) //IL_0018: Unknown result type (might be due to invalid IL or missing references) ((Transform)((Component)this).GetComponent<RectTransform>()).position = Vector2.op_Implicit(eventData.position - pointerOffset); } } internal class HarmonyPatches { [HarmonyPatch(typeof(Player), "Awake")] private class Player_Awake { private static void Postfix(Player __instance) { Mod.UpdateShader(); Mod.AddConsoleCommands(); Mod.CreateUI(); Mod.AddCameraComponents(); Mod.CreatePostProcessShader(); Mod.SetShaderProperties(); } } [HarmonyPatch(typeof(EnvMan), "Awake")] private class EnvMan_Awake { [HarmonyPriority(0)] private static void Postfix(EnvMan __instance) { Mod.envMan = __instance; bLog.Log("Preparing envs"); Mod.dayIntensities.Clear(); Mod.nightIntensities.Clear(); bLog.Log("Existing envs"); foreach (EnvSetup environment in __instance.m_environments) { bLog.Log("Preparing env " + environment.m_name); if (!Mod.dayIntensities.ContainsKey(environment)) { Mod.dayIntensities.Add(environment, environment.m_lightIntensityDay); Mod.nightIntensities.Add(environment, environment.m_lightIntensityNight); } else { bLog.Log("Couldn't add environment " + environment.m_name + " as it has already been added."); } } } } [HarmonyPatch(typeof(EnvMan), "SetEnv")] private class EnvMan_SetEnv { private static void Postfix(EnvMan __instance) { Mod.UpdateEnvs(__instance); } } private readonly Harmony harmony = new Harmony("Badgers.ShadingOverhaul"); public HarmonyPatches() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown harmony.PatchAll(); } } internal class bLog { public static bool debugEnabled = Mod.config.DebugInfo.Value; public static string logLabel = "BSO"; public static void Log(string LogMessage, bool force = false) { if (debugEnabled || force) { Debug.Log((object)(logLabel + ": " + LogMessage)); } } } [BepInPlugin("Badgers.ShadingOverhaul", "Badgers Shading Overhaul", "0.3.4")] [BepInProcess("valheim.exe")] public class Badgers_Shading_Overhaul : BaseUnityPlugin { private HarmonyPatches ShadingOverhaul; private byte[] abBytes; private AssetBundle ab; private void Awake() { ShadingOverhaul = new HarmonyPatches(); abBytes = Resources.deferredshaders; ab = AssetBundle.LoadFromMemory(abBytes); Mod.ReplacementShader = ab.LoadAsset<Shader>("Internal-DeferredShading"); Mod.PostProcessShader = ab.LoadAsset<Shader>("PostProcess"); ab.Unload(false); abBytes = null; Mod.OriginalShader = GraphicsSettings.GetCustomShader((BuiltinShaderType)0); } private void Update() { //IL_002a: Unknown result type (might be due to invalid IL or missing references) if (!((Object)(object)Player.m_localPlayer == (Object)null) || Mod.DevMode) { if (Input.GetKeyDown(Mod.config.ModToggleKey.Value)) { Mod.UI.ToggleMenu(); } if (Input.GetKeyDown((KeyCode)27) && Mod.UI.showMenu) { Mod.UI.ToggleMenu(); } } } } internal static class Mod { [Serializable] [CompilerGenerated] private sealed class <>c { public static readonly <>c <>9 = new <>c(); public static ConsoleEvent <>9__16_0; internal void <AddConsoleCommands>b__16_0(ConsoleEventArgs args) { float value = default(float); args.TryParameterFloat(1, ref value); config.AmbientLight.Value = value; } } public static string ConfigPath = Paths.ConfigPath; public static string PluginPath = Paths.PluginPath; public static string ConfigFile = Path.Combine(ConfigPath, "BadgersShadingOverhaul.cfg"); public static Config config = new Config(); private static BVTAssets bvtAssets = new BVTAssets(); public static BVTUI UI; private static List<string> Category = new List<string> { "Mod Config" }; public static Dictionary<EnvSetup, float> dayIntensities = new Dictionary<EnvSetup, float>(); public static Dictionary<EnvSetup, float> nightIntensities = new Dictionary<EnvSetup, float>(); public static Shader ReplacementShader; public static Shader OriginalShader; public static Shader PostProcessShader; public static Material PostProcessMaterial; public static Camera mainCamera; public static EnvMan envMan; public static bool DevMode = false; public static void AddConsoleCommands() { //IL_0033: Unknown result type (might be due to invalid IL or missing references) //IL_001f: Unknown result type (might be due to invalid IL or missing references) //IL_0024: Unknown result type (might be due to invalid IL or missing references) //IL_002a: Expected O, but got Unknown object obj = <>c.<>9__16_0; if (obj == null) { ConsoleEvent val = delegate(ConsoleEventArgs args) { float value = default(float); args.TryParameterFloat(1, ref value); config.AmbientLight.Value = value; }; <>c.<>9__16_0 = val; obj = (object)val; } new ConsoleCommand("setambientlight", "Set the ambient light modifier", (ConsoleEvent)obj, false, false, false, false, false, (ConsoleOptionsFetcher)null, false, false, false); } public static void UpdateEnvs(EnvMan instance) { if ((Object)(object)instance != (Object)null && dayIntensities.ContainsKey(instance.m_currentEnv)) { if (config.CleanShadingOn.Value) { instance.m_currentEnv.m_lightIntensityDay = dayIntensities[instance.m_currentEnv] * config.AmbientLight.Value; instance.m_currentEnv.m_lightIntensityNight = nightIntensities[instance.m_currentEnv] * config.AmbientLight.Value; } else { instance.m_currentEnv.m_lightIntensityDay = dayIntensities[instance.m_currentEnv]; instance.m_currentEnv.m_lightIntensityNight = nightIntensities[instance.m_currentEnv]; } } } public static void SetShaderProperties() { Shader.SetGlobalFloat("_BSOSpecularIntensity", 1f + config.SpecularIntensity.Value * 0.05f); } public static void UpdateShader() { bLog.Log("Updating Shader"); if (config.CleanShadingOn.Value) { bLog.Log("Using New Shader"); GraphicsSettings.SetCustomShader((BuiltinShaderType)0, ReplacementShader); } else { GraphicsSettings.SetCustomShader((BuiltinShaderType)0, OriginalShader); } } public static void CreateUI() { UI = new BVTUI(bvtAssets); if (!UI.UICreated) { return; } bLog.Log("Creating UI Panels", force: true); UI.SetupMainPanel(HandleCanvasDropDown, Category, "Shading Overhaul Configuration"); foreach (string item in Category) { string text = item; string text2 = text; if (text2 == "Mod Config") { CreateModConfig(item); } } } private static void CreateModConfig(string PanelName) { UIPanel uIPanel = UI.CreateUIPanel(PanelName); if (uIPanel != null) { uIPanel.AddToggleWidget("Mod Enabled", config.CleanShadingOn.Value, HandleModToggle); uIPanel.AddSliderWidget(ref config.SpecularIntensity, -1f, 1f, HandleSpecIntensity); uIPanel.AddSliderWidget(ref config.AmbientLight, 0f, 2f, HandleAmbientLight); uIPanel.AddSliderWidget(ref config.ColorTemp, -1f, 1f, HandleColorTemp); uIPanel.AddSliderWidget(ref config.ColorSaturation, 0f, 2f, HandleColorSaturation); UI.AddUIPanel(uIPanel, SetActive: true); } } private static void HandleColorSaturation(float value, string title) { if ((Object)(object)PostProcessMaterial != (Object)null) { PostProcessMaterial.SetFloat("_Saturation", value); } } private static void HandleColorTemp(float value, string title) { if ((Object)(object)PostProcessMaterial != (Object)null) { PostProcessMaterial.SetFloat("_Temperature", value); } } private static void HandleAmbientLight(float value, string title) { config.AmbientLight.Value = value; UpdateEnvs(envMan); } private static void HandleSpecIntensity(float value, string title) { config.SpecularIntensity.Value = value; SetShaderProperties(); } private static void HandleModToggle(Toggle t) { config.CleanShadingOn.Value = t.isOn; UpdateShader(); } private static void HandleCanvasDropDown(Dropdown dd) { bLog.Log("setting " + Category[dd.value] + " panel active"); UI.SetActiveUIPanel(Category[dd.value]); } public static void AddCameraComponents() { mainCamera = Utils.GetMainCamera(); if ((Object)(object)mainCamera != (Object)null) { ((Component)mainCamera).gameObject.AddComponent<CameraPostProcess>(); } } public static void CreatePostProcessShader() { //IL_0006: Unknown result type (might be due to invalid IL or missing references) //IL_0010: Expected O, but got Unknown PostProcessMaterial = new Material(PostProcessShader); ((Object)PostProcessMaterial).name = "BSOPostProcessMaterial"; ((Object)PostProcessMaterial).hideFlags = (HideFlags)61; PostProcessMaterial.SetFloat("_Temperature", config.ColorTemp.Value); PostProcessMaterial.SetFloat("_Saturation", config.ColorSaturation.Value); } } } namespace Badgers_Shading_Overhaul.Properties { [GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [DebuggerNonUserCode] [CompilerGenerated] internal class Resources { private static ResourceManager resourceMan; private static CultureInfo resourceCulture; [EditorBrowsable(EditorBrowsableState.Advanced)] internal static ResourceManager ResourceManager { get { if (resourceMan == null) { ResourceManager resourceManager = new ResourceManager("Badgers_Shading_Overhaul.Properties.Resources", typeof(Resources).Assembly); resourceMan = resourceManager; } return resourceMan; } } [EditorBrowsable(EditorBrowsableState.Advanced)] internal static CultureInfo Culture { get { return resourceCulture; } set { resourceCulture = value; } } internal static byte[] deferredshaders { get { object @object = ResourceManager.GetObject("deferredshaders", resourceCulture); return (byte[])@object; } } internal static byte[] guiassets { get { object @object = ResourceManager.GetObject("guiassets", resourceCulture); return (byte[])@object; } } internal Resources() { } } } namespace Badgers_Shading_Overhaul.Gui { public delegate void DropdownHandler(Dropdown dd); public enum WidgetType { Slider, Button } internal class BVTUI { private GameObject BVTCanvas; private BVTAssets bvtAssets; private GameObject widgetSpace = null; private GameObject mainCanvas = null; private GameObject mainPanel = null; private Dictionary<string, UIPanel> UIPanels = new Dictionary<string, UIPanel>(); private string ActiveUIPanelName; public bool showMenu = false; public bool UICreated = false; public BVTUI(BVTAssets AssetBundle) { bLog.Log("Attempting to create UI"); if (AssetBundle.assetsLoaded) { bvtAssets = AssetBundle; if (CreateUI()) { AddUIComponents(); } bLog.Log("UI created"); UICreated = true; } else { bLog.Log("Unable to create UI due to missing assets"); } } private bool CreateUI() { mainCanvas = bvtAssets.GetCanvas(); if ((Object)(object)mainCanvas != (Object)null) { BVTCanvas = Object.Instantiate<GameObject>(mainCanvas); widgetSpace = ((Component)((Transform)BVTCanvas.GetComponent<RectTransform>()).Find("Panel/ScrollView/Viewport/Content/WidgetSpace")).gameObject; widgetSpace.SetActive(false); BVTCanvas.SetActive(false); return true; } BVTCanvas = null; return false; } public void SetupMainPanel(DropdownHandler dropDownHandler, List<string> Category, string Title) { mainPanel.GetComponent<DropdownComponent>().PopulateItems(Category); mainPanel.GetComponent<DropdownComponent>().ValueChangedHandler(dropDownHandler); ((Component)mainPanel.transform.Find("TitleText")).GetComponent<Text>().text = Title; } public UIPanel CreateUIPanel(string Name) { if ((Object)(object)widgetSpace != (Object)null) { UIPanel uIPanel = new UIPanel(Name, widgetSpace, BVTCanvas, bvtAssets); if (uIPanel != null) { return uIPanel; } } return null; } public void AddUIPanel(UIPanel Panel, bool SetActive = false) { //IL_0042: Unknown result type (might be due to invalid IL or missing references) if (SetActive) { Panel.panel.SetActive(true); ActiveUIPanelName = ((Object)Panel.panel).name; } Panel.panel.GetComponent<RectTransform>().sizeDelta = new Vector2(0f, Panel.totalHeight / 2f); UIPanels.Add(Panel.name, Panel); } public void SetActiveUIPanel(string PanelName) { if (!(PanelName != ActiveUIPanelName)) { return; } foreach (UIPanel value in UIPanels.Values) { if (PanelName == value.name) { value.panel.SetActive(true); ActiveUIPanelName = PanelName; } else { value.panel.SetActive(false); } } } public void ToggleMenu() { if (!((Object)(object)BVTCanvas != (Object)null)) { return; } if (!showMenu) { Cursor.lockState = (CursorLockMode)0; Cursor.visible = true; if ((Object)(object)Player.m_localPlayer != (Object)null) { ((Behaviour)((Component)Player.m_localPlayer).GetComponent<PlayerController>()).enabled = false; ((Behaviour)GameCamera.instance).enabled = false; } showMenu = true; BVTCanvas.SetActive(true); } else { Cursor.lockState = (CursorLockMode)1; Cursor.visible = false; if ((Object)(object)Player.m_localPlayer != (Object)null) { ((Behaviour)((Component)Player.m_localPlayer).GetComponent<PlayerController>()).enabled = true; ((Behaviour)GameCamera.instance).enabled = true; } showMenu = false; BVTCanvas.SetActive(false); } } private void AddUIComponents() { mainPanel = ((Component)((Transform)BVTCanvas.GetComponent<RectTransform>()).Find("Panel")).gameObject; if ((Object)(object)mainPanel != (Object)null) { mainPanel.AddComponent<MouseDragComponent>(); mainPanel.AddComponent<DropdownComponent>(); } } } internal class DropdownComponent : MonoBehaviour { private Dropdown dropDown; public void PopulateItems(List<string> Items) { dropDown = ((Component)((Transform)((Component)this).GetComponent<RectTransform>()).Find("CatSelector")).GetComponent<Dropdown>(); dropDown.AddOptions(Items); } public void ValueChangedHandler(DropdownHandler dropDownHandler) { ((UnityEvent<int>)(object)dropDown.onValueChanged).AddListener((UnityAction<int>)delegate { dropDownHandler(dropDown); }); } } internal class UIPanel { public GameObject panel = null; public string name; private BVTAssets bvtAssets; private float lastWidgetHeight; private float widgetPanelOffset; private float widgetPanelSpacing = 80f; public float totalHeight = 0f; private List<Toggle> Toggles = new List<Toggle>(); public UIPanel(string Name, GameObject SourcePanel, GameObject MainCanvas, BVTAssets Assets) { panel = Object.Instantiate<GameObject>(SourcePanel, ((Component)((Transform)MainCanvas.GetComponent<RectTransform>()).Find("Panel/ScrollView/Viewport/Content")).transform); name = Name; bvtAssets = Assets; } public bool AddSliderWidget(ref ConfigEntry<float> bvtConfigValue, float MinValue, float MaxValue, SliderHandlerMethod sliderHandlerMethod = null, string precision = "0.00") { //IL_0058: Unknown result type (might be due to invalid IL or missing references) //IL_005d: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) GameObject sliderWidget = bvtAssets.GetSliderWidget(); if ((Object)(object)sliderWidget != (Object)null) { GameObject val = Object.Instantiate<GameObject>(((Component)((Transform)sliderWidget.GetComponent<RectTransform>()).Find("Widget")).gameObject, panel.transform); if ((Object)(object)val != (Object)null) { Rect rect = val.GetComponent<RectTransform>().rect; lastWidgetHeight = ((Rect)(ref rect)).height; val.AddComponent<SliderWidgetController>(); val.transform.localPosition = new Vector3(0f, widgetPanelOffset, 0f); widgetPanelOffset = lastWidgetHeight + widgetPanelSpacing; totalHeight += widgetPanelOffset; SliderWidgetController component = val.GetComponent<SliderWidgetController>(); if ((Object)(object)component != (Object)null) { bLog.Log("Widget Controller added"); component.SetParameters(ref bvtConfigValue, MinValue, MaxValue, sliderHandlerMethod, precision); } return true; } } return false; } public bool AddBUttonWidget(string Text, handlerMethod HandlerMethod) { //IL_005f: Unknown result type (might be due to invalid IL or missing references) //IL_0064: Unknown result type (might be due to invalid IL or missing references) //IL_0088: Unknown result type (might be due to invalid IL or missing references) GameObject buttonWidget = bvtAssets.GetButtonWidget(); if ((Object)(object)buttonWidget != (Object)null) { GameObject val = Object.Instantiate<GameObject>(((Component)((Transform)buttonWidget.GetComponent<RectTransform>()).Find("Widget")).gameObject, panel.transform); if ((Object)(object)val != (Object)null) { val.AddComponent<ButtonWidgetController>(); Rect rect = val.GetComponent<RectTransform>().rect; lastWidgetHeight = ((Rect)(ref rect)).height; val.transform.localPosition = new Vector3(0f, widgetPanelOffset, 0f); widgetPanelOffset = lastWidgetHeight + widgetPanelSpacing; ButtonWidgetController component = val.GetComponent<ButtonWidgetController>(); if ((Object)(object)component != (Object)null) { bLog.Log("Widget controller addded"); component.SetParameters(Text, HandlerMethod); } return true; } } return false; } public bool AddLabelWidget(string Text) { //IL_006b: Unknown result type (might be due to invalid IL or missing references) //IL_0070: Unknown result type (might be due to invalid IL or missing references) //IL_0094: Unknown result type (might be due to invalid IL or missing references) GameObject labelWidget = bvtAssets.GetLabelWidget(); if ((Object)(object)labelWidget != (Object)null) { GameObject val = Object.Instantiate<GameObject>(((Component)((Transform)labelWidget.GetComponent<RectTransform>()).Find("Widget")).gameObject, panel.transform); if ((Object)(object)val != (Object)null) { val.AddComponent<LabelWidgetController>(); bLog.Log("Added label widget to UI"); Rect rect = val.GetComponent<RectTransform>().rect; lastWidgetHeight = ((Rect)(ref rect)).height; val.transform.localPosition = new Vector3(0f, widgetPanelOffset, 0f); widgetPanelOffset = lastWidgetHeight + widgetPanelSpacing; LabelWidgetController component = val.GetComponent<LabelWidgetController>(); if ((Object)(object)component != (Object)null) { component.SetParameters(Text); } return true; } } return false; } public bool AddToggleWidget(string Text, bool state, ToggleHandler toggleHandler) { //IL_008c: Unknown result type (might be due to invalid IL or missing references) //IL_0091: Unknown result type (might be due to invalid IL or missing references) //IL_00b5: Unknown result type (might be due to invalid IL or missing references) GameObject toggleWidget = bvtAssets.GetToggleWidget(); if ((Object)(object)toggleWidget != (Object)null) { GameObject val = Object.Instantiate<GameObject>(((Component)((Transform)toggleWidget.GetComponent<RectTransform>()).Find("Widget")).gameObject, panel.transform); if ((Object)(object)val != (Object)null) { val.AddComponent<ToggleWidgetController>(); Toggles.Add(((Component)val.transform.Find("Toggle")).GetComponent<Toggle>()); bLog.Log("Added toggle widget to UI"); Rect rect = val.GetComponent<RectTransform>().rect; lastWidgetHeight = ((Rect)(ref rect)).height; val.transform.localPosition = new Vector3(0f, widgetPanelOffset, 0f); widgetPanelOffset = lastWidgetHeight + widgetPanelSpacing; ToggleWidgetController component = val.GetComponent<ToggleWidgetController>(); if ((Object)(object)component != (Object)null) { component.SetParameters(Text, state, toggleHandler); } return true; } } return false; } public void ClearToggles() { foreach (Toggle toggle in Toggles) { toggle.isOn = false; } } } } namespace Badgers_Shading_Overhaul.Gui.GUIScriptComponents { public delegate void handlerMethod(); internal class ButtonWidgetController : MonoBehaviour { public void SetParameters(string Text, handlerMethod HandlerMethod) { //IL_004b: Unknown result type (might be due to invalid IL or missing references) //IL_0055: Expected O, but got Unknown ((Component)((Component)this).transform.Find("Button/Text")).GetComponent<Text>().text = Text; ((UnityEvent)((Component)((Component)this).transform.Find("Button")).GetComponent<Button>().onClick).AddListener((UnityAction)delegate { HandlerMethod(); }); } } internal class LabelWidgetController : MonoBehaviour { public void SetParameters(string Text) { ((Component)((Component)this).transform.Find("Text")).GetComponent<Text>().text = Text; } } public delegate void SliderHandlerMethod(float value, string title); internal class SliderWidgetController : MonoBehaviour { private string titleText; private Text title; private Slider slider; private InputField textInput; private float sliderValue; private float sliderMinValue; private float sliderMaxValue; private ConfigEntry<float> bvtConfigItem; private string precision = "0.00"; public void SetParameters(ref ConfigEntry<float> ConfigValue, float MinSliderValue, float MaxSliderValue, SliderHandlerMethod sliderHandlerMethod = null, string Precision = "0.00") { bvtConfigItem = ConfigValue; titleText = ((ConfigEntryBase)ConfigValue).Description.Description + ", Default Value: " + ((ConfigEntryBase)ConfigValue).DefaultValue.ToString(); sliderMinValue = MinSliderValue; sliderMaxValue = MaxSliderValue; sliderValue = ConfigValue.Value; precision = Precision; title = ((Component)((Component)this).transform.Find("Title")).GetComponent<Text>(); if ((Object)(object)title != (Object)null) { title.text = titleText; } SetValues(sliderMinValue, sliderMaxValue, sliderValue, sliderHandlerMethod); } private void SetValues(float MinValue, float MaxValue, float Value, SliderHandlerMethod m = null) { textInput = ((Component)((Component)this).transform.Find("TextInput")).GetComponent<InputField>(); if ((Object)(object)textInput != (Object)null) { ((UnityEvent<string>)(object)textInput.onEndEdit).AddListener((UnityAction<string>)delegate { OnTextInputChanged(textInput); }); } slider = ((Component)((Component)this).transform.Find("Slider")).GetComponent<Slider>(); if (!((Object)(object)slider != (Object)null)) { return; } ((UnityEvent<float>)(object)slider.onValueChanged).AddListener((UnityAction<float>)delegate { OnSliderChanged(slider); }); if (m != null) { ((UnityEvent<float>)(object)slider.onValueChanged).AddListener((UnityAction<float>)delegate { m(slider.value, ((ConfigEntryBase)bvtConfigItem).Description.Description); }); } slider.minValue = MinValue; slider.maxValue = MaxValue; slider.value = Value; textInput.text = Value.ToString(precision); } private void OnTextInputChanged(InputField textInput) { slider.value = float.Parse(textInput.text); } private void OnSliderChanged(Slider slider) { sliderValue = slider.value; textInput.text = sliderValue.ToString(precision); bvtConfigItem.Value = sliderValue; } } public delegate void ToggleHandler(Toggle t); internal class ToggleWidgetController : MonoBehaviour { public void SetParameters(string Text, bool state, ToggleHandler toggleHandler) { ((Component)((Component)this).transform.Find("Toggle/Label")).GetComponent<Text>().text = Text; Toggle tg = ((Component)((Component)this).transform.Find("Toggle")).GetComponent<Toggle>(); tg.isOn = state; if (toggleHandler != null) { ((UnityEvent<bool>)(object)((Component)((Component)this).transform.Find("Toggle")).GetComponent<Toggle>().onValueChanged).AddListener((UnityAction<bool>)delegate { toggleHandler(tg); }); } } } }