Class WaveSystem

All Implemented Interfaces:
com.badlogic.gdx.utils.Disposable, com.esotericsoftware.kryo.KryoSerializable

public final class WaveSystem extends GameSystem
  • Field Details

    • NEXT_WAVES_CACHE_SIZE

      public static final int NEXT_WAVES_CACHE_SIZE
      See Also:
    • ULTRA_DIFFICULT_MILESTONE_MULTIPLIER

      public static final float ULTRA_DIFFICULT_MILESTONE_MULTIPLIER
      See Also:
    • WAVES_TIMELINE_MAX_WAVE

      public static final int WAVES_TIMELINE_MAX_WAVE
      See Also:
    • ENEMY_INTERVAL_DENSITY_HIGH

      public static final float ENEMY_INTERVAL_DENSITY_HIGH
      See Also:
    • ENEMY_INTERVAL_DENSITY_LOW

      public static final float ENEMY_INTERVAL_DENSITY_LOW
      See Also:
    • mode

      public WaveSystem.Mode mode
    • status

      public WaveSystem.Status status
    • wave

      public Wave wave
    • autoForceWaveEnabled

      public boolean autoForceWaveEnabled
    • instantWaveCallsEnabled

      public boolean instantWaveCallsEnabled
    • nextWavesCache

      public WaveSystem.WaveCache[] nextWavesCache
    • wavesToNotifyAboutCompletion

      public com.badlogic.gdx.utils.DelayedRemovalArray<Wave> wavesToNotifyAboutCompletion
    • predefinedWaveTemplates

      public WaveTemplates.PredefinedWaveTemplate[] predefinedWaveTemplates
    • bossWaves

      public WaveBossSupplier bossWaves
  • Constructor Details

    • WaveSystem

      public WaveSystem()
  • 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 Registrable
    • 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 Registrable
    • affectsGameState

      public boolean affectsGameState()
      Specified by:
      affectsGameState in class GameSystem
    • setup

      public void setup()
      Description copied from class: GameSystem
      Произвести начальную настройку системы. На момент вызова этого метода, systemProvider содержит объекты всех систем.
      Overrides:
      setup in class GameSystem
    • draw

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

      public WaveProcessor createBossWaveProcessor(BossType bossType)
    • generateBossWaveWithProcessor

      public Wave generateBossWaveWithProcessor(BossType bossType, int waveNumber, int difficulty)
    • getWaveProcessorFactory

      public WaveProcessor.WaveProcessorFactory<?> getWaveProcessorFactory(BossType bossType)
    • getWaveStartInterval

      public float getWaveStartInterval()
    • setWaveGenerator

      public void setWaveGenerator(WaveSystem.WaveGenerator generator)
    • getWaveGenerator

      public WaveSystem.WaveGenerator getWaveGenerator()
    • postSetup

      public void postSetup()
      Description copied from class: GameSystem
      Произвести окончательную настройку системы. Во время вызова, все системы загружены и установлены (setup()), все слушатели добавлены
      Overrides:
      postSetup in class GameSystem
    • postStateRestore

      public void postStateRestore()
      Overrides:
      postStateRestore in class GameSystem
    • setForcedTemplate

      public void setForcedTemplate(String templateName)
    • overrideWave

      public void overrideWave(int number, Wave wave)
    • getNextOverridableWaveNumber

      public int getNextOverridableWaveNumber()
      Returns:
      a vacant wave number for override which has not yet spawned and has not been overridden or -1 if, for some reason, there's no such wave number
    • setBossWaves

      public void setBossWaves(WaveBossSupplier bossWaves)
    • resetNextWavesCache

      public void resetNextWavesCache()
    • getForceWaveBonus

      public int getForceWaveBonus()
    • getCompletedWavesCount

      public int getCompletedWavesCount()
      Returns:
      номер последней волны, в которой не осталось заспавненных врагов
    • isForceWaveAvailable

      public boolean isForceWaveAvailable()
    • forceNextWaveAction

      public void forceNextWaveAction()
      Добавляет Action для вызова волны на следующем update()
    • freezeTimeToNextWave

      public void freezeTimeToNextWave(float duration)
      Время до следующей волны не будет считаться. Если меньше 0, заморозка отключается
    • setStatus

      public void setStatus(WaveSystem.Status status)
    • setDifficultyExpectedPlaytime

      public void setDifficultyExpectedPlaytime(float multiplier)
    • main

      public static void main(String[] args)
    • getDifficultWavesMultiplierOld

      @Deprecated public static float getDifficultWavesMultiplierOld(int waveNumber, int[] difficultyGrowWaves)
      Deprecated.
      Old algo, do not use
    • getWaveDifficultyProvider

      public WaveDifficultyProvider getWaveDifficultyProvider()
      Not serializable, lazy-init
    • generateEnemyGroups

      public com.badlogic.gdx.utils.Array<EnemyGroup> generateEnemyGroups(int waveNumber, WaveSystem.Mode mode, WaveDifficultyProvider wdp, int averageDifficulty, WaveBossSupplier bossWaves, Map map, long seed, WaveTemplates.PredefinedWaveTemplate[] predefinedWaveTemplates)
      Должен работать так же, как generateWave()
    • generateWave

      public Wave generateWave(int wave, int difficulty, WaveTemplates.PredefinedWaveTemplate template)
    • getWaveValue

      public static float getWaveValue(int wave, int difficulty)
    • generateWave

      public Wave generateWave(int wave, int difficulty, long seed, com.badlogic.gdx.utils.ObjectSet<EnemyType> allowedEnemyTypes)
    • generateWave

      public Wave generateWave(WaveTemplates.WaveTemplate template, int wave, int difficulty)
    • generateWavesTimelineConfiguration

      public WavesTimelineOverlay.WavesConfiguration generateWavesTimelineConfiguration(BasicLevel basicLevel, Map map, int startWave)
    • generateWavesTimelineConfiguration

      public WavesTimelineOverlay.WavesConfiguration generateWavesTimelineConfiguration(UserMap userMap, Map map, int startWave, WaveBossSupplier bossWaves)
    • allWavesSpawned

      public boolean allWavesSpawned()
    • startNextWave

      public void startNextWave()
    • getTimeToNextWave

      public float getTimeToNextWave()
    • getEnemiesToSpawn

      public static com.badlogic.gdx.utils.Array<Enemy> getEnemiesToSpawn(float timeSinceStart, com.badlogic.gdx.utils.Array<EnemyGroup.SpawnEnemyGroup> enemyGroups)
      Создает объекты врагов по конфигурации группы. Изменяет EnemyGroup.spawnedCount
    • stopSpawningCurrentWave

      public void stopSpawningCurrentWave(Tower killer, DamageType damageType)
      Остановить спавн врагов текущей волны. Будет считаться, что врагов вообще никогда не было.
    • setForceWaveDoubleBonus

      public void setForceWaveDoubleBonus(boolean forceWaveDoubleBonus)
    • isForceWaveDoubleBonus

      public boolean isForceWaveDoubleBonus()
    • getWave

      @Null public Wave getWave(int number)
      Returns:
      normally generated Wave if still exists
    • update

      public void update(float deltaTime)
      Overrides:
      update in class GameSystem
    • getSystemName

      public String getSystemName()
      Specified by:
      getSystemName in class GameSystem
    • isAutoForceWaveEnabled

      public boolean isAutoForceWaveEnabled()
    • setAutoForceWaveEnabled

      public void setAutoForceWaveEnabled(boolean enabled)
    • 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
      Overrides:
      dispose in class GameSystem