1package com.fs.starfarer.api.impl.campaign.terrain;
4import java.util.EnumSet;
6import org.lwjgl.opengl.GL11;
8import com.fs.starfarer.api.Global;
9import com.fs.starfarer.api.campaign.CampaignEngineLayers;
10import com.fs.starfarer.api.campaign.CampaignFleetAPI;
11import com.fs.starfarer.api.campaign.SectorEntityToken;
12import com.fs.starfarer.api.campaign.TerrainAIFlags;
13import com.fs.starfarer.api.combat.ViewportAPI;
14import com.fs.starfarer.api.impl.combat.BattleCreationPluginImpl.NebulaTextureProvider;
15import com.fs.starfarer.api.loading.Description.Type;
16import com.fs.starfarer.api.ui.Alignment;
17import com.fs.starfarer.api.ui.TooltipMakerAPI;
18import com.fs.starfarer.api.util.Misc;
40 if (
name ==
null ||
name.equals(
"Unknown"))
name =
"Nebula";
49 layers = EnumSet.of(CampaignEngineLayers.TERRAIN_2, CampaignEngineLayers.TERRAIN_8);
52 transient private EnumSet<CampaignEngineLayers> layers = EnumSet.of(CampaignEngineLayers.TERRAIN_2, CampaignEngineLayers.TERRAIN_8);
67 super.advance(amount);
71 private transient CampaignEngineLayers currLayer =
null;
72 public void render(CampaignEngineLayers layer, ViewportAPI viewport) {
74 super.render(layer, viewport);
128 float startRow,
float endRow,
float factor,
int samples,
165 super.renderSubArea(startColumn, endColumn, startRow, endRow, factor, samples, alphaMult);
198 public void preRender(CampaignEngineLayers layer,
float alphaMult) {
199 GL11.glEnable(GL11.GL_BLEND);
200 if (
entity.isInHyperspace()) {
206 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
208 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
212 if (layer == CampaignEngineLayers.TERRAIN_8) {
218 GL11.glColor4ub((
byte)color.getRed(),
219 (
byte)color.getGreen(),
220 (
byte)color.getBlue(),
221 (
byte)((
float)color.getAlpha() * alphaMult));
226 GL11.glEnable(GL11.GL_BLEND);
227 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
233 GL11.glColor4ub((
byte)color.getRed(),
234 (
byte)color.getGreen(),
235 (
byte)color.getBlue(),
236 (
byte)((
float)color.getAlpha() * alphaMult));
249 if (
entity instanceof CampaignFleetAPI) {
250 CampaignFleetAPI fleet = (CampaignFleetAPI)
entity;
251 fleet.getStats().addTemporaryModMult(0.1f,
getModId() +
"_1",
253 fleet.getStats().getDetectedRangeMod());
255 float penalty = Misc.getBurnMultForTerrain(fleet);
257 fleet.getStats().addTemporaryModMult(0.1f,
getModId() +
"_2",
258 "Inside nebula", penalty,
259 fleet.getStats().getFleetwideMaxBurnMod());
307 Color gray = Misc.getGrayColor();
308 Color highlight = Misc.getHighlightColor();
310 Color bad = Misc.getNegativeHighlightColor();
311 Color text = Misc.getTextColor();
313 tooltip.addTitle(
"Nebula");
317 tooltip.addSectionHeading(
"Travel", Alignment.MID, pad);
320 tooltip.addPara(
"Reduces the range at which fleets inside can be detected by %s.", nextPad,
325 tooltip.addPara(
"Reduces the travel speed of fleets inside by up to %s. Larger fleets are slowed down more.",
328 "" + (
int) ((Misc.BURN_PENALTY_MULT) * 100f) +
"%"
331 float penalty = Misc.getBurnMultForTerrain(
Global.
getSector().getPlayerFleet());
332 String penaltyStr = Misc.getRoundedValue(1f - penalty);
333 tooltip.addPara(
"Your fleet's speed is reduced by %s.", pad,
335 "" + (
int) Math.round((1f - penalty) * 100) +
"%"
348 tooltip.addSectionHeading(
"Combat", Alignment.MID, pad);
349 tooltip.addPara(
"Numerous patches of nebula present on the battlefield, but the medium is not dense enough to affect ships moving at combat speeds.", small);
378 return "nebula-like";
382 return flag == TerrainAIFlags.REDUCES_DETECTABILITY ||
383 flag == TerrainAIFlags.REDUCES_SPEED_LARGE||
384 flag == TerrainAIFlags.TILE_BASED
static SettingsAPI getSettings()
static SectorAPI getSector()
boolean hasAIFlag(Object flag)
void preRender(CampaignEngineLayers layer, float alphaMult)
void init(String terrainId, SectorEntityToken entity, Object param)
String getNameForTooltip()
void render(CampaignEngineLayers layer, ViewportAPI viewport)
static final float TILE_SIZE
boolean isTooltipExpandable()
EnumSet< CampaignEngineLayers > getActiveLayers()
void advance(float amount)
String getEffectCategory()
static final float VISIBLITY_MULT
float getTileContainsSize()
void preMapRender(float alphaMult)
float getTileRenderSize()
void createTooltip(TooltipMakerAPI tooltip, boolean expanded)
void applyEffect(SectorEntityToken entity, float days)
void renderSubArea(float startColumn, float endColumn, float startRow, float endRow, float factor, int samples, float alphaMult)
Description getDescription(String id, Type type)
String getSpriteName(String category, String id)
Color getColor(String id)