Class Tower

All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable, com.esotericsoftware.kryo.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 com.badlogic.gdx.utils.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 com.badlogic.gdx.graphics.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
    • searchEnemiesHelper

      public static final com.badlogic.gdx.utils.Array<Enemy> searchEnemiesHelper
    • id

      public int id
    • type

      public TowerType type
    • aimStrategy

      public Tower.AimStrategy aimStrategy
    • moneySpentOn

      public CheatSafeInt moneySpentOn
    • bountyModifiersNearby

      public int bountyModifiersNearby
    • damageGiven

      public float damageGiven
    • shotCount

      public int shotCount
    • angle

      public float angle
    • experience

      public float experience
    • currentLevelExperience

      public float currentLevelExperience
    • nextLevelExperience

      public float nextLevelExperience
    • installedAbilities

      public boolean[] installedAbilities
    • rangeInPixels

      public float rangeInPixels
    • rangeInPixelsSqr

      public float rangeInPixelsSqr
    • minRangeInPixels

      public float minRangeInPixels
    • experienceGeneration

      public float experienceGeneration
    • experienceMultiplier

      public float experienceMultiplier
    • outOfOrder

      public boolean outOfOrder
    • attackDisabled

      public boolean attackDisabled
    • abilityAvailableParticleEffect

      public com.badlogic.gdx.graphics.g2d.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(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Output output)
      Specified by:
      write in interface com.esotericsoftware.kryo.KryoSerializable
      Overrides:
      write in class Building
    • read

      public void read(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input)
      Specified by:
      read in interface com.esotericsoftware.kryo.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
    • toJson

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

      public void loadFromJson(com.badlogic.gdx.utils.JsonValue value)
    • cloneBuilding

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

      public boolean isOutOfOrder()
    • setTile

      public void setTile(PlatformTile tile)
      Overrides:
      setTile in class Building
    • getTarget

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

      public int getMaxUpgradeLevel()
    • getLevel

      public int getLevel()
    • getPowerCombinedMultiplier

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

      public void registerNearbyModifier(Modifier.ModifierSidePair cfg)
    • unregisterNearbyModifier

      public void unregisterNearbyModifier(Modifier modifier)
    • 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()
    • traverseTilesInRange

      public final void traverseTilesInRange(ObjectFilter<Tile> cb)
      Get all of the tiles in tower's range (even if they touch the range slightly). Try not to change the game's state during iteration - removing the tower, upgrading it or giving it XP may change its range which may result in unexpected behavior
    • updateCache

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

      public int getStatCacheState()
    • getExpLevelStatBonusPercentage

      public static float getExpLevelStatBonusPercentage(int expLevel, 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
    • getStatBuffed

      public float getStatBuffed(TowerStatType towerStatType)
      Не кэшированный Вычисляет характеристику с учетом бонусов тайла
    • isStatAffectedByPower

      public boolean isStatAffectedByPower(TowerStatType towerStatType)
    • getCachedStatBuffed

      public float getCachedStatBuffed(TowerStatType towerStatType)
      Кэшированный Перегрузка для метода getCachedStatBuffed() Возвращает текущую характеристику с бонусами тайла из кэша
    • dispose

      public void dispose()
      Description copied from interface: com.badlogic.gdx.utils.Disposable
      Releases all resources of this object.
      Specified by:
      dispose in interface com.badlogic.gdx.utils.Disposable
    • applyDrawInterpolation

      public void applyDrawInterpolation(float interpolatedTime)
    • drawBatch

      public void drawBatch(com.badlogic.gdx.graphics.g2d.Batch batch, float deltaTime)
    • drawBatchAdditive

      public void drawBatchAdditive(com.badlogic.gdx.graphics.g2d.Batch batch, float deltaTime)
    • drawBase

      public void drawBase(com.badlogic.gdx.graphics.g2d.SpriteCache spriteCache, int x, int y, MapRenderingSystem.DrawMode drawMode)
      Overrides:
      drawBase in class Building
    • drawWeapon

      public void drawWeapon(com.badlogic.gdx.graphics.g2d.Batch batch, float x, float y, float size, float deltaTime)
    • drawGlitch

      public void drawGlitch(com.badlogic.gdx.graphics.g2d.Batch batch)
    • drawSelectedRange

      public void drawSelectedRange(com.badlogic.gdx.graphics.g2d.Batch batch, RangeCircle rangeCircle)
      Overrides:
      drawSelectedRange in class Building
    • drawHoveredRange

      public void drawHoveredRange(com.badlogic.gdx.graphics.g2d.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 com.badlogic.gdx.utils.Array<TextureRegionConfig> getWeaponTextures()
    • getUniqueStatDescription

      public String getUniqueStatDescription()
    • getStat

      public abstract float getStat(TowerStatType towerStatType)
    • 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(com.badlogic.gdx.scenes.scene2d.Group container, com.badlogic.gdx.utils.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)