117 lines
2.5 KiB
Java
Executable File
117 lines
2.5 KiB
Java
Executable File
package projectzombie.world;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import bdf.classes.IBdfClassManager;
|
|
import bdf.types.BdfArray;
|
|
import bdf.types.BdfNamedList;
|
|
import bdf.types.BdfObject;
|
|
import projectzombie.Main;
|
|
import projectzombie.display.Camera;
|
|
import projectzombie.display.DisplayLighting;
|
|
import projectzombie.entity.player.EntityPlayer;
|
|
import projectzombie.time.GameTimer;
|
|
import projectzombie.world.chunk.ChunkEventHandler;
|
|
import projectzombie.world.layer.Layer;
|
|
|
|
public class World implements IBdfClassManager
|
|
{
|
|
private Layer loaded;
|
|
private ArrayList<Layer> layers = new ArrayList<Layer>();
|
|
|
|
public void render(Camera camera) {
|
|
loaded.render(camera);
|
|
}
|
|
|
|
public void tickEntities() {
|
|
loaded.tickEntities();
|
|
}
|
|
|
|
public void spawnRandomEntities() {
|
|
loaded.spawnRandomEntities();
|
|
}
|
|
|
|
public void setLayer(int id)
|
|
{
|
|
ChunkEventHandler.loaded = false;
|
|
DisplayLighting.clearLighting();
|
|
DisplayLighting.setDirty();
|
|
|
|
this.loaded = layers.get(id);
|
|
}
|
|
|
|
public void removeLayer(int id) {
|
|
layers.remove(id);
|
|
}
|
|
|
|
public int addLayer(Layer layer) {
|
|
int id = layers.size();
|
|
layers.add(layer);
|
|
layer.id = id;
|
|
return id;
|
|
}
|
|
|
|
public Layer getLayer() {
|
|
return loaded;
|
|
}
|
|
|
|
@Override
|
|
public void BdfClassLoad(BdfObject bdf)
|
|
{
|
|
BdfNamedList nl = bdf.getNamedList();
|
|
|
|
// Get the layers and the loaded layer
|
|
BdfArray layers_bdf = nl.get("layers").getArray();
|
|
|
|
for(BdfObject o : layers_bdf) {
|
|
layers.add(new Layer(o));
|
|
}
|
|
|
|
int loaded_id = nl.get("loaded").getInteger();
|
|
setLayer(loaded_id);
|
|
|
|
// Load the player data
|
|
BdfArray players = nl.get("players").getArray();
|
|
Main.player = new EntityPlayer(players.get(0));
|
|
|
|
// Set the games time
|
|
GameTimer.setTime(nl.get("time").getLong());
|
|
}
|
|
|
|
@Override
|
|
public void BdfClassSave(BdfObject bdf)
|
|
{
|
|
BdfNamedList nl = bdf.getNamedList();
|
|
|
|
// Get the current loaded layer
|
|
int loaded_id = -1;
|
|
for(int i=0;i<layers.size();i++) {
|
|
if(layers.get(i) == loaded) {
|
|
loaded_id = i;
|
|
}
|
|
}
|
|
|
|
// Save layer data
|
|
BdfArray layers_bdf = new BdfArray();
|
|
nl.set("loaded", BdfObject.withInteger(loaded_id));
|
|
nl.set("layers", BdfObject.withArray(layers_bdf));
|
|
|
|
for(Layer l : layers) {
|
|
BdfObject o = new BdfObject();
|
|
l.BdfClassSave(o);
|
|
layers_bdf.add(o);
|
|
}
|
|
|
|
// Save player data
|
|
BdfArray players = new BdfArray();
|
|
nl.set("players", BdfObject.withArray(players));
|
|
|
|
BdfObject player = new BdfObject();
|
|
Main.player.BdfClassSave(player);
|
|
players.add(player);
|
|
|
|
// Save the game timer
|
|
nl.set("time", BdfObject.withLong(GameTimer.getTime()));
|
|
}
|
|
}
|