summaryrefslogtreecommitdiff
path: root/Thronefall_v1.0/Decompile/ColorAndLightManager.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Thronefall_v1.0/Decompile/ColorAndLightManager.cs')
-rw-r--r--Thronefall_v1.0/Decompile/ColorAndLightManager.cs235
1 files changed, 235 insertions, 0 deletions
diff --git a/Thronefall_v1.0/Decompile/ColorAndLightManager.cs b/Thronefall_v1.0/Decompile/ColorAndLightManager.cs
new file mode 100644
index 0000000..83afad1
--- /dev/null
+++ b/Thronefall_v1.0/Decompile/ColorAndLightManager.cs
@@ -0,0 +1,235 @@
+using System.Collections;
+using UnityEngine;
+
+public class ColorAndLightManager : MonoBehaviour, DayNightCycle.IDaytimeSensitive
+{
+ [SerializeField]
+ private Light sunlight;
+
+ [SerializeField]
+ private Colorscheme colorscheme;
+
+ [SerializeField]
+ private float transitionDuration = 3f;
+
+ [SerializeField]
+ private Transform playerTransform;
+
+ [SerializeField]
+ private Material enemyMaterial;
+
+ [SerializeField]
+ private Material allyMaterial;
+
+ [SerializeField]
+ private Material playerMaterial;
+
+ [SerializeField]
+ private Material playerCapeMaterial;
+
+ [SerializeField]
+ private Material playerCrownMaterial;
+
+ [SerializeField]
+ private Material horseMaterial;
+
+ [SerializeField]
+ private Material buildingMaterial;
+
+ [SerializeField]
+ private Material buildingPreviewMaterial;
+
+ [SerializeField]
+ private Material coinMaterial;
+
+ [SerializeField]
+ private Material groundMaterial;
+
+ [SerializeField]
+ private Material groundHigh;
+
+ [SerializeField]
+ private Material groundLow;
+
+ [SerializeField]
+ private Material groundPatches;
+
+ [SerializeField]
+ private Material treeMaterial;
+
+ [SerializeField]
+ private Material rockMaterial;
+
+ [SerializeField]
+ private Material waterMaterial;
+
+ [SerializeField]
+ private Material oceanMaterial;
+
+ [SerializeField]
+ private Material roadMaterial;
+
+ [SerializeField]
+ private Material shadowShapeMaterial;
+
+ [SerializeField]
+ private Material customPostProcessingMaterial;
+
+ public static Colorscheme currentColorscheme;
+
+ public void OnDawn_AfterSunrise()
+ {
+ }
+
+ public void OnDusk()
+ {
+ StopAllCoroutines();
+ StartCoroutine(ToNight());
+ }
+
+ public void OnDawn_BeforeSunrise()
+ {
+ StopAllCoroutines();
+ StartCoroutine(ToDay());
+ }
+
+ public void Daylight()
+ {
+ sunlight.color = colorscheme.dayLightColor;
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, colorscheme.dayLightColor);
+ }
+
+ public void SunsetLight()
+ {
+ sunlight.color = colorscheme.sunsetLightColor;
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, colorscheme.sunsetLightColor);
+ }
+
+ public void NightLight()
+ {
+ sunlight.color = colorscheme.nightLightColor;
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, colorscheme.nightLightColor);
+ }
+
+ private IEnumerator ToDay()
+ {
+ float timer2 = 0f;
+ sunlight.color = colorscheme.nightLightColor;
+ while (timer2 <= transitionDuration)
+ {
+ timer2 += Time.deltaTime;
+ sunlight.color = Color.Lerp(colorscheme.nightLightColor, colorscheme.sunsetLightColor, timer2 / transitionDuration);
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, sunlight.color);
+ yield return null;
+ }
+ timer2 = 0f;
+ while (timer2 <= transitionDuration)
+ {
+ timer2 += Time.deltaTime;
+ sunlight.color = Color.Lerp(colorscheme.sunsetLightColor, colorscheme.dayLightColor, timer2 / transitionDuration);
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, sunlight.color);
+ yield return null;
+ }
+ sunlight.color = colorscheme.dayLightColor;
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, sunlight.color);
+ }
+
+ private IEnumerator ToNight()
+ {
+ float timer = 0f;
+ sunlight.color = colorscheme.dayLightColor;
+ while (timer <= transitionDuration)
+ {
+ timer += Time.deltaTime;
+ sunlight.color = Color.Lerp(colorscheme.dayLightColor, colorscheme.nightLightColor, timer / transitionDuration);
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, sunlight.color);
+ yield return null;
+ }
+ sunlight.color = colorscheme.nightLightColor;
+ AdjustAllOutlineColorsBasedOnLight(colorscheme.globalShadowColor, sunlight.color);
+ }
+
+ private void Start()
+ {
+ sunlight.color = colorscheme.dayLightColor;
+ DayNightCycle.Instance.RegisterDaytimeSensitiveObject(this);
+ ApplayColorScheme();
+ if ((bool)playerTransform && (bool)colorscheme.particlesToAttachToPlayer)
+ {
+ Object.Instantiate(colorscheme.particlesToAttachToPlayer, playerTransform).transform.localPosition = Vector3.zero;
+ }
+ }
+
+ public void ApplayColorScheme()
+ {
+ ApplyColorScheme(colorscheme);
+ }
+
+ public void ApplyColorScheme(Colorscheme _colorScheme)
+ {
+ SetMaterialColors(enemyMaterial, _colorScheme.enemyLightColor, _colorScheme.enemyMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(allyMaterial, _colorScheme.allyLightColor, _colorScheme.allyMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(playerMaterial, _colorScheme.playerLightColor, _colorScheme.playerMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(playerCapeMaterial, _colorScheme.playerCapeLightColor, _colorScheme.playerCapeMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(playerCrownMaterial, _colorScheme.playerCrownLightColor, _colorScheme.playerCrownMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(horseMaterial, _colorScheme.horseLightColor, _colorScheme.horseMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(buildingMaterial, _colorScheme.buildingLightColor, _colorScheme.buildingMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(_lightCol: new Color(_colorScheme.buildingLightColor.r, _colorScheme.buildingLightColor.g, _colorScheme.buildingLightColor.b, 0.15f), _midCol: new Color(_colorScheme.buildingMidColor.r, _colorScheme.buildingMidColor.g, _colorScheme.buildingMidColor.b, 0.15f), _shadowCol: new Color(_colorScheme.globalShadowColor.r, _colorScheme.globalShadowColor.g, _colorScheme.globalShadowColor.b, 0.15f), _mat: buildingPreviewMaterial);
+ SetMaterialColors(coinMaterial, _colorScheme.coinLightColor, _colorScheme.coinMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(groundMaterial, _colorScheme.groundColor, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(groundPatches, _colorScheme.groundColor, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(groundHigh, _colorScheme.groundColorHigh, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(groundLow, _colorScheme.groundColorLow, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(treeMaterial, _colorScheme.treeLightColor, _colorScheme.treeMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(rockMaterial, _colorScheme.rockLightColor, _colorScheme.rockMidColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(waterMaterial, _colorScheme.waterLightColor, _colorScheme.waterSecondaryColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(oceanMaterial, _colorScheme.waterLightColor, _colorScheme.waterSecondaryColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(roadMaterial, _colorScheme.roadColor, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColors(shadowShapeMaterial, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor, _colorScheme.globalShadowColor);
+ SetMaterialColorsPostProcessing(customPostProcessingMaterial, _colorScheme.brightness, _colorScheme.topColorAdd, _colorScheme.botColorAdd, _colorScheme.contrast, _colorScheme.saturation, _colorScheme.mix);
+ currentColorscheme = _colorScheme;
+ }
+
+ private void SetMaterialColors(Material _mat, Color _lightCol, Color _midCol, Color _shadowCol)
+ {
+ _mat.SetColor("_BaseColor", _lightCol);
+ _mat.SetColor("_ColorDim", _midCol);
+ _mat.SetColor("_ColorDimExtra", _shadowCol);
+ _mat.SetColor("_UnityShadowColor", _shadowCol);
+ _mat.SetColor("_OutlineColor", _shadowCol);
+ }
+
+ public void AdjustAllOutlineColorsBasedOnLight(Color outlineColor, Color lightColor)
+ {
+ SetOutlineColorBasedOnLight(enemyMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(allyMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(playerMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(playerCapeMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(playerCrownMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(horseMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(buildingMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(coinMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(groundMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(groundPatches, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(treeMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(rockMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(waterMaterial, outlineColor, lightColor);
+ SetOutlineColorBasedOnLight(oceanMaterial, outlineColor, lightColor);
+ }
+
+ private void SetOutlineColorBasedOnLight(Material _mat, Color _outlineCol, Color lightCol)
+ {
+ Color value = Color.Lerp(_outlineCol, _outlineCol * lightCol, _mat.GetFloat("_LightContribution"));
+ _mat.SetColor("_OutlineColor", value);
+ }
+
+ private void SetMaterialColorsPostProcessing(Material _mat, float _brightness, Color _top, Color _bot, float _contrast, float _saturation, float _mix)
+ {
+ _mat.SetFloat("_Brightness", _brightness);
+ _mat.SetColor("_TopColorAdd", _top);
+ _mat.SetColor("_BotColorAdd", _bot);
+ _mat.SetFloat("_Contrast", _contrast);
+ _mat.SetFloat("_Saturation", _saturation);
+ _mat.SetFloat("_Mix", _mix);
+ }
+}