Package com.prineside.tdi2
Class Tower
java.lang.Object
com.prineside.tdi2.Registrable
com.prineside.tdi2.Building
com.prineside.tdi2.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
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static enum
static class
Tower.Factory<T extends Tower>
static class
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final String[]
com.badlogic.gdx.graphics.g2d.ParticleEffectPool.PooledEffect
float
boolean
float
int
float
float
static final float
static final int
float[]
float[]
int
float
float
float
int
boolean[]
static final int[]
static final int[]
static final int
static final int
float
float
float
boolean
float
float
static final com.badlogic.gdx.utils.Array<Enemy>
static final com.badlogic.gdx.graphics.Color
int
Fields inherited from class com.prineside.tdi2.Building
buildingType
Fields inherited from class com.prineside.tdi2.Registrable
S
-
Method Summary
Modifier and TypeMethodDescriptionvoid
addExperience
(float exp) void
applyDrawInterpolation
(float interpolatedTime) void
attack
(int shotCount) boolean
canAbilityBeInstalled
(int idx) abstract boolean
canAim()
boolean
boolean
canAttackEnemy
(Enemy enemy) boolean
void
customButtonAction
(int mapX, int mapY) void
dispose()
Releases all resources of this object.void
drawBase
(com.badlogic.gdx.graphics.g2d.SpriteCache spriteCache, int x, int y, MapRenderingSystem.DrawMode drawMode) void
drawBatch
(com.badlogic.gdx.graphics.g2d.Batch batch, float deltaTime) void
drawBatchAdditive
(com.badlogic.gdx.graphics.g2d.Batch batch, float deltaTime) void
drawGlitch
(com.badlogic.gdx.graphics.g2d.Batch batch) void
drawHoveredRange
(com.badlogic.gdx.graphics.g2d.Batch batch, RangeCircle rangeCircle) void
drawSelectedRange
(com.badlogic.gdx.graphics.g2d.Batch batch, RangeCircle rangeCircle) void
drawWeapon
(com.badlogic.gdx.graphics.g2d.Batch batch, float x, float y, float size, float deltaTime) void
fillTowerMenu
(com.badlogic.gdx.scenes.scene2d.Group container, com.badlogic.gdx.utils.ObjectMap<String, Object> elements) Добавить / обновить элементы в меню башни Вызывается каждый кадр, когда видно меню башни elements сохраняется между вызовами метода, чтобы не создавать актеров заново.findTarget
(ObjectFilter<Enemy> filter) float
float
getCachedStatBuffed
(TowerStatType towerStatType) Кэшированный Перегрузка для метода getCachedStatBuffed() Возвращает текущую характеристику с бонусами тайла из кэшаint
getEnemyPriority
(Enemy enemy) 0 - lowest priority (with lowAimPriority) 10 - regular prioritystatic float
getExpLevelStatBonusPercentage
(int expLevel, GameValueProvider gvp) int
getLevel()
static int
getLevelForExperience
(float exp) int
int
float
float
float
getRange()
float
int
int
abstract float
getStat
(TowerStatType towerStatType) float
getStatBuffed
(TowerStatType towerStatType) Не кэшированный Вычисляет характеристику с учетом бонусов тайлаint
int
abstract com.badlogic.gdx.utils.Array<TextureRegionConfig>
boolean
Только если canAim = falseboolean
isAbilityInstalled
(int abilityIdx) boolean
boolean
boolean
boolean
isStatAffectedByPower
(TowerStatType towerStatType) void
loadFromJson
(com.badlogic.gdx.utils.JsonValue value) void
onAbilitySet
(int abilityIdx, boolean isSet) void
void
void
read
(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input) void
void
void
rotateTo
(float needAngle, float deltaTime, float rotationSpeed) void
rotateTo
(float x, float y, float deltaTime, float rotationSpeed) final int
final void
scheduledUpdatableSetId
(int id) void
scheduledUpdate
(float deltaTime) void
setAimStrategy
(Tower.AimStrategy aimStrategy) void
setExperience
(float exp) Установка опыта напрямуюvoid
void
void
setTile
(PlatformTile tile) void
void
setUpgradeLevel
(int toLevel) Set tower's upgrade level directly, without validation / cache updatesboolean
void
toJson
(com.badlogic.gdx.utils.Json json) Внутри writeObjectStartfinal void
Get all of the tiles in tower's range (even if they touch the range slightly).void
unregisterNearbyModifier
(Modifier modifier) void
update
(float deltaTime) void
Обновляет кэш текущих характеристик башни Так как характеристики обновляются, одновременно обновляется массив тайлов в радиусе пораженияvoid
updateCustomButton
(ComplexButton complexButton, boolean isPointing) void
upgrade()
void
upgrade
(int toLevel) void
write
(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Output output) Methods inherited from class com.prineside.tdi2.Registrable
isRegistered
-
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
-
LEVEL_EXPERIENCE
public static final int[] LEVEL_EXPERIENCE -
LEVEL_EXPERIENCE_MILESTONES
public static final int[] LEVEL_EXPERIENCE_MILESTONES -
searchEnemiesHelper
-
id
public int id -
type
-
aimStrategy
-
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) -
read
public void read(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input) -
setAimStrategy
-
setRegistered
- Overrides:
setRegistered
in classRegistrable
-
setUnregistered
public void setUnregistered()- Overrides:
setUnregistered
in classRegistrable
-
toJson
public void toJson(com.badlogic.gdx.utils.Json json) Внутри writeObjectStart -
loadFromJson
public void loadFromJson(com.badlogic.gdx.utils.JsonValue value) -
cloneBuilding
- Specified by:
cloneBuilding
in classBuilding
-
isOutOfOrder
public boolean isOutOfOrder() -
setTile
-
getTarget
-
setTarget
-
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
-
unregisterNearbyModifier
-
getScheduledUpdateInterval
public float getScheduledUpdateInterval() -
scheduledUpdate
public void scheduledUpdate(float deltaTime) - Specified by:
scheduledUpdate
in interfaceScheduledUpdater.Updatable
-
scheduledUpdatableSetId
public final void scheduledUpdatableSetId(int id) - Specified by:
scheduledUpdatableSetId
in interfaceScheduledUpdater.Updatable
-
scheduledUpdatableGetId
public final int scheduledUpdatableGetId()- Specified by:
scheduledUpdatableGetId
in interfaceScheduledUpdater.Updatable
-
update
public void update(float deltaTime) -
getSellPrice
public int getSellPrice() -
isSellFullRefundStillActive
public boolean isSellFullRefundStillActive() -
findTarget
-
findTarget
-
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
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
- Parameters:
expLevel
- for XP levelgvp
- 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
Не кэшированный Вычисляет характеристику с учетом бонусов тайла -
isStatAffectedByPower
-
getCachedStatBuffed
Кэшированный Перегрузка для метода getCachedStatBuffed() Возвращает текущую характеристику с бонусами тайла из кэша -
dispose
public void dispose()Description copied from interface:com.badlogic.gdx.utils.Disposable
Releases all resources of this object.- Specified by:
dispose
in interfacecom.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) -
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
- Overrides:
drawSelectedRange
in classBuilding
-
drawHoveredRange
- Overrides:
drawHoveredRange
in classBuilding
-
placedOnMap
public void placedOnMap()- Overrides:
placedOnMap
in classBuilding
-
removedFromMap
public void removedFromMap()- Overrides:
removedFromMap
in classBuilding
-
getEnemyPriority
0 - lowest priority (with lowAimPriority) 10 - regular priority -
getStartingLevel
public int getStartingLevel() -
getRange
public float getRange() -
getMinRange
public float getMinRange() -
getWeaponTextures
-
getUniqueStatDescription
-
getStat
-
hasCustomButton
public boolean hasCustomButton()Только если canAim = false -
isCustomButtonNeedMapPoint
public boolean isCustomButtonNeedMapPoint() -
customButtonAction
public void customButtonAction(int mapX, int mapY) -
updateCustomButton
-
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
-
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)
-