001package com.fs.starfarer.api.loading;
002
003import java.util.List;
004
005import org.lwjgl.util.vector.Vector2f;
006
007import com.fs.starfarer.api.combat.CombatEntityAPI;
008import com.fs.starfarer.api.combat.ShipAPI;
009import com.fs.starfarer.api.combat.WeaponAPI;
010
011public interface WeaponSlotAPI {
012        boolean isHardpoint();
013        boolean isTurret();
014        boolean isHidden();
015        boolean isSystemSlot();
016        boolean isBuiltIn();
017        boolean isDecorative();
018        
019        String getId();
020        WeaponAPI.WeaponType getWeaponType();
021        WeaponAPI.WeaponSize getSlotSize();
022        float getArc();
023        void setArc(float arc);
024        
025        /**
026         * @return center of the arc, with the ship facing 0 degrees (to the right).
027         */
028        float getAngle();
029
030        /**
031         * Absolute coordinates of the weapon slot.
032         * @param ship
033         * @return
034         */
035        Vector2f computePosition(CombatEntityAPI ship);
036        boolean isStationModule();
037        
038        boolean weaponFits(WeaponSpecAPI spec);
039        
040        void setAngle(float angle);
041        Vector2f getLocation();
042        
043        float getRenderOrderMod();
044        void setRenderOrderMod(float renderOrderMod);
045        float computeMidArcAngle(ShipAPI ship);
046        List<Vector2f> getLaunchPointOffsets();
047        //WeaponSlotAPI clone();
048        boolean isWeaponSlot();
049        //void setSlotSize(WeaponSize slotSize);
050        //void setId(String id);
051        //void setNode(String nodeId, Vector2f position);
052        
053}