001package com.fs.starfarer.api.campaign; 002 003import java.util.EnumSet; 004 005import java.awt.Color; 006 007import org.lwjgl.util.vector.Vector2f; 008 009import com.fs.starfarer.api.combat.ViewportAPI; 010import com.fs.starfarer.api.loading.TerrainSpecAPI; 011import com.fs.starfarer.api.ui.TooltipMakerAPI; 012 013public interface CampaignTerrainPlugin { 014 void init(String terrainId, SectorEntityToken entity, Object param); 015 016 String getTerrainId(); 017 void setTerrainId(String id); 018 019 /** 020 * How far away from the viewport the center of this entity can be before it stops being rendered. 021 * Should at least be the radius of the entity; sometimes more may be necessary depending on the 022 * visual effect desired. 023 * @return 024 */ 025 float getRenderRange(); 026 027 028 /** 029 * Set of layers can not change. 030 * @return 031 */ 032 EnumSet<CampaignEngineLayers> getActiveLayers(); 033 void render(CampaignEngineLayers layer, ViewportAPI viewport); 034 035 void advance(float amount); 036 037 /** 038 * First pass. 039 * @param factor conversion factor from world coordinates to map screen coordinates, including current zoom level. 040 * @param alphaMult 041 */ 042 void renderOnMap(float factor, float alphaMult); 043 044 /** 045 * Second pass. 046 * @param factor conversion factor from world coordinates to map screen coordinates, including current zoom level. 047 * @param alphaMult 048 */ 049 void renderOnMapAbove(float factor, float alphaMult); 050 051 052 boolean containsEntity(SectorEntityToken other); 053 boolean containsPoint(Vector2f point, float radius); 054 055 boolean hasMapIcon(); 056 057 boolean hasTooltip(); 058 void createTooltip(TooltipMakerAPI tooltip, boolean expanded); 059 boolean isTooltipExpandable(); 060 float getTooltipWidth(); 061 String getTerrainName(); 062 //String getTerrainNameLowerCase(); 063 Color getNameColor(); 064 065 boolean canPlayerHoldStationIn(); 066 067 TerrainSpecAPI getSpec(); 068 069 070 boolean hasAIFlag(Object flag); 071 boolean hasAIFlag(Object flag, CampaignFleetAPI fleet); 072 073 /** 074 * Mainly intended for AI use. 075 * @param locFrom 076 * @return 077 */ 078 float getMaxEffectRadius(Vector2f locFrom); 079 080 /** 081 * Mainly intended for AI use. 082 * @param locFrom 083 * @return 084 */ 085 float getMinEffectRadius(Vector2f locFrom); 086 087 /** 088 * Mainly intended for AI use. 089 * @param locFrom 090 * @return 091 */ 092 float getOptimalEffectRadius(Vector2f locFrom); 093 094 void setTerrainName(String name); 095 096 String getIconSpriteName(); 097 098 void renderOnRadar(Vector2f radarCenter, float factor, float alphaMult); 099 100 String getNameAOrAn(); 101 102 String getNameForTooltip(); 103 104 void setEntity(SectorEntityToken entity); 105} 106 107 108 109