001package com.fs.starfarer.api.loading; 002 003import java.util.EnumSet; 004import java.util.List; 005import java.util.Set; 006 007import java.awt.Color; 008 009import org.lwjgl.util.vector.Vector2f; 010 011import com.fs.starfarer.api.characters.MutableCharacterStatsAPI; 012import com.fs.starfarer.api.combat.DamageType; 013import com.fs.starfarer.api.combat.MutableShipStatsAPI; 014import com.fs.starfarer.api.combat.WeaponAPI; 015import com.fs.starfarer.api.combat.WeaponAPI.DerivedWeaponStatsAPI; 016import com.fs.starfarer.api.combat.WeaponAPI.WeaponSize; 017import com.fs.starfarer.api.combat.WeaponAPI.WeaponType; 018 019public interface WeaponSpecAPI extends WithSourceMod { 020 float getOrdnancePointCost(MutableCharacterStatsAPI stats); 021 EnumSet<WeaponAPI.AIHints> getAIHints(); 022 023 WeaponType getType(); 024 float getAmmoPerSecond(); 025 026 int getTier(); 027 float getBaseValue(); 028 boolean usesAmmo(); 029 int getMaxAmmo(); 030 String getWeaponId(); 031 WeaponSize getSize(); 032 String getWeaponName(); 033 034 int getBurstSize(); 035 Set<String> getTags(); 036 void addTag(String tag); 037 boolean hasTag(String tag); 038 float getRarity(); 039 void setRarity(float rarity); 040 float getOrdnancePointCost(MutableCharacterStatsAPI stats, MutableShipStatsAPI shipStats); 041 DerivedWeaponStatsAPI getDerivedStats(); 042 043 List<Vector2f> getHardpointFireOffsets(); 044 List<Float> getHardpointAngleOffsets(); 045 List<Vector2f> getTurretFireOffsets(); 046 List<Float> getTurretAngleOffsets(); 047 List<Vector2f> getHiddenFireOffsets(); 048 List<Float> getHiddenAngleOffsets(); 049 050 String getHardpointSpriteName(); 051 String getTurretSpriteName(); 052 String getHardpointUnderSpriteName(); 053 String getTurretUnderSpriteName(); 054 String getManufacturer(); 055 void setManufacturer(String manufacturer); 056 String getAutofitCategory(); 057 List<String> getAutofitCategoriesInPriorityOrder(); 058 String getWeaponGroupTag(); 059 void setWeaponGroupTag(String weaponGroupTag); 060 boolean isBeam(); 061 String getPrimaryRoleStr(); 062 void setPrimaryRoleStr(String primaryRoleStr); 063 String getSpeedStr(); 064 void setSpeedStr(String speedStr); 065 String getTrackingStr(); 066 void setTrackingStr(String trackingStr); 067 String getTurnRateStr(); 068 void setTurnRateStr(String turnRateStr); 069 String getAccuracyStr(); 070 void setAccuracyStr(String accuracyStr); 071 String getCustomPrimary(); 072 void setCustomPrimary(String customPrimary); 073 String getCustomPrimaryHL(); 074 void setCustomPrimaryHL(String customPrimaryHL); 075 String getCustomAncillary(); 076 void setCustomAncillary(String customAncillary); 077 String getCustomAncillaryHL(); 078 void setCustomAncillaryHL(String customAncillaryHL); 079 boolean isNoDPSInTooltip(); 080 void setNoDPSInTooltip(boolean noDPSInTooltip); 081 Color getGlowColor(); 082 boolean isInterruptibleBurst(); 083 boolean isNoImpactSounds(); 084 void setNoImpactSounds(boolean noImpactSounds); 085 DamageType getDamageType(); 086 087 boolean isRenderAboveAllWeapons(); 088 void setRenderAboveAllWeapons(boolean renderAboveAllWeapons); 089 boolean isNoShieldImpactSounds(); 090 void setNoShieldImpactSounds(boolean noShieldImpactSounds); 091 boolean isNoNonShieldImpactSounds(); 092 void setNoNonShieldImpactSounds(boolean noNonShieldImpactSounds); 093 094 float getMinSpread(); 095 float getMaxSpread(); 096 float getSpreadDecayRate(); 097 float getSpreadBuildup(); 098 void setMinSpread(float minSpread); 099 void setMaxSpread(float maxSpread); 100 void setSpreadDecayRate(float spreadDecayRate); 101 void setSpreadBuildup(float spreadBuildup); 102 103 /** 104 * For beam weapons only. 105 * @return 106 */ 107 float getBurstDuration(); 108 float getAutofireAccBonus(); 109 void setAutofireAccBonus(float autofireAccBonus); 110 Object getProjectileSpec(); 111 float getBeamChargeupTime(); 112 float getBeamChargedownTime(); 113 boolean isUnaffectedByProjectileSpeedBonuses(); 114 void setUnaffectedByProjectileSpeedBonuses(boolean unaffectedByProjectileSpeedBonuses); 115 float getChargeTime(); 116 WeaponType getMountType(); 117 void setMountType(WeaponType mountType); 118 float getExtraArcForAI(); 119 void setExtraArcForAI(float extraArcForAI); 120 void setWeaponName(String weaponName); 121 float getMaxRange(); 122 void setMaxRange(float maxRange); 123 void setOrdnancePointCost(float armamentCapacity); 124 boolean isShowDamageWhenDecorative(); 125 boolean isBurstBeam(); 126 boolean isStopPreviousFireSound(); 127 void setStopPreviousFireSound(boolean stopPreviousFireSound); 128 boolean isPlayFullFireSoundOne(); 129 void setPlayFullFireSoundOne(boolean playFullFireSoundOne); 130 void setBeamSpeed(float beamSpeed); 131 void setMaxAmmo(int maxAmmo); 132 void setAmmoPerSecond(float ammoPerSecond); 133 float getReloadSize(); 134 void setReloadSize(float reloadSize); 135 void setProjectileSpeed(float projectileSpeed); 136 float getTurnRate(); 137 void setTurnRate(float turnRate); 138 boolean isRestrictToSpecifiedMountType(); 139 void setRestrictToSpecifiedMountType(boolean restrictToSpecifiedMountType); 140 float getFadePreviousFireSound(); 141 void setFadePreviousFireSound(float fadePreviousFireSound); 142 void setDamageType(DamageType damageType); 143}