diff options
Diffstat (limited to 'Thronefall_v1.0/Decompile/ColorAndLightManager.cs')
-rw-r--r-- | Thronefall_v1.0/Decompile/ColorAndLightManager.cs | 235 |
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); + } +} |