Exemple #1
0
        private bool RollPrecipitationChance(bool reroll)
        {
            isRaining = false;

            if (reroll)
            {
                precipitationChanceRoll = DiceRoller.RollD100();
            }

            switch (precipitationFrequency)
            {
            case PrecipitationFrequency.Drought:
                if (precipitationChanceRoll <= 5)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Rare:
                if (precipitationChanceRoll <= 15)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Intermittent:
                if (precipitationChanceRoll <= 30)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Common:
                if (precipitationChanceRoll <= 60)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            case PrecipitationFrequency.Constant:
                if (precipitationChanceRoll <= 95)
                {
                    cloudCover = CloudCover.Overcast;
                    isRaining  = true;
                }
                break;

            default:
                break;
            }

            currentTemp = tempBaseline + tempVariation;

            return(isRaining);
        }
    private Vector3 GetRandomStartPosition(CloudCover cover)
    {
        var pos = new Vector3(
            Random.Range(cover.GetMinX(), cover.GetMaxX()),
            Random.Range(heightRange.x, heightRange.y), 0);

        return(pos);
    }
Exemple #3
0
 public Weather(DateTime date, eWindSpeed windspeed, WindDirection direction, CloudCover cover,Precipitation precip, HourlyWeather[] temperatures,double temperatureLow, double temperatureHigh)
 {
     this.Date = date;
     this.WindSpeed = windspeed;
     this.Direction = direction;
     this.Cover = cover;
     this.Precip = precip;
     this.Temperatures = temperatures;
     this.TemperatureLow = temperatureLow;
     this.TemperatureHigh = temperatureHigh;
 }
Exemple #4
0
 public Weather(DateTime date, eWindSpeed windspeed, WindDirection direction, CloudCover cover, Precipitation precip, HourlyWeather[] temperatures, double temperatureLow, double temperatureHigh)
 {
     this.Date            = date;
     this.WindSpeed       = windspeed;
     this.Direction       = direction;
     this.Cover           = cover;
     this.Precip          = precip;
     this.Temperatures    = temperatures;
     this.TemperatureLow  = temperatureLow;
     this.TemperatureHigh = temperatureHigh;
 }
    // Use this for initialization
    public LowCloudTracker(CloudCover cover, GameObject[] cloudPrefab)
    {
        this.cloudPrefab = cloudPrefab;
        heightRange      = new Vector2(cover.GetMinY(), cover.GetMaxY());

        for (int i = 0; i < cloudPrefab.Length; ++i)
        {
            var startPos = GetRandomStartPosition(cover);
            Debug.Log(startPos);
            cloudPrefab[i].transform.position = GetRandomStartPosition(cover);
        }
    }
        private StabilityClassEnum[] getStabilityClassNight(CloudCover cloudCover)
        {
            StabilityClassEnum[] high = { StabilityClassEnum.E, StabilityClassEnum.E, StabilityClassEnum.D, StabilityClassEnum.D, StabilityClassEnum.D };
            StabilityClassEnum[] low  = { StabilityClassEnum.F, StabilityClassEnum.F, StabilityClassEnum.E, StabilityClassEnum.D, StabilityClassEnum.D };


            switch (cloudCover)
            {
            case CloudCover.LOW: return(low);

            case CloudCover.HIGH: return(high);
            }
            return(null);
        }
Exemple #7
0
        public Weather()
        {
            climate   = Climate.Temperate;
            elevation = Elevation.SeaLevel;
            season    = Season.Spring;
            precipitationIntensity = PrecipitationIntensity.Heavy;
            precipitationFrequency = PrecipitationFrequency.Intermittent;
            precipitationForm      = PrecipitationForm.RainHeavy;
            cloudCover             = CloudCover.CloudsMedium;
            windStrength           = WindStrength.Light;
            windCheckSize          = CharacterSize.None;
            windBlownAwaySize      = CharacterSize.None;
            severeWeatherEvent     = SevereWeatherEvent.None;

            inDesert      = false;
            isDay         = true;
            nightTempDrop = 0;

            RecalculateAll(true);
        }
Exemple #8
0
 public void SetData(int tempLo, int tempHi, int presLo, int presHi,
                     int cloudLo, int cloudHi, int humidLo, int humidHi, int precipLo,
                     int precipHi, int energyLo, int energyHi, int windXLo, int windXHi,
                     int windYLo, int windYHi)
 {
     Temperature.ToList()[0]   = tempLo;
     Temperature.ToList()[1]   = tempHi;
     Pressure.ToList()[0]      = presLo;
     Pressure.ToList()[1]      = presHi;
     CloudCover.ToList()[0]    = cloudLo;
     CloudCover.ToList()[1]    = cloudHi;
     Humidity.ToList()[0]      = humidLo;
     Humidity.ToList()[1]      = humidHi;
     Precipitation.ToList()[0] = precipLo;
     Precipitation.ToList()[1] = precipHi;
     Energy.ToList()[0]        = energyLo;
     Energy.ToList()[1]        = energyHi;
     WindSpeedX.ToList()[0]    = windXLo;
     WindSpeedX.ToList()[1]    = windXHi;
     WindSpeedY.ToList()[0]    = windYLo;
     WindSpeedY.ToList()[1]    = windYHi;
 }
