001package com.fs.starfarer.api.loading;
002
003import java.awt.Color;
004
005import org.json.JSONObject;
006
007import com.fs.starfarer.api.combat.CollisionClass;
008import com.fs.starfarer.api.combat.DamageAPI;
009import com.fs.starfarer.api.combat.MutableShipStatsAPI;
010import com.fs.starfarer.api.combat.OnFireEffectPlugin;
011import com.fs.starfarer.api.combat.OnHitEffectPlugin;
012import com.fs.starfarer.api.combat.WeaponAPI;
013
014public interface ProjectileSpecAPI {
015        String getOnHitClassName();
016        void setOnHitClassName(String effectClassName);
017        OnHitEffectPlugin getOnHitEffect();
018        String getId();
019        float getGlowRadius();
020        void setGlowRadius(float glowRadius);
021        Color getGlowColor();
022        void setGlowColor(Color glowColor);
023        float getHitGlowRadius();
024        void setHitGlowRadius(float hitGlowSize);
025        String getFringeTex();
026        void setFringeTex(String fringeTex);
027        String getCoreTex();
028        void setCoreTex(String coreTex);
029        Color getFringeColor();
030        void setFringeColor(Color fringeColor);
031        Color getCoreColor();
032        void setCoreColor(Color coreColor);
033        boolean isDarkCore();
034        void setDarkCore(boolean darkCore);
035        String getBulletSpriteName();
036        void setBulletSpriteName(String bulletSpriteName);
037        float getPixelsPerTexel();
038        void setPixelsPerTexel(float pixelsPerTexel);
039        float getTextureScrollSpeed();
040        void setTextureScrollSpeed(float textureScrollSpeed);
041        float getLength();
042        void setLength(float length);
043        float getMaxRange();
044        void setMaxRange(float maxRange);
045        
046        /**
047         * Can pass in shipStats == null to get the base value.
048         * @param shipStats
049         * @param weapon
050         * @return
051         */
052        float getMoveSpeed(MutableShipStatsAPI shipStats, WeaponAPI weapon);
053        void setMoveSpeed(float moveSpeed);
054        float getFadeTime();
055        void setFadeTime(float fadeTime);
056        float getImpactMass();
057        void setImpactStrength(float impactMass);
058        CollisionClass getCollisionClass();
059        void setCollisionClass(CollisionClass collisionClass);
060        CollisionClass getCollisionClassIfByFighter();
061        void setCollisionClassIfByFighter(CollisionClass collisionClassIfByFighter);
062        DamageAPI getDamage();
063        float getWidth();
064        void setWidth(float width);
065        ProjectileSpawnType getSpawnType();
066        void setSpawnType(ProjectileSpawnType style);
067        float getMaxHealth();
068        void setMaxHealth(float maxHealth);
069        boolean isPassThroughMissiles();
070        void setPassThroughMissiles(boolean passThroughMissiles);
071        JSONObject getBehaviorJSON();
072        int getDarkCoreIter();
073        void setDarkCoreIter(int darkCoreIter);
074        int getDarkFringeIter();
075        void setDarkFringeIter(int darkFringeIter);
076        float getCoreWidthMult();
077        void setCoreWidthMult(float coreWidthMult);
078        void setOnFireClassName(String onFireClassName);
079        String getOnFireClassName();
080        OnFireEffectPlugin getOnFireEffect();
081        void setNoNonShieldImpactSounds(boolean noNonShieldImpactSounds);
082        void setNoImpactSounds(boolean noImpactSounds);
083        boolean isNoShieldImpactSounds();
084        void setNoShieldImpactSounds(boolean noShieldImpactSounds);
085        boolean isNoNonShieldImpactSounds();
086        boolean isNoImpactSounds();
087        boolean isPassThroughFighters();
088        void setPassThroughFighters(boolean passThroughFighters);
089        boolean isPassThroughFightersOnlyWhenDestroyed();
090        void setPassThroughFightersOnlyWhenDestroyed(boolean passThroughFightersOnlyWhenDestroyed);
091        boolean isApplyOnHitEffectWhenPassThrough();
092        void setApplyOnHitEffectWhenPassThrough(boolean applyOnHitEffectWhenPassThrough);
093        ShotBehaviorSpecAPI getBehaviorSpec();
094
095}