ProjectZombie/src/projectzombie/world/World.java

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.lighting.TileLighting;
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;
TileLighting.clearLighting();
TileLighting.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()));
}
}