Exemple #9
0
        private void SetCloudCover(bool reroll)
        {
            if (reroll)
            {
                cloudCoverRoll = DiceRoller.RollD100();
            }

            if (cloudCoverRoll <= 50)
            {
                cloudCover = CloudCover.None;
            }
            else if (cloudCoverRoll >= 51 && cloudCoverRoll <= 70)
            {
                cloudCover = CloudCover.CloudsLight;
            }
            else if (cloudCoverRoll >= 71 && cloudCoverRoll <= 85)
            {
                cloudCover = CloudCover.CloudsMedium;
            }
            else if (cloudCoverRoll >= 86 && cloudCoverRoll <= 100)
            {
                cloudCover = CloudCover.Overcast;
            }
        }
    public void Update(CloudCover cover, CloudSpriteSelector spriteSelector)
    {
        //is cloud out of screen range?
        int offset = 0;

        foreach (GameObject cloud in cloudPrefab)
        {
            if (cloud.transform.position.x < cover.GetMinX())
            {
                cloud.gameObject.GetComponent <SpriteRenderer>().sprite = spriteSelector.GetRandom();
                var newPos = new Vector3(
                    cover.GetMaxX(), Random.Range(heightRange.x, heightRange.y), 0);
                cloud.transform.position = newPos;
            }
            if (cloud.transform.position.x > cover.GetMaxX())
            {
                cloud.gameObject.GetComponent <SpriteRenderer>().sprite = spriteSelector.GetRandom();
                var newPos = new Vector3(
                    cover.GetMinX(), Random.Range(heightRange.x, heightRange.y), 0);
                cloud.transform.position = newPos;
            }
            offset++;
        }
    }
Exemple #11
0
    private void OnGUI()
    {
#if UNITY_EDITOR
        if (Application.isPlaying)
        {
            GUILayout.BeginArea(new Rect(240, 10, 300, m_showFoldout ? 300 : 30));
            GUILayout.BeginVertical((GUIStyle)("Box"));

            m_showFoldout = EditorGUILayout.Foldout(m_showFoldout, "Weather (" + m_stormIntensity.ToString("0.0") + ")");


            if (m_showFoldout)
            {
                GUILayout.BeginVertical((GUIStyle)("Box"));

                GUILayout.BeginVertical((GUIStyle)("Box"));

                m_randomUpdate = GUILayout.Toggle(m_randomUpdate, "Random Intensity");

                GUI.enabled = m_randomUpdate;
                GUILayout.Label("Lerp Values : " + m_lerpStart.ToString("0.00") + ", " + m_lerpEnd.ToString("0.00") + " (" + m_lerpProgress.ToString("0.00") + ")");
                GUI.enabled = !m_randomUpdate;

                GUILayout.EndVertical();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Storm Intensity", GUILayout.Width(120));

                float stormIntensity = GUILayout.HorizontalSlider(m_stormIntensity, 0.0f, 1.0f);

                if (stormIntensity != m_stormIntensity)
                {
                    SetStormIntensity(stormIntensity);
                }

                GUILayout.Label(m_stormIntensity.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.EndVertical();

                GUILayout.BeginVertical((GUIStyle)("Box"));

                GUILayout.BeginHorizontal();

                GUILayout.Label("Cloud Cover", GUILayout.Width(120));
                CloudCover = GUILayout.HorizontalSlider(CloudCover, 0.0f, 1.0f);
                GUILayout.Label(CloudCover.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Overlay Alpha", GUILayout.Width(120));
                float newAlpha = GUILayout.HorizontalSlider(m_overlayAlpha, 0.0f, 1.0f);
                if (newAlpha != m_overlayAlpha && m_overlayRenderer != null)
                {
                    SetOverlayAlpha(newAlpha);
                }

                GUILayout.Label(m_overlayAlpha.ToString("0.0"));

                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();

                GUILayout.Label("Particle Intensity", GUILayout.Width(120));
                float newParticleIntensity = GUILayout.HorizontalSlider(m_particleIntensity, 0.0f, 1.0f);
                if (newParticleIntensity != m_particleIntensity)
                {
                    SetParticleIntensity(newParticleIntensity);
                }

                GUILayout.Label(m_particleIntensity.ToString("0.0"));

                GUILayout.EndHorizontal();

                m_showParticlesFoldout = EditorGUILayout.Foldout(m_showParticlesFoldout, "Particle Settings");

                GUILayout.EndVertical();
                GUI.enabled = true;
            }

            GUILayout.EndVertical();

            GUILayout.EndArea();
        }
#endif
    }
Exemple #12
0
        public StabilityClassEnum getStabilityClass(double windSpeed, Boolean isNight, IncomeSolarRadiation solarRadiation, CloudCover cloudCover)
        {
            int stabilityClassIndex = -1;

            if (windSpeed < 2)
            {
                stabilityClassIndex = 0;
            }
            else if ((windSpeed >= 2) && (windSpeed < 3))
            {
                stabilityClassIndex = 1;
            }
            else if ((windSpeed >= 3) && (windSpeed < 5))
            {
                stabilityClassIndex = 2;
            }
            else if ((windSpeed >= 5) && (windSpeed < 6))
            {
                stabilityClassIndex = 3;
            }
            else if (windSpeed >= 6)
            {
                stabilityClassIndex = 4;
            }


            StabilityClassEnum[] sClasses = null;
            if (isNight)
            {
                sClasses = getStabilityClassNight(cloudCover);
            }
            else
            {
                sClasses = getStabilityClassDay(solarRadiation);
            }

            return(sClasses[stabilityClassIndex]);
        }
 // Use this for initialization
 void Start()
 {
     spriteSelector = new CloudSpriteSelector(cloudPrefab);
     cloudCover     = new CloudCover();
     lowTracker     = new LowCloudTracker(cloudCover, GetLowClouds(spriteSelector));
 }