package fr.lyrgard.hexScape.io.virtualScape;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.file.Files;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import fr.lyrgard.hexScape.bus.GuiMessageBus;
import fr.lyrgard.hexScape.io.virtualScape.bean.TileType;
import fr.lyrgard.hexScape.io.virtualScape.bean.Vector3i;
import fr.lyrgard.hexScape.io.virtualScape.bean.VirtualScapeDecorType;
import fr.lyrgard.hexScape.io.virtualScape.bean.VirtualScapeMap;
import fr.lyrgard.hexScape.io.virtualScape.bean.VirtualScapePiece;
import fr.lyrgard.hexScape.message.ErrorMessage;
import fr.lyrgard.hexScape.model.CurrentUserInfo;
import fr.lyrgard.hexScape.model.map.Decor;
import fr.lyrgard.hexScape.model.map.Direction;
import fr.lyrgard.hexScape.model.map.Map;
import fr.lyrgard.hexScape.model.map.Tile;
import fr.lyrgard.hexScape.service.MapManager;
public class VirtualScapeMapReader {
public MapManager readMap(byte[] bytes, String name) {
ByteBuffer bB = null;
bB = ByteBuffer.wrap(bytes).order(ByteOrder.LITTLE_ENDIAN );
VirtualScapeMap virtualScapeMap = new VirtualScapeMap();
virtualScapeMap.setVersion(bB.getDouble());
if (virtualScapeMap.getVersion() != 7.0E-4) {
GuiMessageBus.post(new ErrorMessage(CurrentUserInfo.getInstance().getId(), "Old VirtualScape file version, not supported.\nTry opening the map file with the latest Virtualscape version and save it again."));
return null;
}
virtualScapeMap.setName(readCString(bB));
virtualScapeMap.setAuthor(readCString(bB));
virtualScapeMap.setPlayerNumber(readCString(bB));
virtualScapeMap.setScenarioLenght(bB.getInt());
String scenario = "";
for (int i = 0; i < virtualScapeMap.getScenarioLenght(); i++) {
scenario += (char)bB.get();
}
virtualScapeMap.setScenario(scenario);
virtualScapeMap.setLevelPerPage(bB.getInt());
virtualScapeMap.setPrintingTransparency(bB.getInt());
virtualScapeMap.setPrintingGrid(bB.getInt() != 0);
virtualScapeMap.setPrintTileNumber(bB.getInt() != 0);
virtualScapeMap.setPrintStartAreaAsLevel(bB.getInt() != 0);
virtualScapeMap.setTileNumer(bB.getInt());
for (int i = 0; i < virtualScapeMap.getTileNumer(); i++) {
VirtualScapePiece tile = new VirtualScapePiece();
tile.setType(bB.getInt());
tile.setVersion(bB.getDouble());
tile.setRotation(bB.getInt());
tile.setPosX(bB.getInt());
tile.setPosY(bB.getInt());
tile.setPosZ(bB.getInt());
tile.setGlyphLetter((char)bB.get());
tile.setGlyphName(readCString(bB));
tile.setStartName(readCString(bB));
tile.setColorf(bB.getInt());
if (tile.getType() / 1000 == 17) {
// Particular tiles
bB.getInt(); // m_NbTile
readCString(bB); // m_PersonalTexture
readCString(bB); // m_PersonalTextureSide
readCString(bB); // m_Char
readCString(bB); // m_Name
}
virtualScapeMap.getTiles().add(tile);
}
return toMap(virtualScapeMap,name);
}
public MapManager readMap(File mapFile) {
try {
byte[] bytes = Files.readAllBytes(mapFile.toPath());
return readMap(bytes, mapFile.getName());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
private String readCString(ByteBuffer bB) {
int lenght = readCStringLenght(bB);
String value = "";
for (int i = 0; i < lenght; i++) {
value += bB.getChar();
}
return value;
}
private int readCStringLenght(ByteBuffer bB) {
int lenght = 0;
byte b = bB.get();
if (b != (byte)0xFF) {
lenght = b;
} else {
short s = bB.getShort();
if (s == (short)0xFFFE) {
lenght = readCStringLenght(bB);
} else if (s == (short)0xFFFF) {
lenght = bB.getInt();
} else {
lenght = s;
}
}
return lenght;
}
private MapManager toMap(VirtualScapeMap virtualScapeMap, String defaultName) {
Map map = new Map();
MapManager mapManager = new MapManager(map);
java.util.Map<Integer, List<VirtualScapePiece>> tilesByHeight = new HashMap<Integer, List<VirtualScapePiece>>();
int maxHeight = 0;
for (VirtualScapePiece tile : virtualScapeMap.getTiles()) {
List<VirtualScapePiece> tiles = tilesByHeight.get(tile.getPosZ());
if (tiles == null) {
tiles = new ArrayList<VirtualScapePiece>();
tilesByHeight.put(tile.getPosZ(), tiles);
}
tiles.add(tile);
if (tile.getPosZ() > maxHeight) {
maxHeight = tile.getPosZ();
}
}
List<VirtualScapePiece> decors = new ArrayList<>();
List<VirtualScapePiece> startZones = new ArrayList<>();
for (int z = 0; z <= maxHeight; z++) {
List<VirtualScapePiece> pieces = tilesByHeight.get(z);
if (pieces != null) {
for (VirtualScapePiece piece : pieces) {
if (piece.getType() == 15001) {
piece.setPosZ(z);
startZones.add(piece);
} else if (getTileType(piece) != null) {
addTileToMap(piece, z, mapManager);
} else {
piece.setPosZ(z);
decors.add(piece);
}
}
}
}
for (VirtualScapePiece decor : decors) {
addDecorToMap(decor, mapManager);
}
addStartZonesToMap(startZones, mapManager);
mapManager.getMap().setName(virtualScapeMap.getName());
if (StringUtils.isEmpty(mapManager.getMap().getName())) {
mapManager.getMap().setName(defaultName);
}
return mapManager;
}
private void addDecorToMap(VirtualScapePiece decor, MapManager mapManager) {
int x = convertCoordX(decor);
int y = convertCoordY(decor);
VirtualScapeDecorType type = getDecorType(decor);
Direction direction = getDirection(decor);
if (type != null) {
Decor decorBean = new Decor();
decorBean.setName(type.getExternalModelName());
decorBean.setDirection(direction);
Vector3i tileAttachementOffset = type.getAttachementTilePosition().get(direction);
decorBean.setPosition(x + tileAttachementOffset.x, y + tileAttachementOffset.y, decor.getPosZ() + tileAttachementOffset.z);
mapManager.getDecors().add(decorBean);
// Some decors has Tiles under them
if (type == VirtualScapeDecorType.BRUSH_1 || type == VirtualScapeDecorType.PALM_1) {
addSingleTilesToMap(mapManager, 1, 0, TileType.SWAMP, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.HIVE_6) {
addSingleTilesToMap(mapManager, 6, decor.getRotation(), TileType.SWAMP_WATER, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.GLACIER_6) {
addSingleTilesToMap(mapManager, 6, decor.getRotation(), TileType.ICE, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.GLACIER_4) {
addSingleTilesToMap(mapManager, 4, decor.getRotation(), TileType.ICE, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.GLACIER_3) {
addSingleTilesToMap(mapManager, 3, decor.getRotation(), TileType.ICE, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.GLACIER_1) {
addSingleTilesToMap(mapManager, 1, decor.getRotation(), TileType.ICE, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.OUTCROP_3) {
addSingleTilesToMap(mapManager, 3, decor.getRotation(), TileType.SHADOW, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.OUTCROP_1) {
addSingleTilesToMap(mapManager, 1, decor.getRotation(), TileType.SHADOW, x, y, decor.getPosZ());
} else if (type == VirtualScapeDecorType.CASTLE_LADDER) {
addSingleTilesToMap(mapManager, 1, decor.getRotation(), TileType.INVISIBLE, x, y, decor.getPosZ());
}
}
}
private void addStartZonesToMap(List<VirtualScapePiece> startZones, MapManager mapManager) {
java.util.Map<Integer, List<VirtualScapePiece>> map = new HashMap<>();
for (VirtualScapePiece startZone : startZones) {
List<VirtualScapePiece> list = map.get(startZone.getColor());
if (list == null) {
list = new ArrayList<>();
map.put(startZone.getColor(), list);
}
list.add(startZone);
}
int i = 0;
for (List<VirtualScapePiece> list : map.values()) {
for (VirtualScapePiece startZone : list) {
int x = convertCoordX(startZone);
int y = convertCoordY(startZone);
Tile tile = mapManager.getNearestTile(x, y, startZone.getPosZ());
if (tile != null) {
tile.setStartZone(true);
tile.setStartZoneNumber(i);
}
}
i++;
}
}
private void addTileToMap(VirtualScapePiece tile, int z ,MapManager mapManager) {
int tileNumber = tile.getType() % 1000;
int rotation = tile.getRotation();
TileType tileType = getTileType(tile);
int x = convertCoordX(tile);
int y = convertCoordY(tile);
addSingleTilesToMap(mapManager, tileNumber, rotation, tileType, x, y, z);
}
private void addSingleTilesToMap(MapManager mapManager, int tileNumber, int rotation, TileType tileType, int x, int y, int z) {
switch (tileNumber) {
case 1:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
if (tileType == TileType.WATER || tileType == TileType.SHADOW) {
// Somehow Virtualscape has shadow and water tiles "2", that are in fact normal single tiles
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
switch (rotation) {
case 0:
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 3:
switch (rotation) {
case 0:
case 2:
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
case 3:
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 4:
switch (rotation) {
case 0:
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 5:
switch (rotation) {
case 0:
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 6:
switch (rotation) {
case 0:
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 7:
if (tileType == TileType.ROAD) {
switch (rotation) {
case 0:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
} else {
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
}
break;
case 9:
switch (rotation) {
case 0:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
case 24:
switch (rotation) {
case 0:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+7, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 1:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-7, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 2:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 3:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+7, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+6, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+7, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 4:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+5, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+4, y-6, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-7, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+3, y-7, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
case 5:
mapManager.addTile(x, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-3, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-1, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-3, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-2, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x-1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-3, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+1, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-4, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
mapManager.addTile(x+2, y-5, z, tileType.isHalfSize(), tileType.getTopTexture(), tileType.getSideTexture(), tileType.isVisible(), false, 0);
break;
}
break;
default:
throw new RuntimeException("Tile number " + tileNumber + " not supported yet");
}
}
private int convertCoordX(VirtualScapePiece tile) {
return tile.getPosX() + (tile.getPosY() + 1)/2;
}
private int convertCoordY(VirtualScapePiece tile) {
return -tile.getPosY();
}
private TileType getTileType(VirtualScapePiece tile) {
int tileFamily = tile.getType() / 1000;
TileType tileType = null;
switch (tileFamily) {
case 1:
tileType = TileType.GRASS;
break;
case 2:
tileType = TileType.ROCK;
break;
case 3:
tileType = TileType.SAND;
break;
case 4:
tileType = TileType.WATER;
break;
case 5:
tileType = TileType.ICE;
break;
case 6:
tileType = TileType.MOLTEN_LAVA;
break;
case 7:
tileType = TileType.LAVA_FIELD;
break;
case 8:
tileType = TileType.ROAD;
break;
case 9:
tileType = TileType.SNOW;
break;
case 16:
if (tile.getType() < 16010) {
tileType = TileType.ROAD;
}
break;
case 19:
tileType = TileType.SWAMP_WATER;
break;
case 20:
tileType = TileType.SWAMP;
break;
case 21:
tileType = TileType.CONCRETE;
break;
case 22:
tileType = TileType.ASPHALT;
break;
case 25:
tileType = TileType.SHADOW;
break;
case 26:
tileType = TileType.DUNGEON;
break;
default:
tileType = null;
}
return tileType;
}
private VirtualScapeDecorType getDecorType(VirtualScapePiece tile) {
VirtualScapeDecorType decorType;
switch (tile.getType()) {
case 11002:
decorType = VirtualScapeDecorType.RUIN_2;
break;
case 11003:
decorType = VirtualScapeDecorType.RUIN_3;
break;
case 11006:
decorType = VirtualScapeDecorType.RUIN_6;
break;
case 11007:
decorType = VirtualScapeDecorType.RUIN_6_BREAKED;
break;
case 10011:
decorType = VirtualScapeDecorType.TREE_1_10;
break;
case 10012:
decorType = VirtualScapeDecorType.TREE_1_11;
break;
case 10013:
decorType = VirtualScapeDecorType.TREE_1_12;
break;
case 10004:
decorType = VirtualScapeDecorType.TREE_4;
break;
case 12004:
decorType = VirtualScapeDecorType.STONE_WALL_4;
break;
case 23006:
decorType = VirtualScapeDecorType.HIVE_6;
break;
case 16101:
decorType = VirtualScapeDecorType.CASTLE_BASE_CORNER;
break;
case 16102:
decorType = VirtualScapeDecorType.CASTLE_BASE_STRAIGHT;
break;
case 16103:
decorType = VirtualScapeDecorType.CASTLE_BASE_END;
break;
case 16201:
decorType = VirtualScapeDecorType.CASTLE_WALL_CORNER;
break;
case 16202:
decorType = VirtualScapeDecorType.CASTLE_WALL_STRAIGHT;
break;
case 16203:
decorType = VirtualScapeDecorType.CASTLE_WALL_END;
break;
case 16301:
decorType = VirtualScapeDecorType.CASTLE_BATTLEMENT;
break;
case 16401:
decorType = VirtualScapeDecorType.CASTLE_DOOR;
break;
case 16402:
decorType = VirtualScapeDecorType.CASTLE_LADDER;
break;
case 16403:
decorType = VirtualScapeDecorType.CASTLE_FLAG;
break;
case 16404:
decorType = VirtualScapeDecorType.CASTLE_ARCH;
break;
case 13001:
decorType = VirtualScapeDecorType.GLACIER_1;
break;
case 13003:
decorType = VirtualScapeDecorType.GLACIER_3;
break;
case 13004:
decorType = VirtualScapeDecorType.GLACIER_4;
break;
case 13006:
decorType = VirtualScapeDecorType.GLACIER_6;
break;
case 24014:
case 24015:
case 24016:
decorType = VirtualScapeDecorType.PALM_1;
break;
case 24002:
decorType = VirtualScapeDecorType.BRUSH_1;
break;
case 27001:
decorType = VirtualScapeDecorType.OUTCROP_1;
break;
case 27003:
decorType = VirtualScapeDecorType.OUTCROP_3;
break;
default:
if (tile.getType() > 14000 && tile.getType() < 14256) {
decorType = VirtualScapeDecorType.HIDDEN_GLYPH;
} else {
decorType = null;
}
}
return decorType;
}
private Direction getDirection(VirtualScapePiece tile) {
Direction direction;
switch (tile.getRotation()) {
case 0:
direction = Direction.EAST;
break;
case 1:
direction = Direction.SOUTH_EAST;
break;
case 2:
direction = Direction.SOUTH_WEST;
break;
case 3:
direction = Direction.WEST;
break;
case 4:
direction = Direction.NORTH_WEST;
break;
case 5:
direction = Direction.NORTH_EAST;
break;
default:
direction = null;
}
return direction;
}
}