diff --git a/LifeSourcesLight/LifeSourcesLight.cs b/LifeSourcesLight/LifeSourcesLight.cs index 531d3eb..aa9a90e 100644 --- a/LifeSourcesLight/LifeSourcesLight.cs +++ b/LifeSourcesLight/LifeSourcesLight.cs @@ -4,21 +4,12 @@ namespace LifeSourcesLight { public class LifeSourcesLight : Mod { - internal static bool _enableHeartCrystalLight; - public static bool EnableHeartCrystalLight + public override void PostSetupContent() { - get { return _enableHeartCrystalLight; } - } + base.PostSetupContent(); - internal static bool _enableLifeFruitLight; - public static bool EnableLifeFruitLight - { - get { return _enableLifeFruitLight; } - } - - public override void Load() - { - base.Load(); + // Update Main.tileLighted on post-load to ensure config is properly loaded + LifeSourcesLightModSystem.UpdateTileLighted(); } } } \ No newline at end of file diff --git a/LifeSourcesLight/LifeSourcesLightModSystem.cs b/LifeSourcesLight/LifeSourcesLightModSystem.cs index 44bd29f..cf9ee4b 100644 --- a/LifeSourcesLight/LifeSourcesLightModSystem.cs +++ b/LifeSourcesLight/LifeSourcesLightModSystem.cs @@ -6,20 +6,35 @@ namespace LifeSourcesLight { public class LifeSourcesLightModSystem : ModSystem { - private LifeSourcesLightConfig _configInstance; - - public LifeSourcesLightModSystem() : base() - { - _configInstance = ModContent.GetInstance(); + internal static bool _enableLightHeartCrystal = true; + public static bool EnableLightHeartCrystal { + get { return _enableLightHeartCrystal; } } + internal static bool _enableLightLifeFruit = true; + public static bool EnableLightLifeFruit { + get { return _enableLightLifeFruit; } + } + + // We use the booleans above later in an if-check, and to my knowledge, + // that if-check runs every tick or every frame. + // It's more efficient than calling ModContent.GetInstance() every tick + // (as far as I'm aware) public void ApplySettings() { - LifeSourcesLight._enableHeartCrystalLight = _configInstance.EnableHeartCrystalLight; - LifeSourcesLight._enableLifeFruitLight = _configInstance.EnableLifeFruitLight; + LifeSourcesLightConfig configInstance = ModContent.GetInstance(); - Main.tileLighted[TileID.Heart] = LifeSourcesLight._enableHeartCrystalLight; - Main.tileLighted[TileID.LifeFruit] = LifeSourcesLight._enableLifeFruitLight; + _enableLightHeartCrystal = configInstance.EnableHeartCrystalLight; + _enableLightLifeFruit = configInstance.EnableLifeFruitLight; + + UpdateTileLighted(); + } + + // Modified Main.tileLighted for the heart crystal & life fruit + // Necessary in order to enable lighting calculations for both + public static void UpdateTileLighted() { + Main.tileLighted[TileID.Heart] = EnableLightHeartCrystal; + Main.tileLighted[TileID.LifeFruit] = EnableLightLifeFruit; } } } diff --git a/LifeSourcesLight/LightOverrideHeartCrystal.cs b/LifeSourcesLight/LightOverrideHeartCrystal.cs index 3a420c7..4bd2799 100644 --- a/LifeSourcesLight/LightOverrideHeartCrystal.cs +++ b/LifeSourcesLight/LightOverrideHeartCrystal.cs @@ -10,7 +10,7 @@ namespace LifeSourcesLight public override void ModifyLight(int i, int j, int type, ref float r, ref float g, ref float b) { - if (type == TileID.Heart && LifeSourcesLight.EnableHeartCrystalLight) + if (type == TileID.Heart && LifeSourcesLightModSystem.EnableLightHeartCrystal) { r = (255f / 255f) * LifeCrystalBrightCoefficient; g = (38f / 255f) * LifeCrystalBrightCoefficient; diff --git a/LifeSourcesLight/LightOverrideLifeFruit.cs b/LifeSourcesLight/LightOverrideLifeFruit.cs index c706c3a..e85f757 100644 --- a/LifeSourcesLight/LightOverrideLifeFruit.cs +++ b/LifeSourcesLight/LightOverrideLifeFruit.cs @@ -10,7 +10,7 @@ namespace LifeSourcesLight public override void ModifyLight(int i, int j, int type, ref float r, ref float g, ref float b) { - if (type == TileID.LifeFruit && LifeSourcesLight.EnableLifeFruitLight) + if (type == TileID.LifeFruit && LifeSourcesLightModSystem.EnableLightLifeFruit) { r = (221f / 255f) * LifeFruitBrightCoefficient; g = (181f / 255f) * LifeFruitBrightCoefficient;