001package com.fs.starfarer.api.combat;
002
003import org.lwjgl.util.vector.Vector2f;
004
005public interface ViewportAPI {
006        boolean isNearViewport(Vector2f loc, float nearDistance);
007        Vector2f getCenter();
008        
009        /**
010         * @return x coordinate of the lower left corner, in world units.
011         */
012        float getLLX();
013        /**
014         * @return y coordinate of the lower left corner, in world units.
015         */
016        float getLLY();
017        /**
018         * @return Visible area's width, in world units.
019         */
020        float getVisibleWidth();
021        /**
022         * @return Visible area's height, in world units.
023         */
024        float getVisibleHeight();
025        float getWorldXtoScreenX();
026        float getWorldYtoScreenY();
027        
028        /**
029         * @return Current level zoom multiplier.
030         */
031        float getViewMult();
032        
033        float getAlphaMult();
034        float convertScreenXToWorldX(float x);
035        float convertScreenYToWorldY(float y);
036        float convertWorldXtoScreenX(float x);
037        float convertWorldYtoScreenY(float y);
038        float convertWorldWidthToScreenWidth(float w);
039        float convertWorldHeightToScreenHeight(float h);
040        float convertScreenWidthToWorldWidth(float w);
041        float convertScreenHeightToWorldHeight(float h);
042        
043        void set(float llx, float lly, float visibleWidth, float visibleHeight);
044        void setViewMult(float zoom);
045        
046        boolean isExternalControl();
047        
048        /**
049         * Tells the game not to set the viewport parameters every frame. Allows a mod to override viewport behavior.
050         * @return
051         */
052        void setExternalControl(boolean externalControl);
053        void setCenter(Vector2f c);
054        void setAlphaMult(float alphaMult);
055        boolean isEverythingNearViewport();
056        void setEverythingNearViewport(boolean everythingNearViewport);
057}