// private ZipOutputStream out;
private boolean loadSection(int sectionX, int sectionY, int height,
World world, int bigX, int bigY) {
// Logging.debug(1);
Sector s = null;
try {
String filename = "h" + height + "x" + sectionX + "y" + sectionY;
ZipEntry e = tileArchive.getEntry(filename);
if (e == null) {
// throw new Exception("Missing tile: " + filename);
System.out.println("Missing tile: " + filename + " ex: "
+ (bigX + 10) + ", " + (bigY + 10));
return false;
}
ByteBuffer data = DataConversions
.streamToBuffer(new BufferedInputStream(tileArchive
.getInputStream(e)));
s = Sector.unpack(data);
// s = modifyAndSave(filename, s, bigX, bigY);
} catch (Exception e) {
Logger.error(e);
}
// Logging.debug(2);
for (int y = 0; y < Sector.HEIGHT; y++) {
for (int x = 0; x < Sector.WIDTH; x++) {
int bx = bigX + x;
int by = bigY + y;
if (!world.withinWorld(bx, by)) {
continue;
}
MutableTileValue t = new MutableTileValue(world.getTileValue(
bx, by));
t.overlay = s.getTile(x, y).groundOverlay;
t.diagWallVal = s.getTile(x, y).diagonalWalls;
t.horizontalWallVal = s.getTile(x, y).horizontalWall;
t.verticalWallVal = s.getTile(x, y).verticalWall;
t.elevation = s.getTile(x, y).groundElevation;
/** start of shit **/
if ((s.getTile(x, y).groundOverlay & 0xff) == 250) {
s.getTile(x, y).groundOverlay = (byte) 2;
}
/** break in shit **/
int groundOverlay = s.getTile(x, y).groundOverlay & 0xFF;
if (groundOverlay > 0
&& EntityHandler.getTileDef(groundOverlay - 1)
.getObjectType() != 0) {
t.mapValue |= 0x40; // 64
}
int verticalWall = s.getTile(x, y).verticalWall & 0xFF;
if (verticalWall > 0
&& EntityHandler.getDoorDef(verticalWall - 1)
.getUnknown() == 0
&& EntityHandler.getDoorDef(verticalWall - 1)
.getDoorType() != 0) {
t.mapValue |= 1; // 1
MutableTileValue t1 = new MutableTileValue(
world.getTileValue(bx, by - 1));
t1.mapValue |= 4; // 4
world.setTileValue(bx, by - 1, t1.toTileValue());
}
int horizontalWall = s.getTile(x, y).horizontalWall & 0xFF;
if (horizontalWall > 0
&& EntityHandler.getDoorDef(horizontalWall - 1)
.getUnknown() == 0
&& EntityHandler.getDoorDef(horizontalWall - 1)
.getDoorType() != 0) {
t.mapValue |= 2; // 2
MutableTileValue t1 = new MutableTileValue(
world.getTileValue(bx - 1, by));
t1.mapValue |= 8;
world.setTileValue(bx - 1, by, t1.toTileValue());
}
int diagonalWalls = s.getTile(x, y).diagonalWalls;
if (diagonalWalls > 0
&& diagonalWalls < 12000
&& EntityHandler.getDoorDef(diagonalWalls - 1)
.getUnknown() == 0
&& EntityHandler.getDoorDef(diagonalWalls - 1)