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