001package com.fs.starfarer.api.campaign; 002 003import com.fs.starfarer.api.campaign.SectorEntityToken.VisibilityLevel; 004import com.fs.starfarer.api.combat.ViewportAPI; 005import com.fs.starfarer.api.ui.TooltipMakerAPI; 006 007public interface CustomCampaignEntityPlugin { 008 009 void init(SectorEntityToken entity, Object params); 010 011 /** 012 * @param amount in seconds. Use SectorAPI.getClock() to figure out how many campaign days that is. 013 */ 014 void advance(float amount); 015 016 017 /** 018 * Should only render for specified layer. Will be called once per each layer, per frame. 019 * Needs to respect viewport.getAlphaMult() - i.e. use that alpha value for rendering. 020 * 021 * Needs to render at the entity's location - there's no translation before this method call. 022 * 023 * If a sprite is specified, it will be rendered in the bottommost layer of the layers this entity renders 024 * for. This method will be called after the sprite has rendered. 025 * 026 * @param layer 027 * @param viewport 028 */ 029 void render(CampaignEngineLayers layer, ViewportAPI viewport); 030 031 032 /** 033 * How far away from the viewport the center of this entity can be before it stops being rendered. 034 * Should at least be the radius of the entity; sometimes more may be necessary depending on the 035 * visual effect desired. 036 * @return 037 */ 038 float getRenderRange(); 039 040 boolean hasCustomMapTooltip(); 041 float getMapTooltipWidth(); 042 boolean isMapTooltipExpandable(); 043 void createMapTooltip(TooltipMakerAPI tooltip, boolean expanded); 044 void appendToCampaignTooltip(TooltipMakerAPI tooltip, VisibilityLevel level); 045 default boolean isRenderWhenViewportAlphaMultIsZero() { 046 return false; 047 } 048 049} 050 051 052 053