Class Map

java.lang.Object
com.prineside.tdi2.Map
All Implemented Interfaces:
com.esotericsoftware.kryo.KryoSerializable

public final class Map extends Object implements com.esotericsoftware.kryo.KryoSerializable
  • Field Details

    • MAX_TECHNICAL_SIZE

      public static final int MAX_TECHNICAL_SIZE
      See Also:
    • MAX_SIZE

      public static final int MAX_SIZE
      See Also:
    • GATE_HIT_AREA_WIDTH

      public static final float GATE_HIT_AREA_WIDTH
      See Also:
    • listeners

      public ListenerGroup<Map.MapListener> listeners
    • tiles

      public Tile[][] tiles
    • gates

      public Gate[][][] gates
    • tilesArray

      public com.badlogic.gdx.utils.DelayedRemovalArray<Tile> tilesArray
    • teleportGates

      public com.badlogic.gdx.utils.Array<com.badlogic.gdx.utils.Array<TeleportGate>> teleportGates
    • spawnTiles

      public com.badlogic.gdx.utils.Array<SpawnTile> spawnTiles
    • gatesArray

      public com.badlogic.gdx.utils.Array<Gate> gatesArray
    • targetTile

      public TargetTile targetTile
    • coreTiles

      public com.badlogic.gdx.utils.Array<CoreTile> coreTiles
    • bossTile

      public BossTile bossTile
    • xmMusicTrackTile

      public XmMusicTrackTile xmMusicTrackTile
    • allowedEnemies

      public com.badlogic.gdx.utils.Array<EnemyType> allowedEnemies
    • allowedEnemiesSet

      public com.badlogic.gdx.utils.ObjectSet<EnemyType> allowedEnemiesSet
    • widthTiles

      public int widthTiles
    • heightTiles

      public int heightTiles
    • widthPixels

      public int widthPixels
    • heightPixels

      public int heightPixels
    • throwExceptionOnMissingPath

      public boolean throwExceptionOnMissingPath
    • pathfindingNodes

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

      public MapSystem mapSystem
  • Constructor Details

    • Map

      public Map(int width, int height)
    • Map

      public Map(Tile[][] tiles, Gate[][][] gates)
      Parameters:
      gates - должен быть на 1 тайл шире и выше: [height + 1][width + 1][Gate.Side.values.length]
  • 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
    • read

      public void read(com.esotericsoftware.kryo.Kryo kryo, com.esotericsoftware.kryo.io.Input input)
      Specified by:
      read in interface com.esotericsoftware.kryo.KryoSerializable
    • getMaxedAbilitiesConfiguration

      public AbilitySelectionOverlay.SelectedAbilitiesConfiguration getMaxedAbilitiesConfiguration()
      Returns:
      конфигурацию навыков, которые дает база и GV-тайлы
    • setRegistered

      public void setRegistered(MapSystem mapSystem)
    • setUnregistered

      public void setUnregistered()
    • getPrestigeScore

      public double getPrestigeScore()
    • multiplyPortalsDifficulty

      public void multiplyPortalsDifficulty(float mul)
    • getAverageDifficulty

      public int getAverageDifficulty()
      Returns:
      среднюю сложность порталов
    • getComplexityWaveMilestones

      public int[] getComplexityWaveMilestones()
      Возвращает номера волн, после которых сложность переходит на новый этап
      Returns:
      int[3]
    • setSize

      public void setSize(int width, int height)
      Изменить размер карты Уменьшается удалением тайлов справа / сверху. При увеличении позиции тайлов и гейтов не изменяются. ! Все тайлы, которые будут отброшены (при уменьшении карты) необходимо сначала убрать (setTile() / setGate())
    • getResourcesCount

      public int[] getResourcesCount()
      Returns:
      количество ресурсов на всей карте. Последний индекс (ResourceType.values.length) - сколько относительно "пустых" ресурсов (из-за плотности ресурсов)
    • regeneratePreview

      public void regeneratePreview()
    • getPreview

      public BasicLevelManager.MapPreview getPreview()
    • fromJson

      public static Map fromJson(com.badlogic.gdx.utils.JsonValue jsonValue)
    • toJson

      public void toJson(com.badlogic.gdx.utils.Json json)
      Вызывать в writeObjectStart
    • generateSeed

      public int generateSeed()
      Считает seed по тайлам карты (их типу и позиции) Лучше не использовать как hashCode, так как не все поля тайлов учитываются
    • getDefaultPathWithoutStateChanges

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

      public void prepareDefaultPathsIfNeeded()
    • getDefaultPath

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

      public Path getNewPath(EnemyType enemyType, SpawnTile spawnTile)
      Создает новый объект пути и наполняет узлами от старта к цели
    • findPath

      public boolean findPath(Enemy enemy, Path outPath, Tile startTile)
    • findPath

      public boolean findPath(Path outPath, Tile startTile, Tile targetTile)
    • rebuildPathfindingIfNeeded

      public void rebuildPathfindingIfNeeded()
    • requirePathfindingRebuild

      public void requirePathfindingRebuild()
    • hasTileThatAllowsWalkablePlatforms

      public boolean hasTileThatAllowsWalkablePlatforms()
    • rebuildPathfinding

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

      public void updateCache()
      Стоит вызывать, если изменена карта
    • getGate

      public Gate getGate(int x, int y, Gate.Side side)
      Получить барьер или null, если его нет.
      Parameters:
      side - сторона тайла. Чтобы получить верхний: y + 1 BOTTOM, чтобы получить правый: y + 1 LEFT
    • fitGateToMapPos

      public boolean fitGateToMapPos(float x, float y, Gate gate)
      Parameters:
      gate - барьер, позиция и сторона которого будет изменена так, чтобы соответствовать точке на карте
      Returns:
      true, если точка на карте, в противном случае false (в этой точке барьер поставить нельзя)
    • getGateByMapPos

      public Gate getGateByMapPos(float x, float y)
      Получить барьер по точке на карте (в основном используется для обработки касаний)
    • setGate

      public void setGate(int x, int y, Gate.Side side, Gate gate)
    • getTile

      public Tile getTile(int x, int y)
      Returns:
      Tile или null, если тайла нет или позиция за рамками карты
    • getTileByMapPos

      public Tile getTileByMapPos(float mapX, float mapY)
    • setTile

      public void setTile(int x, int y, Tile tile)
      Изменить тайл карты
      Parameters:
      tile - может быть null
    • cpy

      public Map cpy()
    • getTrimBounds

      public IntRectangle getTrimBounds()
    • cpyTrimmed

      public Map cpyTrimmed()
      Создает копию карты без пустоты по бокам
    • canAllEnemiesFindPath

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

      public com.badlogic.gdx.utils.IntMap<BossType> getBossWaves()
      Returns:
      волны боссов или null
    • getEnemyTypesThatCantFindPath

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

      public void tryReplaceTile(int x, int y, Tile byTile) throws Map.InvalidMapException
      Можно ли заменить тайл в x, y на тайл byTile
      Throws:
      Map.InvalidMapException
    • tryReplaceGate

      public void tryReplaceGate(int x, int y, Gate.Side side, Gate byGate) throws Map.InvalidMapException
      Throws:
      Map.InvalidMapException
    • validate

      public void validate() throws Map.InvalidMapException
      Проверяет формат карты. НЕ проверяет, есть ли путь от спавна до цели
      Throws:
      Map.InvalidMapException
    • finalize

      public void finalize() throws Throwable
      Throws:
      Throwable