Kasper Karlgren c84494a697 new files
2025-01-21 13:54:40 +01:00

70 lines
2.1 KiB
C#

using UnityEngine;
using DistantLands.Cozy.Data;
using System.Collections.Generic;
using System.Collections;
namespace DistantLands.Cozy
{
[System.Serializable]
public class CozyForecastManagement
{
public ForecastProfile forecastProfile;
public enum EcosystemStyle { manual, forecast, dailyForecast, automatic }
[Tooltip("How should this ecosystem manage weather selection? " +
"Manual allows you to manually select the weather profile that this ecosystem will use and the weights will adjust accordingly," +
" Forecast allows for dynamically changing weather based on a predetermined forecast that runs entirely on it's own.")]
public EcosystemStyle weatherSelectionMode;
public List<WeatherPattern> currentForecast;
[System.Serializable]
public class WeatherPattern
{
public WeatherProfile profile;
public float weatherProfileDuration;
public float startTicks;
public float endTicks;
}
public float weatherTransitionTime = 15;
public float weatherTimer;
[Range(0, 1)]
public float weight;
public WeatherProfile currentWeather;
public WeatherProfile weatherChangeCheck;
[WeatherRelation]
public List<WeightedWeather> weightedWeatherProfiles;[System.Serializable]
public class WeightedWeather
{
[Range(0, 1)] public float weight; public WeatherProfile profile; public bool transitioning = true;
public IEnumerator Transition(float value, float time)
{
transitioning = true;
float t = 0;
float start = weight;
while (t < time)
{
float div = (t / time);
yield return new WaitForEndOfFrame();
weight = Mathf.Lerp(start, value, div);
t += Time.deltaTime;
}
weight = value;
transitioning = false;
}
}
}
}