예제 #1
0
        private SkyTarget CurrentSkyTarget()
        {
            SkyTarget b         = this.map.weatherManager.curWeather.Worker.CurSkyTarget(this.map);
            SkyTarget a         = this.map.weatherManager.lastWeather.Worker.CurSkyTarget(this.map);
            SkyTarget skyTarget = SkyTarget.Lerp(a, b, this.map.weatherManager.TransitionLerpFactor);
            float     num       = this.map.gameConditionManager.AggregateSkyTargetLerpFactor();

            if (num > 9.9999997473787516E-05)
            {
                SkyTarget value = this.map.gameConditionManager.AggregateSkyTarget().Value;
                skyTarget = SkyTarget.LerpDarken(skyTarget, value, num);
            }
            List <WeatherEvent> liveEventsListForReading = this.map.weatherManager.eventHandler.LiveEventsListForReading;

            for (int i = 0; i < liveEventsListForReading.Count; i++)
            {
                if (liveEventsListForReading[i].CurrentlyAffectsSky)
                {
                    skyTarget = SkyTarget.Lerp(skyTarget, liveEventsListForReading[i].SkyTarget, liveEventsListForReading[i].SkyTargetLerpFactor);
                }
            }
            List <Thing> list = this.map.listerThings.ThingsInGroup(ThingRequestGroup.AffectsSky);

            for (int j = 0; j < list.Count; j++)
            {
                CompAffectsSky compAffectsSky = list[j].TryGetComp <CompAffectsSky>();
                if (compAffectsSky.LerpFactor > 0.0)
                {
                    skyTarget = ((!compAffectsSky.Props.lerpDarken) ? SkyTarget.Lerp(skyTarget, compAffectsSky.SkyTarget, compAffectsSky.LerpFactor) : SkyTarget.LerpDarken(skyTarget, compAffectsSky.SkyTarget, compAffectsSky.LerpFactor));
                }
            }
            return(skyTarget);
        }
예제 #2
0
        private SkyTarget CurrentSkyTarget()
        {
            SkyTarget b         = this.map.weatherManager.curWeather.Worker.CurSkyTarget(this.map);
            SkyTarget a         = this.map.weatherManager.lastWeather.Worker.CurSkyTarget(this.map);
            SkyTarget skyTarget = SkyTarget.Lerp(a, b, this.map.weatherManager.TransitionLerpFactor);

            this.map.gameConditionManager.GetAllGameConditionsAffectingMap(this.map, this.tempAllGameConditionsAffectingMap);
            for (int i = 0; i < this.tempAllGameConditionsAffectingMap.Count; i++)
            {
                SkyTarget?skyTarget2 = this.tempAllGameConditionsAffectingMap[i].SkyTarget(this.map);
                if (skyTarget2.HasValue)
                {
                    skyTarget = SkyTarget.LerpDarken(skyTarget, skyTarget2.Value, this.tempAllGameConditionsAffectingMap[i].SkyTargetLerpFactor(this.map));
                }
            }
            this.tempAllGameConditionsAffectingMap.Clear();
            List <WeatherEvent> liveEventsListForReading = this.map.weatherManager.eventHandler.LiveEventsListForReading;

            for (int j = 0; j < liveEventsListForReading.Count; j++)
            {
                if (liveEventsListForReading[j].CurrentlyAffectsSky)
                {
                    skyTarget = SkyTarget.Lerp(skyTarget, liveEventsListForReading[j].SkyTarget, liveEventsListForReading[j].SkyTargetLerpFactor);
                }
            }
            List <Thing> list = this.map.listerThings.ThingsInGroup(ThingRequestGroup.AffectsSky);

            for (int k = 0; k < list.Count; k++)
            {
                CompAffectsSky compAffectsSky = list[k].TryGetComp <CompAffectsSky>();
                if (compAffectsSky.LerpFactor > 0f)
                {
                    if (compAffectsSky.Props.lerpDarken)
                    {
                        skyTarget = SkyTarget.LerpDarken(skyTarget, compAffectsSky.SkyTarget, compAffectsSky.LerpFactor);
                    }
                    else
                    {
                        skyTarget = SkyTarget.Lerp(skyTarget, compAffectsSky.SkyTarget, compAffectsSky.LerpFactor);
                    }
                }
            }
            return(skyTarget);
        }