001package com.fs.starfarer.api.impl.campaign.procgen; 002 003import java.util.Set; 004 005import com.fs.starfarer.api.campaign.PlanetAPI; 006import com.fs.starfarer.api.impl.campaign.ids.Conditions; 007import com.fs.starfarer.api.impl.campaign.procgen.PlanetConditionGenerator.ConditionGenerator; 008import com.fs.starfarer.api.impl.campaign.procgen.StarSystemGenerator.GenContext; 009 010public class LightConditionGenerator implements ConditionGenerator { 011 012 public void addConditions(Set<String> conditionsSoFar, GenContext context, PlanetAPI planet) { 013 014 int orbitIndex = context.orbitIndex; 015 if (context.parent != null) orbitIndex = context.parentOrbitIndex; 016 017 float hab = context.starData.getHabZoneStart(); 018 019 // want low-light conditions in neutron star systems 020// if (context.starData.getId().equals(StarTypes.NEUTRON_STAR)) { 021// hab = 0; 022// } 023 024 float normalIndex = hab + 4; 025 float veryIndex = hab + 8; 026 float eitherIndex = hab + 5; 027 028 boolean matchVery = orbitIndex >= veryIndex; 029 boolean matchNormal = !matchVery && orbitIndex >= normalIndex; 030 boolean matchEither = orbitIndex == eitherIndex; 031 if (matchEither) { 032 matchNormal = StarSystemGenerator.random.nextFloat() < 0.5f; 033 matchVery = !matchNormal; 034 } 035 036 boolean hasNormal = conditionsSoFar.contains(Conditions.POOR_LIGHT); 037 boolean hasVery = conditionsSoFar.contains(Conditions.DARK); 038 039 040 // if there's a baked-in "darkness" condition, don't downgrade it to "poor light" 041 if (matchNormal && !hasVery && !hasNormal && 042 PlanetConditionGenerator.preconditionsMet(Conditions.POOR_LIGHT, conditionsSoFar)) { 043 conditionsSoFar.add(Conditions.POOR_LIGHT); 044 return; 045 } 046 047 // can, howeved, upgrade a "poor light" to a "darkness" provided preconditions are met 048 if (matchVery && !hasVery && 049 PlanetConditionGenerator.preconditionsMet(Conditions.DARK, conditionsSoFar)) { 050 conditionsSoFar.remove(Conditions.POOR_LIGHT); 051 conditionsSoFar.add(Conditions.DARK); 052 return; 053 } 054 } 055 056}