2018-12-25 04:00:58 +08:00
|
|
|
|
using StardewValley;
|
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Revitalize.Framework.Illuminate;
|
|
|
|
|
using System.IO;
|
2018-12-25 04:36:03 +08:00
|
|
|
|
using Microsoft.Xna.Framework;
|
2018-12-25 04:00:58 +08:00
|
|
|
|
|
|
|
|
|
namespace Revitalize.Framework.Environment
|
|
|
|
|
{
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Deals with making night time darker in Stardew.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public class DarkerNight
|
|
|
|
|
{
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Darkness intensity.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public static float IncrediblyDark = 0.9f;
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Darkness intensity.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public static float VeryDark = 0.75f;
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Darkness intensity.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public static float SomewhatDark = 0.50f;
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// The config file.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public static DarkerNightConfig Config;
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// The calculated night color.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:36:03 +08:00
|
|
|
|
private static Color CalculatedColor;
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Initializes the config for DarkerNight.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:00:58 +08:00
|
|
|
|
public static void InitializeConfig()
|
|
|
|
|
{
|
|
|
|
|
if (File.Exists(Path.Combine(Revitalize.ModCore.ModHelper.DirectoryPath, "Configs", "DarkerNightConfig.json")))
|
|
|
|
|
{
|
|
|
|
|
Config = Revitalize.ModCore.ModHelper.Data.ReadJsonFile<DarkerNightConfig>(Path.Combine("Configs", "DarkerNightConfig.json"));
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
Config = new DarkerNightConfig();
|
|
|
|
|
Revitalize.ModCore.ModHelper.Data.WriteJsonFile<DarkerNightConfig>(Path.Combine("Configs", "DarkerNightConfig.json"),Config);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Sets the color of darkness at night.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:36:03 +08:00
|
|
|
|
public static void SetDarkerColor()
|
|
|
|
|
{
|
2018-12-25 05:00:33 +08:00
|
|
|
|
if (Config.Enabled == false) return;
|
2018-12-25 07:07:51 +08:00
|
|
|
|
if (Game1.player == null) return;
|
|
|
|
|
if (Game1.player.currentLocation == null) return;
|
2018-12-25 04:36:03 +08:00
|
|
|
|
if (Game1.player.currentLocation.IsOutdoors && Game1.timeOfDay >= Game1.getStartingToGetDarkTime())
|
|
|
|
|
{
|
|
|
|
|
Game1.outdoorLight = CalculatedColor;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2018-12-25 05:00:33 +08:00
|
|
|
|
/// <summary>
|
|
|
|
|
/// Calculates how dark it should be a night.
|
|
|
|
|
/// </summary>
|
2018-12-25 04:36:03 +08:00
|
|
|
|
public static void CalculateDarkerNightColor()
|
2018-12-25 04:00:58 +08:00
|
|
|
|
{
|
2018-12-25 05:00:33 +08:00
|
|
|
|
if (Config.Enabled == false) return;
|
2018-12-25 04:00:58 +08:00
|
|
|
|
if (Game1.player == null) return;
|
2018-12-25 07:07:51 +08:00
|
|
|
|
if (Game1.player.currentLocation == null) return;
|
2018-12-25 04:36:03 +08:00
|
|
|
|
//Calculate original lighting.
|
|
|
|
|
if (Game1.timeOfDay >= Game1.getTrulyDarkTime())
|
|
|
|
|
{
|
|
|
|
|
float num = Math.Min(0.93f, (float)(0.75 + ((double)((int)((double)(Game1.timeOfDay - Game1.timeOfDay % 100) + (double)(Game1.timeOfDay % 100 / 10) * 16.6599998474121) - Game1.getTrulyDarkTime()) + (double)Game1.gameTimeInterval / 7000.0 * 16.6000003814697) * 0.000624999986030161));
|
|
|
|
|
Game1.outdoorLight = (Game1.isRaining ? Game1.ambientLight : Game1.eveningColor) * num;
|
|
|
|
|
}
|
|
|
|
|
else if (Game1.timeOfDay >= Game1.getStartingToGetDarkTime())
|
|
|
|
|
{
|
|
|
|
|
float num = Math.Min(0.93f, (float)(0.300000011920929 + ((double)((int)((double)(Game1.timeOfDay - Game1.timeOfDay % 100) + (double)(Game1.timeOfDay % 100 / 10) * 16.6599998474121) - Game1.getStartingToGetDarkTime()) + (double)Game1.gameTimeInterval / 7000.0 * 16.6000003814697) * 0.00224999990314245));
|
|
|
|
|
Game1.outdoorLight = (Game1.isRaining ? Game1.ambientLight : Game1.eveningColor) * num;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Revitalize.ModCore.log("OUT: " + Game1.outdoorLight);
|
|
|
|
|
|
|
|
|
|
int red = Game1.outdoorLight.R;
|
|
|
|
|
|
|
|
|
|
if (Game1.player.currentLocation.IsOutdoors && Game1.timeOfDay>= Game1.getStartingToGetDarkTime())
|
2018-12-25 04:00:58 +08:00
|
|
|
|
{
|
|
|
|
|
//Game1.ambientLight = Game1.ambientLight.GreyScaleAverage();
|
2018-12-25 04:36:03 +08:00
|
|
|
|
CalculatedColor = Game1.ambientLight* ( (red+30) / 255f) * Config.DarknessIntensity;
|
2018-12-25 04:00:58 +08:00
|
|
|
|
|
2018-12-25 04:36:03 +08:00
|
|
|
|
Revitalize.ModCore.log("OUT: " + CalculatedColor);
|
2018-12-25 04:00:58 +08:00
|
|
|
|
Revitalize.ModCore.log("Ambient"+Game1.ambientLight);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|