Class PathfindingSystem

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

public final class PathfindingSystem extends GameSystem
  • Field Details

    • throwExceptionOnMissingPath

      public boolean throwExceptionOnMissingPath
    • pathfindingNodes

      public com.badlogic.gdx.utils.Array<PathNode> pathfindingNodes
  • Constructor Details

    • PathfindingSystem

      public PathfindingSystem()
  • 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
    • setup

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

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

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

      public boolean isWalkablePlatforms()
    • canAllEnemiesFindPath

      public boolean canAllEnemiesFindPath()
      Можно временно изменить тайл и вызвать этот метод, чтобы проверить, можно ли так делать.
      Returns:
      true если от каждого спавна к базе есть путь для каждого типа врага, который там спавнится
    • forcePathfindingRebuild

      public void forcePathfindingRebuild()
    • findPath

      @Null public Path findPath(int startX, int startY, int endX, int endY, EnemyType enemy)
    • findPath

      @Null public Path findPath(Tile startTile, Tile targetTile)
      Can be called concurrently but do not mix with pathfinding-modifying operations
    • findPath

      @Null public Path findPath(Tile startTile, EnemyType enemyType)
    • getDefaultPathWithoutStateChanges

      public Path getDefaultPathWithoutStateChanges(EnemyType enemyType, SpawnTile spawnTile)
    • rebuildPathfindingIfNeeded

      public void rebuildPathfindingIfNeeded()
    • rebuildPathfinding

      public void rebuildPathfinding()
      Обновляет массивы соединений и присваивает им индексы
      Throws:
      Map.PathNotFoundForEnemyTypeException
    • getEnemyTypesThatCantFindPath

      public com.badlogic.gdx.utils.Array<Map.EnemyTypeSpawnPair> getEnemyTypesThatCantFindPath()
    • getDefaultPath

      public Path getDefaultPath(EnemyType enemyType, SpawnTile spawnTile)
      Возвращает стандартный кэшированный путь для этого типа врага. Если throwExceptionOnMissingPath == false, вернет null при отсутствующем пути
    • update

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

      public void drawDebug(com.badlogic.gdx.graphics.g2d.Batch batch)
    • affectsGameState

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

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