diff --git a/CameraResolutionScale/Plugin.cs b/CameraResolutionScale/Plugin.cs index a4ec868..94499bc 100644 --- a/CameraResolutionScale/Plugin.cs +++ b/CameraResolutionScale/Plugin.cs @@ -6,6 +6,7 @@ using Comfort.Common; using System.Reflection; using System.Collections; using EFT.Settings.Graphics; +using System.ComponentModel; namespace ScopeTweaks { @@ -19,7 +20,10 @@ namespace ScopeTweaks enum EFOVScalingMode { Disabled, - Enabled, + [Description("Magnified optics")] + ScopesOnly, + [Description("All sights")] + All, } void Awake() @@ -36,7 +40,7 @@ namespace ScopeTweaks 80, new ConfigDescription("Scope camera resolution scale", new AcceptableValueRange(25, 100))); - scopeFixType = Config.Bind("General", "High FOV scope tweak", EFOVScalingMode.Enabled, new ConfigDescription("")); + scopeFixType = Config.Bind("General", "High FOV sight tweak", EFOVScalingMode.ScopesOnly, new ConfigDescription("")); } Camera FPSCamera = null; @@ -57,12 +61,12 @@ namespace ScopeTweaks { case GameStatus.Started: { - //Logger.LogInfo("Getting local player"); + Logger.LogInfo("Getting local player"); mainPlayer = getLocalPlayer(); subscribeHandsChangedEvent(); - //Logger.LogInfo("Assigning cameras..."); + Logger.LogInfo("Assigning cameras..."); StartCoroutine(tryGetMainCamera()); StartCoroutine(tryGetScopeCamera()); @@ -71,7 +75,7 @@ namespace ScopeTweaks case GameStatus.SoftStopping: case GameStatus.Stopped: { - //Logger.LogInfo("Resetting..."); + Logger.LogInfo("Resetting..."); FPSCamera = null; scopeCamera = null; mainPlayer = null; @@ -107,13 +111,13 @@ namespace ScopeTweaks int getInGameFOV() { int fov = Singleton.Instance.Game.Settings.FieldOfView.Value; - //Logger.LogInfo($"In-game FOV: {fov}"); + Logger.LogInfo($"In-game FOV: {fov}"); return fov; } void setInGameFOV(int value) { - //Logger.LogInfo($"Setting FOV to {value}"); + Logger.LogInfo($"setInGameFOV(): Update to {value}"); Singleton.Instance.Game.Settings.FieldOfView.Value = value; } @@ -127,11 +131,11 @@ namespace ScopeTweaks if (GameObject.Find(cameraName) != null) { FPSCamera = GameObject.Find(cameraName).GetComponent(); - //Logger.LogInfo($"{FPSCamera.name} found!"); + Logger.LogInfo($"{FPSCamera.name} found!"); } else { - //Logger.LogMessage($"Camera \"{cameraName}\" not found, rescheduling..."); + Logger.LogMessage($"Camera \"{cameraName}\" not found, rescheduling..."); yield return myDelaySec; StartCoroutine(tryGetMainCamera()); yield break; @@ -150,14 +154,14 @@ namespace ScopeTweaks if (GameObject.Find(cameraName) != null) { scopeCamera = GameObject.Find(cameraName).GetComponent(); - //Logger.LogInfo($"Camera \"{scopeCamera.name}\" found!"); + Logger.LogInfo($"Camera \"{scopeCamera.name}\" found!"); } yield break; } void setMainCameraResolutionScale(int value = 100) { - //Logger.LogInfo($"Setting MainCam res scale to {value}%"); + Logger.LogInfo($"Setting MainCam res scale to {value}%"); ssaaInstance = FPSCamera.GetComponent(); _nextSSRation = getFieldInfo("_nextSSRation"); _nextSSRation.SetValue(ssaaInstance, (float)(currentScalingFactor * value / 100f)); @@ -166,10 +170,10 @@ namespace ScopeTweaks void setScopeCameraResolutionScale(int value) { if(scopeCamera == null || !scopeCamera.isActiveAndEnabled) - { //Logger.LogInfo("ScopeCam inactive or absent!"); + { Logger.LogInfo("ScopeCam inactive or absent!"); return; } - //Logger.LogInfo($"Setting Scope res scale to {value}%"); + Logger.LogInfo($"Setting Scope res scale to {value}%"); scopeCamera.GetComponent().OpticCameraToMainCameraResolutionRatio = (float)(currentScalingFactor * value / 100); } @@ -178,7 +182,7 @@ namespace ScopeTweaks /// void subscribeHandsChangedEvent() { - //Logger.LogInfo("Subscribing to HandsChanged Event"); + Logger.LogInfo("Subscribing to HandsChanged Event"); mainPlayer.HandsChangedEvent += (handsArgs) => { subscribeOnAimingChangedEvent(); @@ -187,33 +191,83 @@ namespace ScopeTweaks void subscribeOnAimingChangedEvent() { - //Logger.LogInfo("Subscribing to OnAimingChanged Event"); + Logger.LogInfo("Subscribing to OnAimingChanged Event"); mainPlayer.HandsController.OnAimingChanged += (aimingArgs) => { - if (scopeFixType.Value != EFOVScalingMode.Enabled) return; - if(!mainPlayer.ProceduralWeaponAnimation.IsAiming) - { - GClass1774.Instance.SetFov(inGameFOV, 0.33f, false); - setInGameFOV(inGameFOV); - } - setMainCameraResolutionScale(); - currentScalingFactor = getCurrentScalingFactor(); StartCoroutine(tryGetScopeCamera()); - if(mainPlayer.HandsController.IsAiming) - { - if(inGameFOV != 50) { inGameFOV = getInGameFOV(); } - - GClass1774.Instance.SetFov(35, 0.25f, false); - setInGameFOV(50); - setMainCameraResolutionScale(cameraResolutionScale.Value); - setScopeCameraResolutionScale(scopeCameraResolutionScale.Value); - return; + + Logger.LogInfo("AimingChanged: notAiming"); + if (!mainPlayer.ProceduralWeaponAnimation.IsAiming) + { + + switch(scopeFixType.Value) + { + case EFOVScalingMode.Disabled: + { + Logger.LogInfo("Nothing to do!"); + break; + } + case EFOVScalingMode.ScopesOnly: + { + setMainCameraResolutionScale(); + GClass1774.Instance.SetFov(90, 0.33f, false); + setInGameFOV(inGameFOV); + break; + } + case EFOVScalingMode.All: + { + setMainCameraResolutionScale(); + GClass1774.Instance.SetFov(90, 0.33f, false); + setInGameFOV(inGameFOV); + break; + } + } + } + + Logger.LogInfo("Entering switch()"); + if (mainPlayer.ProceduralWeaponAnimation.IsAiming) + { + if (inGameFOV != 50) { inGameFOV = getInGameFOV(); } + switch (scopeFixType.Value) + { + case EFOVScalingMode.Disabled: + { + Logger.LogInfo("Plugin is disabled!"); + break; + } + case EFOVScalingMode.ScopesOnly: + { + Logger.LogInfo("Only magnified optics!"); + if(scopeCamera.isActiveAndEnabled) + { + applyFixesWhileAiming(); + } + break; + } + case EFOVScalingMode.All: + { + Logger.LogInfo("All sights!"); + + applyFixesWhileAiming(); + + break; + } + } } }; } + void applyFixesWhileAiming() + { + GClass1774.Instance.SetFov(35, 0.25f, false); + setInGameFOV(50); + + setMainCameraResolutionScale(cameraResolutionScale.Value); + setScopeCameraResolutionScale(scopeCameraResolutionScale.Value); + } + /// /// IN-GAME SETTINGS /// @@ -222,12 +276,12 @@ namespace ScopeTweaks float getCurrentScalingFactor() { - //Logger.LogInfo("Getting current scaling factor:"); + Logger.LogInfo("Getting current scaling factor:"); var graphics = Singleton.Instance.Graphics.Settings; if (!graphics.DLSSEnabled && !graphics.FSREnabled) { - //Logger.LogInfo($"Supersampling factor: {graphics.SuperSamplingFactor}"); + Logger.LogInfo($"Supersampling factor: {graphics.SuperSamplingFactor}"); return graphics.SuperSamplingFactor; } @@ -242,7 +296,7 @@ namespace ScopeTweaks case EDLSSMode.Performance: { DLSSFactor = 0.5f; break; } case EDLSSMode.UltraPerformance: { DLSSFactor = 0.33f; break; } } - //Logger.LogInfo($"DLSS factor: {DLSSFactor}"); + Logger.LogInfo($"DLSS factor: {DLSSFactor}"); return DLSSFactor; } if (graphics.FSREnabled) @@ -256,11 +310,11 @@ namespace ScopeTweaks case EFSRMode.Balanced: { FSRFactor = 0.59f; break; } case EFSRMode.Performance: { FSRFactor = 0.5f; break; } } - //Logger.LogInfo($"FSR factor: {FSRFactor}"); + Logger.LogInfo($"FSR factor: {FSRFactor}"); return FSRFactor; } - //Logger.LogInfo($"GetCurrentScalingFactor(): Something went wrong. Returning 1.0f"); + Logger.LogInfo($"GetCurrentScalingFactor(): Something went wrong. Returning 1.0f"); return 1.0f; } }