package com.lyndir.omicron.api; import com.google.common.collect.ImmutableSet; public interface IWeaponModule extends IModule { @Override default PublicModuleType<? extends IWeaponModule> getType() { return PublicModuleType.WEAPON; } /** * @return The amount of damaging power this weapon provides in a single shot. */ int getFirePower(); /** * @return The amount of extra damaging power this weapon is able to contribute. */ int getVariance(); /** * @return The distance to the farthest tile from this unit's current location this weapon is able to strike. */ int getRange(); /** * @return The amount of times in a single turn this weapon is able to take a shot. */ int getRepeat(); /** * @return The total amount of ammunition this weapon is able to be loaded with. */ int getAmmunitionLoad(); /** * @return The type of levels this weapon is able to strike at. */ ImmutableSet<LevelType> getSupportedLayers(); /** * @return The amount of times this weapon has fired in the current turn. */ int getRepeated(); /** * @return The amount of remaining ammunition available to the weapon. */ int getAmmunition(); @Override IWeaponModuleController getController(); }