Class WangSet

java.lang.Object
de.gurkenlabs.litiengine.environment.tilemap.xml.CustomPropertyProvider
de.gurkenlabs.litiengine.environment.tilemap.xml.WangSet
All Implemented Interfaces:
ICustomPropertyProvider, ITerrainSet

public class WangSet extends CustomPropertyProvider implements ITerrainSet

A Tiled terrain or Wang set containing terrain colors and per-tile edge/corner assignments.

Terrain references in WangTile are one-based indexes into getTerrains(); index zero means no terrain. The eight positions alternate corners and edges in the order defined by the TMX format. The returned terrain and Wang-tile lists are live JAXB model collections.

See Also:
  • Constructor Details

    • WangSet

      public WangSet()
      Creates an empty mixed terrain set named Terrain Set.
    • WangSet

      public WangSet(String name, TerrainType type)
      Creates an empty terrain set.
      Parameters:
      name - The set name.
      type - Whether assignments describe corners, edges, or both.
    • WangSet

      public WangSet(WangSet original)
      Creates a deep copy of a terrain set.
      Parameters:
      original - The set to copy.
  • Method Details

    • getName

      public String getName()
      Description copied from interface: ITerrainSet
      Gets the name of this terrain set.
      Specified by:
      getName in interface ITerrainSet
      Returns:
      THe name of the terrain set.
    • setName

      public void setName(String name)
      Sets the display name; blank values are normalized to null.
      Parameters:
      name - The new name.
    • getType

      public TerrainType getType()
      Description copied from interface: ITerrainSet

      Gets the type of terrain represented by this instance.

      This method returns the specific type of terrain as an element of the TerrainType enumeration. The TerrainType enum defines different types of terrain, including "corner," "edge," and "mixed." The return value indicates the classification of the terrain associated with the current instance.

      Specified by:
      getType in interface ITerrainSet
      Returns:
      The TerrainType representing the type of terrain.
      See Also:
    • setType

      public void setType(TerrainType type)
      Sets which Wang positions this set uses.
      Parameters:
      type - The non-null terrain type.
      Throws:
      NullPointerException - if type is null.
    • getTerrains

      public List<ITerrain> getTerrains()
      Returns the live terrain list in Wang-index order.
      Specified by:
      getTerrains in interface ITerrainSet
      Returns:
      The mutable terrain list.
    • getWangTiles

      public List<WangTile> getWangTiles()
      Returns the live list of per-tile assignments.
      Returns:
      The mutable Wang-tile list.
    • getOrCreateWangTile

      public WangTile getOrCreateWangTile(int tileId)
      Finds or creates the assignment for a local tile ID.
      Parameters:
      tileId - The non-negative local tile ID.
      Returns:
      The existing or newly added assignment.
      Throws:
      IllegalArgumentException - if tileId is negative.
    • getWangId

      public int[] getWangId(int tileId)
      Returns the eight Wang indexes assigned to a local tile.
      Parameters:
      tileId - The local tile ID.
      Returns:
      A defensive copy, or eight zeroes if the tile has no assignment.
    • removeWangTileIfEmpty

      public void removeWangTileIfEmpty(int tileId)
      Removes a tile assignment if all eight of its indexes are zero.
      Parameters:
      tileId - The local tile ID to inspect.
    • getTerrains

      public ITerrain[] getTerrains(int tileId)
      Description copied from interface: ITerrainSet

      Gets the terrains object associated with the specified tile ID.

      This method searches through the collection of Wang tiles to find a match for the specified tile ID. If a match is found, it extracts the Wang IDs associated with the tile and maps them to terrains defined by this ITerrainSet. The resulting array contains references to the corresponding terrain objects based on the Wang IDs. If a Wang ID is 0, the corresponding terrain in the array is set to null.

      Specified by:
      getTerrains in interface ITerrainSet
      Parameters:
      tileId - The tile ID for which terrains are to be retrieved.
      Returns:
      An array of ITerrain objects representing the terrains associated with the given tile ID.
    • toString

      public String toString()
      Overrides:
      toString in class Object