export many layers
- remark : wrong merge code ( dverged on two latptops .. ) possible loss
This commit is contained in:
@@ -9,13 +9,20 @@ import java.io.*;
|
||||
|
||||
import static org.artisanlogiciel.games.minetest.Material.GRASS_MATERIAL;
|
||||
|
||||
/**
|
||||
* export maze layers as a WorldEdit file
|
||||
*
|
||||
* export only one layer... ( LabyModel ... )
|
||||
* import many layers ( LabyLayers )
|
||||
*/
|
||||
|
||||
public class MazePersistWorldEdit {
|
||||
|
||||
private LabyModel model;
|
||||
private LabyLayers mLayers;
|
||||
private WorlEditGenerator generator;
|
||||
|
||||
public MazePersistWorldEdit(LabyModel model) {
|
||||
this.model = model;
|
||||
public MazePersistWorldEdit(LabyLayers pLayer) {
|
||||
this.mLayers = pLayer;
|
||||
}
|
||||
|
||||
public MazePersistWorldEdit() {
|
||||
@@ -30,13 +37,13 @@ public class MazePersistWorldEdit {
|
||||
}
|
||||
}
|
||||
|
||||
private Node newNode(int x, int y, String material)
|
||||
private Node newNode(int x, int y, int layer, String material)
|
||||
{
|
||||
// x,y,z => x,z,y in minetest
|
||||
return new Node(x,0, y, Material.getMaterialByName(material));
|
||||
return new Node(x,layer, y, Material.getMaterialByName(material));
|
||||
}
|
||||
|
||||
void addWalls(int pX, int pY) {
|
||||
void addWalls(int pX, int pY, int pLayer, LabyModel model) {
|
||||
short walls = model.getWalls(pX, pY);
|
||||
short wdrawn = 0;
|
||||
// todo
|
||||
@@ -46,6 +53,7 @@ public class MazePersistWorldEdit {
|
||||
int oy = 0;
|
||||
int z = 0;
|
||||
|
||||
// HARDCODED !
|
||||
String material = GRASS_MATERIAL;
|
||||
|
||||
int x = ox + (pX * w);
|
||||
@@ -55,7 +63,7 @@ public class MazePersistWorldEdit {
|
||||
//if ((pY == 0) && LabyModel.isFlagSet(walls, Brick.UP)) {
|
||||
if (LabyModel.isFlagSet(walls, Brick.UP)) {
|
||||
for ( int dx = 0; dx < w; dx++) {
|
||||
addNode(newNode(x + dx, y,material));
|
||||
addNode(newNode(x + dx, y, pLayer, material));
|
||||
}
|
||||
wdrawn |= Brick.UP;
|
||||
}
|
||||
@@ -78,7 +86,7 @@ public class MazePersistWorldEdit {
|
||||
//if ((pX == 0) && LabyModel.isFlagSet(walls, Brick.LEFT)) {
|
||||
if (LabyModel.isFlagSet(walls, Brick.LEFT)) {
|
||||
for (int dy = 0; dy < h; dy ++) {
|
||||
addNode(newNode(x, y + dy, material));
|
||||
addNode(newNode(x, y + dy, pLayer, material));
|
||||
}
|
||||
wdrawn |= Brick.LEFT;
|
||||
}
|
||||
@@ -96,16 +104,22 @@ public class MazePersistWorldEdit {
|
||||
// first raw format, not smart.
|
||||
DataOutputStream dataOut = new DataOutputStream(pOut);
|
||||
dataOut.flush();
|
||||
for (int y = 0; y < model.getHeight(); y++) {
|
||||
for (int x = 0; x < model.getWidth(); x++) {
|
||||
addWalls(x,y);
|
||||
for (int layer = mLayers.getMin(); layer <= mLayers.getMax(); layer ++) {
|
||||
LabyModel model = mLayers.getLayer(layer);
|
||||
if ( model != null )
|
||||
{
|
||||
for (int y = 0; y < model.getHeight(); y++) {
|
||||
for (int x = 0; x < model.getWidth(); x++) {
|
||||
addWalls(x, y, layer, model);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
generator.writeEnd();
|
||||
dataOut.write(builder.toString().getBytes());
|
||||
dataOut.flush();
|
||||
} else {
|
||||
throw new IOException("Format " + pFormat + " Not yet implemented.");
|
||||
throw new IOException("Format " + pFormat + " Not supported or Not yet implemented.");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -127,7 +141,7 @@ public class MazePersistWorldEdit {
|
||||
for (int level = world.getMin(); level <= world.getMax(); level++) {
|
||||
Slice ground = world.getSlice(level);
|
||||
if (ground != null) {
|
||||
model = getModelFromSlice(ground);
|
||||
LabyModel model = getModelFromSlice(ground);
|
||||
model.setOnewaywall(true);
|
||||
layers.addLabyModel(level, model);
|
||||
System.out.println(model);
|
||||
@@ -176,7 +190,7 @@ public class MazePersistWorldEdit {
|
||||
}
|
||||
}
|
||||
}
|
||||
model = new LabyModel(width,height, t);
|
||||
LabyModel model = new LabyModel(width,height, t);
|
||||
return model;
|
||||
}
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user