Class Tower

All Implemented Interfaces:
Disposable, KryoSerializable, ScheduledUpdater.Updatable
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 implements Disposable, ScheduledUpdater.Updatable
  • 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 int MAX_LEVEL
      See Also:
    • MAX_UPGRADE_LEVEL

      public static final int 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 int bountyModifiersNearby
    • powerBonuses

      public PowerBonuses powerBonuses
    • damageGiven

      public float damageGiven
    • shotCount

      public int shotCount
    • angle

      public float angle
    • experience

      public float experience
    • currentLevelExperience

      public float currentLevelExperience
    • nextLevelExperience

      public float nextLevelExperience
    • level

      public int level
    • 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)
      Overrides:
      setRegistered in class Registrable
    • setUnregistered

      public void setUnregistered()
      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 boolean isOutOfOrder()
    • getTarget

      @Null public Enemy getTarget()
    • setTarget

      public void setTarget(Enemy target)
    • canNewAbilityBeInstalled

      public boolean canNewAbilityBeInstalled()
      Returns:
      true, если игрок может выбрать новый навых башне (есть свободные "очки" выбора навыка)
    • canAbilityBeInstalled

      public boolean canAbilityBeInstalled(int idx)
    • isAbilityInstalled

      public boolean isAbilityInstalled(int abilityIdx)
    • getLevelForExperience

      public static int getLevelForExperience(float exp)
    • addExperience

      public void addExperience(float exp)
    • setExperience

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

      public int 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 int getMaxUpgradeLevel()
    • getLevel

      public int getLevel()
    • setLevel

      public void setLevel(int level)
    • getPowerCombinedMultiplier

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

      public float getScheduledUpdateInterval()
    • scheduledUpdate

      public void scheduledUpdate(float deltaTime)
      Specified by:
      scheduledUpdate in interface ScheduledUpdater.Updatable
    • scheduledUpdatableSetId

      public final void scheduledUpdatableSetId(int id)
      Specified by:
      scheduledUpdatableSetId in interface ScheduledUpdater.Updatable
    • scheduledUpdatableGetId

      public final int scheduledUpdatableGetId()
      Specified by:
      scheduledUpdatableGetId in interface ScheduledUpdater.Updatable
    • update

      public void update(float deltaTime)
    • getSellPrice

      public int getSellPrice()
    • isSellFullRefundStillActive

      public boolean isSellFullRefundStillActive()
    • findTarget

      public Enemy findTarget()
    • findTarget

      public Enemy findTarget(ObjectFilter<Enemy> filter)
    • getUpgradeLevel

      public int getUpgradeLevel()
    • upgrade

      public void upgrade(int toLevel)
    • setUpgradeLevel

      public void setUpgradeLevel(int toLevel)
      Set tower's upgrade level directly, without validation / cache updates
      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()
      Description copied from interface: com.badlogic.gdx.utils.Disposable
      Releases all resources of this object.
      Specified by:
      dispose in interface Disposable
    • 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 int getStartingLevel()
    • 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()
    • rotateTo

      public void rotateTo(float x, float y, float deltaTime, float rotationSpeed)
    • rotateTo

      public void rotateTo(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)