Package com.prineside.tdi2
Class Tower
java.lang.Object
com.prineside.tdi2.Registrable
com.prineside.tdi2.Building
com.prineside.tdi2.Tower
- All Implemented Interfaces:
KryoSerializable
- Direct Known Subclasses:
AirTower
,BasicTower
,BlastTower
,CannonTower
,CrusherTower
,FlamethrowerTower
,FreezingTower
,GaussTower
,LaserTower
,MinigunTower
,MissileTower
,MultishotTower
,SniperTower
,SplashTower
,TeslaTower
,VenomTower
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
static enum
static class
Tower.Factory<T extends Tower>
static class
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
static final int
static final int
static final int
static final String[]
float
boolean
float
byte
float
float
static final float
static final int
float[]
float[]
int
float
float
float
int
boolean[]
short
XP level of the tower, depends on its experience.static final int[]
static final int[]
float
static final short
static final byte
float
float
int
float
float
static final 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) void
calculateXpLevel
(boolean ignoreLevelLimits) Calculate level, nextLevelExperience and currentLevelExperience based on experience.final boolean
canAbilityBeInstalled
(int idx) abstract boolean
canAim()
boolean
boolean
canAttackEnemy
(Enemy enemy) boolean
void
customButtonAction
(int mapX, int mapY) void
dispose()
void
drawAbilitiesToCache
(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode) final void
drawBase
(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode) void
void
drawBatchAdditive
(Batch batch, float deltaTime) void
drawGlitch
(Batch batch) void
drawHoveredRange
(Batch batch, RangeCircle rangeCircle) void
drawSelectedRange
(Batch batch, RangeCircle rangeCircle) void
drawWeapon
(Batch batch, float x, float y, float size, float deltaTime) void
fillTowerMenu
(Group container, ObjectMap<String, Object> elements) Добавить / обновить элементы в меню башни Вызывается каждый кадр, когда видно меню башни elements сохраняется между вызовами метода, чтобы не создавать актеров заново.findTargetFiltered
(ObjectFilter<Enemy> filter) float
int
getEnemyPriority
(Enemy enemy) 0 - lowest priority (with lowAimPriority) 10 - regular prioritystatic float
getExpLevelStatBonusPercentage
(int expLevel, TowerType towerType, GameValueProvider gvp) short
getLevel()
static float
getLevelExperienceMilestone
(int level) static int
getLevelForExperience
(float exp) static int
getLevelForExperienceFast
(float exp) short
byte
float
float
float
getRange()
int
static int
getStartingLevel
(TowerType towerType, GameValueProvider gvp) static float
getStartingPwr
(TowerType towerType, GameValueProvider gvp) final float
getStat
(TowerStatType towerStatType) byte
float
abstract Quad
boolean
Только если canAim = falsefinal boolean
isAbilityInstalled
(int abilityIdx) boolean
final boolean
boolean
boolean
isStatAffectedByPower
(TowerStatType towerStatType) void
loadFromJson
(JsonValue value) void
onAbilitySet
(int abilityIdx, boolean isSet) void
void
void
void
void
rotateAtPoint
(float x, float y, float deltaTime, float rotationSpeed) void
rotateToAngle
(float needAngle, float deltaTime, float rotationSpeed) boolean
void
setAimStrategy
(Tower.AimStrategy aimStrategy) final void
setExperience
(float exp) Установка опыта напрямуюvoid
setLevel
(short level) void
Mark this object as registered in the game state and give it a reference to the game state.void
void
Remove the reference to the game state and mark this object as not registered.void
setUpgradeLevel
(byte toLevel) Set tower's upgrade level directly, without validation / cache updates.boolean
void
Внутри writeObjectStartvoid
update
(float deltaTime) void
Обновляет кэш текущих характеристик башни Так как характеристики обновляются, одновременно обновляется массив тайлов в радиусе пораженияvoid
updateCustomButton
(ComplexButton complexButton, boolean isPointing) void
upgrade()
void
upgradeToLevel
(byte toLevel) void
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 short MAX_LEVEL- See Also:
-
MAX_UPGRADE_LEVEL
public static final byte MAX_UPGRADE_LEVEL- See Also:
-
SHADOW_COLOR
-
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
-
aimStrategy
-
moneySpentOn
public int moneySpentOn -
bountyModifiersNearby
public byte bountyModifiersNearby -
powerBonuses
-
damageGiven
public float damageGiven -
shotCount
public int shotCount -
loopAbilityDamageBuffer
public float loopAbilityDamageBuffer -
affectedByLoopAbility
-
angle
public float angle -
experience
public float experience -
currentLevelExperience
public float currentLevelExperience -
nextLevelExperience
public float nextLevelExperience -
level
public short levelXP 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
-
attackDisabled
public boolean attackDisabled -
abilityAvailableParticleEffect
-
dpsDamage
public float[] dpsDamage -
dpsTime
public float[] dpsTime -
mdps
public float mdps -
enemiesKilled
public int enemiesKilled -
bonusCoinsBrought
public float bonusCoinsBrought
-
-
Method Details
-
write
- Specified by:
write
in interfaceKryoSerializable
- Overrides:
write
in classBuilding
-
read
- Specified by:
read
in interfaceKryoSerializable
- Overrides:
read
in classBuilding
-
setAimStrategy
-
setRegistered
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 classRegistrable
- 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 classRegistrable
-
getWalkCost
public float getWalkCost()- Specified by:
getWalkCost
in classBuilding
-
toJson
Внутри writeObjectStart -
loadFromJson
-
sameAs
-
cloneBuilding
- Specified by:
cloneBuilding
in classBuilding
-
isOutOfOrder
public final boolean isOutOfOrder() -
getTarget
-
setTarget
-
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
-
findTargetFiltered
-
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 classBuilding
-
getExpLevelStatBonusPercentage
public static float getExpLevelStatBonusPercentage(int expLevel, TowerType towerType, GameValueProvider gvp) - 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
-
isStatAffectedByPower
-
getStat
- 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
-
drawBatchAdditive
-
drawBase
public final void drawBase(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode) -
drawAbilitiesToCache
public void drawAbilitiesToCache(Batch batch, float x, float y, float width, float height, MapRenderingSystem.DrawMode drawMode) -
drawWeapon
-
drawGlitch
-
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
-
getStartingPwr
-
getRange
public float getRange() -
getMinRange
public float getMinRange() -
getWeaponTextures
-
getUniqueStatDescription
-
hasCustomButton
public boolean hasCustomButton()Только если canAim = false -
isCustomButtonNeedMapPoint
public boolean isCustomButtonNeedMapPoint() -
customButtonAction
public void customButtonAction(int mapX, int mapY) -
updateCustomButton
-
fillTowerMenu
Добавить / обновить элементы в меню башни Вызывается каждый кадр, когда видно меню башни elements сохраняется между вызовами метода, чтобы не создавать актеров заново. Если он пустой - значит, вызвали первый раз и надо создать Можно не обновлять ничего, если состояние устраивает (можно хранить любые данные в elements, например хэш состояния или предыдущие значения) -
canAim
public abstract boolean canAim() -
shouldSearchForTarget
public boolean shouldSearchForTarget() -
canAttackEnemy
-
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)
-