use of com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell in project Catacomb-Snatch by Catacomb-Snatch.
the class TmxLevelGenerator method generate.
@Override
public Level generate(Campaign campaign) {
Level level = null;
final GeneratorStringOption empty = (GeneratorStringOption) getOption("emptyTile");
final boolean fill = empty.value != null && Tiles.isRegistered(empty.value);
for (MapLayer layer : map.getLayers()) {
if (layer instanceof TiledMapTileLayer) {
// Tile layer - the first one always decides the map size
final TiledMapTileLayer tileLayer = (TiledMapTileLayer) layer;
if (level == null) {
level = new Level(campaign, this, tileLayer.getWidth(), tileLayer.getHeight());
}
for (int x = 0; x < tileLayer.getWidth(); x++) {
for (int y = 0; y < tileLayer.getHeight(); y++) {
final Cell cell = tileLayer.getCell(x, y);
final String type = (cell == null || cell.getTile() == null) ? (fill ? empty.value : null) : (String) cell.getTile().getProperties().get("type");
if (type != null) {
Tiles.createAndAdd(type, level, x, y);
}
}
}
} else {
// Object layer for additional entities (monsters, spawn points, triggers)
final MapObjects objects = layer.getObjects();
for (int i = 0; i < objects.getCount(); i++) {
MapObject obj = objects.get(i);
String type = obj.getProperties().get("type", String.class);
if ("spawnPoint".equalsIgnoreCase(type)) {
float x = obj.getProperties().get("x", Float.class);
float y = obj.getProperties().get("y", Float.class);
spawns.add(new Vector2(x, y).add(0.5f, 0.5f));
}
}
}
}
// Safety check
if (level == null) {
return null;
}
return level;
}
use of com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell in project AmazingMaze by TheVirtualMachine.
the class MazeScreen method updateWires.
/**
* Update the wires connected to the gate at (x, y).
*
* @param x the x position of the gate being updated.
* @param y the y position of the gate being updated.
* @param state the new state of the wires.
*/
private void updateWires(int x, int y, int state) {
TiledMapTileLayer wires = (TiledMapTileLayer) map.getLayers().get(MapFactory.WIRE_LAYER);
for (int r = y + 1; r < mapHeight; r++) {
if (wires.getCell(x, r) != null) {
Cell cell = wires.getCell(x, r);
int newID = TileIDs.stripElectricState(cell.getTile().getId());
newID = TileIDs.computeID(newID, state);
cell.setTile(game.assets.tiles.getTile(newID));
} else {
break;
}
}
for (int r = y - 1; r >= 0; r--) {
if (wires.getCell(x, r) != null) {
Cell cell = wires.getCell(x, r);
int newID = TileIDs.stripElectricState(cell.getTile().getId());
newID = TileIDs.computeID(newID, state);
cell.setTile(game.assets.tiles.getTile(newID));
} else {
break;
}
}
}
use of com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell in project AmazingMaze by TheVirtualMachine.
the class MazeScreen method createBoundingBoxes.
/** Create the bounding boxes for collision detection. */
private void createBoundingBoxes() {
obstacleBoxes = new Array<Rectangle>(false, 16);
TiledMapTileLayer objects = (TiledMapTileLayer) map.getLayers().get(MapFactory.OBJECT_LAYER);
for (int r = 0; r < mapHeight; r++) {
for (int c = 0; c < mapWidth; c++) {
Cell cell = objects.getCell(c, r);
if (cell != null) {
obstacleBoxes.add(new Rectangle(c, r, 1, 1));
}
}
}
wireBoxes = new Array<Rectangle>(false, 16);
TiledMapTileLayer wires = (TiledMapTileLayer) map.getLayers().get(MapFactory.WIRE_LAYER);
for (int r = 0; r < mapHeight; r++) {
for (int c = 0; c < mapWidth; c++) {
WireCell wire = (WireCell) wires.getCell(c, r);
if (wire != null && wire.isOn()) {
wireBoxes.add(new Rectangle(c + 5f / 16f, r, 6f / 16f, 1));
}
}
}
fishBoxes = new Array<Rectangle>(false, 16);
cheeseBoxes = new Array<Rectangle>(false, 16);
TiledMapTileLayer items = (TiledMapTileLayer) map.getLayers().get(MapFactory.ITEM_LAYER);
for (int r = 0; r < mapHeight; r++) {
for (int c = 0; c < mapWidth; c++) {
Cell item = items.getCell(c, r);
if (item != null) {
if (item.getClass() == FishCell.class) {
fishBoxes.add(new Rectangle(c, r, 1, 1));
} else {
cheeseBoxes.add(new Rectangle(c, r, 1, 1));
}
}
}
}
}
use of com.badlogic.gdx.maps.tiled.TiledMapTileLayer.Cell in project AmazingMaze by TheVirtualMachine.
the class MapFactory method placeCheese.
/**
* Place a piece of cheese on the map.
*
* @param layer the layer to add the cheese to.
* @param col the column to place the cheese on.
* @param gateSpace how much space to leave for gates.
*/
private void placeCheese(TiledMapTileLayer layer, int col, int gateSpace) {
int row = randomInt(gateSpace + 1, height - gateSpace - 1);
Cell cheese = new Cell();
cheese.setTile(assets.tiles.getTile(TileIDs.computeID(TileIDs.POWERUP_RANGE, TileIDs.CHEESE)));
layer.setCell(col, row, cheese);
}
Aggregations