示例#1
0
        public Weather(System.Random random)
        {
            Sol = 0;
            WeatherVariables vars = new WeatherVariables(random);

            DustIntensity = vars.Chaos / 100f;
            Coverage      = DustIntensity.FromFloat();
            Narrative     = WeatherNarrative.None;
        }
示例#2
0
        public static ParticleSystem.MinMaxCurve EmissionCurve(this DustCoverage coverage)
        {
            switch (coverage)
            {
            default:
            case DustCoverage.Light:
                return(lightCurve);

            case DustCoverage.Heavy:
                return(heavyCurve);

            case DustCoverage.Stormy:
                return(stormyCurve);
            }
        }
示例#3
0
        public static News News(this DustCoverage coverage)
        {
            switch (coverage)
            {
            default:
                return(NewsSource.WeatherClearSky);

            case DustCoverage.Light:
                return(NewsSource.WeatherLightDust);

            case DustCoverage.Heavy:
                return(NewsSource.WeatherHeavyDust);

            case DustCoverage.Stormy:
                return(NewsSource.WeatherDustStorm);
            }
        }
示例#4
0
        public static float SFXVolume(this DustCoverage coverage)
        {
            switch (coverage)
            {
            default:
                return(0f);

            case DustCoverage.Light:
                return(0f);

            case DustCoverage.Heavy:
                return(.4f);

            case DustCoverage.Stormy:
                return(1f);
            }
        }
示例#5
0
        public Weather(System.Random random, Weather previousDay)
        {
            Sol = previousDay.Sol + 1;
            WeatherVariables vars = new WeatherVariables(random);

            //0 means completely new number, 100 means same weather as yesterday
            int sameness = vars.PreviousSystemInertia + vars.Chaos;

            sameness = Math.Max(sameness, 0);
            sameness = Math.Min(sameness, 100);

            DustIntensity = Mathf.Lerp(vars.DustPercentageNumerator / 100f, previousDay.DustIntensity, sameness / 100f);
            Coverage      = DustIntensity.FromFloat();

            if (previousDay.DustIntensity <= .25f && DustIntensity > .75f)
            {
                Narrative = WeatherNarrative.SuddenStorm;
            }
            else if (previousDay.DustIntensity > .75f && DustIntensity < .25f)
            {
                Narrative = WeatherNarrative.SuddenClear;
            }
            else if (previousDay.Coverage == Coverage)
            {
                Narrative = WeatherNarrative.MoreOfSame;
            }
            else if (previousDay.DustIntensity < DustIntensity)
            {
                Narrative = WeatherNarrative.DarkerSkies;
            }
            else if (previousDay.DustIntensity > DustIntensity)
            {
                Narrative = WeatherNarrative.LighterSkies;
            }
            else
            {
                Narrative = WeatherNarrative.None;
            }
        }