Class Tower

All Implemented Interfaces:
KryoSerializable
Direct Known Subclasses:
AirTower, BasicTower, BlastTower, CannonTower, CrusherTower, FlamethrowerTower, FreezingTower, GaussTower, LaserTower, MinigunTower, MissileTower, MultishotTower, SniperTower, SplashTower, TeslaTower, VenomTower

public abstract class Tower extends Building
  • Field Details

    • ABILITY_INDEX_SPECIAL

      public static final int ABILITY_INDEX_SPECIAL
      See Also:
    • ABILITY_INDEX_ULTIMATE

      public static final int ABILITY_INDEX_ULTIMATE
      See Also:
    • ABILITY_INDEX_POWERFUL

      public static final int ABILITY_INDEX_POWERFUL
      See Also:
    • ABILITIES_COUNT

      public static final int ABILITIES_COUNT
      See Also:
    • DPS_STAT_SLOTS

      public static final int DPS_STAT_SLOTS
      See Also:
    • DPS_STAT_INTERVAL

      public static final float DPS_STAT_INTERVAL
      See Also:
    • MAX_LEVEL

      public static final short MAX_LEVEL
      See Also:
    • MAX_UPGRADE_LEVEL

      public static final byte MAX_UPGRADE_LEVEL
      See Also:
    • SHADOW_COLOR

      public static final Color SHADOW_COLOR
    • ABILITY_NAMES

      public static final String[] ABILITY_NAMES
    • LEVEL_EXPERIENCE

      public static final int[] LEVEL_EXPERIENCE
    • LEVEL_EXPERIENCE_MILESTONES

      public static final int[] LEVEL_EXPERIENCE_MILESTONES
    • id

      public int id
    • type

      public TowerType type
    • aimStrategy

      public Tower.AimStrategy aimStrategy
    • moneySpentOn

      public int moneySpentOn
    • bountyModifiersNearby

      public byte bountyModifiersNearby
    • powerBonuses

      public PowerBonuses powerBonuses
    • damageGiven

      public float damageGiven
    • shotCount

      public int shotCount
    • loopAbilityDamageBuffer

      public float loopAbilityDamageBuffer
    • affectedByLoopAbility

      @Null public LoopAbility affectedByLoopAbility
    • angle

      public float angle
    • experience

      public float experience
    • currentLevelExperience

      public float currentLevelExperience
    • nextLevelExperience

      public float nextLevelExperience
    • level

      public short level
      XP level of the tower, depends on its experience. Updated by calculateXpLevel() or setLevel()
    • installedAbilities

      public boolean[] installedAbilities
    • rangeInPixels

      public float rangeInPixels
    • minRangeInPixels

      public float minRangeInPixels
    • experienceGeneration

      public float experienceGeneration
    • experienceMultiplier

      public float experienceMultiplier
    • outOfOrder

      public MultiReasonBool outOfOrder
    • attackDisabled

      public boolean attackDisabled
    • abilityAvailableParticleEffect

      public ParticleEffectPool.PooledEffect abilityAvailableParticleEffect
    • dpsDamage

      public float[] dpsDamage
    • dpsTime

      public float[] dpsTime
    • mdps

      public float mdps
    • enemiesKilled

      public int enemiesKilled
    • bonusCoinsBrought

      public float bonusCoinsBrought
  • Method Details

    • write

      public void write(Kryo kryo, Output output)
      Specified by:
      write in interface KryoSerializable
      Overrides:
      write in class Building
    • read

      public void read(Kryo kryo, Input input)
      Specified by:
      read in interface KryoSerializable
      Overrides:
      read in class Building
    • setAimStrategy

      public void setAimStrategy(Tower.AimStrategy aimStrategy)
    • setRegistered

      public void setRegistered(GameSystemProvider S)
      Description copied from class: Registrable
      Mark this object as registered in the game state and give it a reference to the game state.
      Overrides:
      setRegistered in class Registrable
      Parameters:
      S - game state to link this object to, will be set to the S field.
    • setUnregistered

      public void setUnregistered()
      Description copied from class: Registrable
      Remove the reference to the game state and mark this object as not registered.
      Overrides:
      setUnregistered in class Registrable
    • getWalkCost

      public float getWalkCost()
      Specified by:
      getWalkCost in class Building
    • toJson

      public void toJson(Json json)
      Внутри writeObjectStart
      Overrides:
      toJson in class Building
    • loadFromJson

      public void loadFromJson(JsonValue value)
    • sameAs

      public boolean sameAs(Building otherBuilding)
      Overrides:
      sameAs in class Building
    • cloneBuilding

      public Tower cloneBuilding()
      Specified by:
      cloneBuilding in class Building
    • isOutOfOrder

      public final boolean isOutOfOrder()
    • getTarget

      @Null public Enemy getTarget()
    • setTarget

      public void setTarget(Enemy target)
    • canNewAbilityBeInstalled

      public boolean canNewAbilityBeInstalled()
      Returns:
      true if player can select any ability (there are "free points to spend on ability")
    • canAbilityBeInstalled

      public final boolean canAbilityBeInstalled(int idx)
      Parameters:
      idx - index of the ability (0..ABILITIES_COUNT-1)
      Returns:
      true if ability can be installed by the player. Returns false for the abilities that install automatically.
    • isAbilityInstalled

      public final boolean isAbilityInstalled(int abilityIdx)
    • getLevelForExperience

      public static int getLevelForExperience(float exp)
    • getLevelForExperienceFast

      public static int getLevelForExperienceFast(float exp)
    • addExperience

      public void addExperience(float exp)
    • getLevelExperienceMilestone

      public static float getLevelExperienceMilestone(int level)
    • setExperience

      public final void setExperience(float exp)
      Установка опыта напрямую
      Parameters:
      exp - кол-во опыта, которое будет установлено точно таким же
    • getMaxTowerLevel

      public short getMaxTowerLevel()
    • calculateXpLevel

      public void calculateXpLevel(boolean ignoreLevelLimits)
      Calculate level, nextLevelExperience and currentLevelExperience based on experience. Tower's level may increase after calling this method. TowerSystem.updateLevelExperience() calls this method once per frame and triggers events related to the tower's level change and is preferred over calling this method directly. Calling this method directly won't trigger any events and may be useful if you use some temporary towers and don't want it to cause side effects.
    • getMaxUpgradeLevel

      public byte getMaxUpgradeLevel()
    • getLevel

      public short getLevel()
    • setLevel

      public void setLevel(short level)
    • getPowerCombinedMultiplier

      public float getPowerCombinedMultiplier()
      Returns:
      getPowerMultiplier + бонус от уровней башни
    • update

      public void update(float deltaTime)
    • getSellPrice

      public int getSellPrice()
    • isSellFullRefundStillActive

      public boolean isSellFullRefundStillActive()
    • findTarget

      public Enemy findTarget()
    • findTargetFiltered

      public Enemy findTargetFiltered(@Null ObjectFilter<Enemy> filter)
    • getUpgradeLevel

      public byte getUpgradeLevel()
    • upgradeToLevel

      public void upgradeToLevel(byte toLevel)
    • setUpgradeLevel

      public void setUpgradeLevel(byte toLevel)
      Set tower's upgrade level directly, without validation / cache updates. Don't forget to call updateCache() if you choose to keep this upgrade level.
      Parameters:
      toLevel - upgrade level of the tower, silently clamped between 0 and MAX_UPGRADE_LEVEL
    • upgrade

      public void upgrade()
    • updateCache

      public void updateCache()
      Обновляет кэш текущих характеристик башни Так как характеристики обновляются, одновременно обновляется массив тайлов в радиусе поражения
      Specified by:
      updateCache in class Building
    • getExpLevelStatBonusPercentage

      public static float getExpLevelStatBonusPercentage(int expLevel, TowerType towerType, GameValueProvider gvp)
      Parameters:
      expLevel - for XP level
      gvp - provider of GameValues
      Returns:
      bonus percentage for every stat (except Special stats and Range) depending on tower's XP level. Besides default bonus, takes GameValueType.TOWERS_POWER_PER_LEVEL_(TILL/AFTER)_10 into account
    • isStatAffectedByPower

      public boolean isStatAffectedByPower(TowerStatType towerStatType)
    • getStat

      public final float getStat(TowerStatType towerStatType)
      Returns:
      cached stat of the tower, affected by every possible bonus / modifier / ability etc. Updates with updateCache(), returns 0 for stats the tower does not have
    • dispose

      public void dispose()
    • applyDrawInterpolation

      public void applyDrawInterpolation(float interpolatedTime)
    • drawBatch

      public void drawBatch(Batch batch, float deltaTime)
    • drawBatchAdditive

      public void drawBatchAdditive(Batch batch, float deltaTime)
    • drawBase

      public final void drawBase(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode)
      Overrides:
      drawBase in class Building
    • drawAbilitiesToCache

      public void drawAbilitiesToCache(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode)
    • drawWeapon

      public void drawWeapon(Batch batch, float x, float y, float size, float deltaTime)
    • drawGlitch

      public void drawGlitch(Batch batch)
    • drawSelectedRange

      public void drawSelectedRange(Batch batch, RangeCircle rangeCircle)
      Overrides:
      drawSelectedRange in class Building
    • drawHoveredRange

      public void drawHoveredRange(Batch batch, RangeCircle rangeCircle)
      Overrides:
      drawHoveredRange in class Building
    • placedOnMap

      public void placedOnMap()
      Overrides:
      placedOnMap in class Building
    • removedFromMap

      public void removedFromMap()
      Overrides:
      removedFromMap in class Building
    • getEnemyPriority

      public int getEnemyPriority(Enemy enemy)
      0 - lowest priority (with lowAimPriority) 10 - regular priority
    • getStartingLevel

      public static int getStartingLevel(TowerType towerType, GameValueProvider gvp)
    • getStartingPwr

      public static float getStartingPwr(TowerType towerType, GameValueProvider gvp)
    • getRange

      public float getRange()
    • getMinRange

      public float getMinRange()
    • getWeaponTextures

      public abstract Quad getWeaponTextures()
    • getUniqueStatDescription

      public String getUniqueStatDescription()
    • hasCustomButton

      public boolean hasCustomButton()
      Только если canAim = false
    • isCustomButtonNeedMapPoint

      public boolean isCustomButtonNeedMapPoint()
    • customButtonAction

      public void customButtonAction(int mapX, int mapY)
    • updateCustomButton

      public void updateCustomButton(ComplexButton complexButton, boolean isPointing)
    • fillTowerMenu

      public void fillTowerMenu(Group container, ObjectMap<String,Object> elements)
      Добавить / обновить элементы в меню башни Вызывается каждый кадр, когда видно меню башни elements сохраняется между вызовами метода, чтобы не создавать актеров заново. Если он пустой - значит, вызвали первый раз и надо создать Можно не обновлять ничего, если состояние устраивает (можно хранить любые данные в elements, например хэш состояния или предыдущие значения)
    • canAim

      public abstract boolean canAim()
    • shouldSearchForTarget

      public boolean shouldSearchForTarget()
    • canAttackEnemy

      public boolean canAttackEnemy(Enemy enemy)
    • canAttack

      public boolean canAttack()
    • rotateAtPoint

      public void rotateAtPoint(float x, float y, float deltaTime, float rotationSpeed)
    • rotateToAngle

      public void rotateToAngle(float needAngle, float deltaTime, float rotationSpeed)
    • onPreSell

      public void onPreSell()
    • onAbilitySet

      public void onAbilitySet(int abilityIdx, boolean isSet)
    • getAttackDelay

      public float getAttackDelay()
    • attack

      public void attack(int shotCount)