/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.arretados.leveleditor;
import com.arretados.leveleditor.entities.Box;
import com.arretados.leveleditor.entities.BoxItem;
import com.arretados.leveleditor.entities.Breakable;
import com.arretados.leveleditor.entities.Coin;
import com.arretados.leveleditor.entities.Flag;
import com.arretados.leveleditor.entities.Fluid;
import com.arretados.leveleditor.entities.Hole;
import com.arretados.leveleditor.entities.Liana;
import com.arretados.leveleditor.entities.OneWayWall;
import com.arretados.leveleditor.entities.Player;
import com.arretados.leveleditor.entities.Pulley;
import com.arretados.leveleditor.entities.Spike;
import com.arretados.leveleditor.entities.TreeLog;
import com.arretados.leveleditor.entities.layer.Grass;
import com.arretados.leveleditor.entities.layer.Shrub;
import com.arretados.leveleditor.entities.layer.Tree;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
/**
*
* @author Bruno
*/
public class LevelLoader {
private JSONObject jsonLevel;
private GameCanvas gc;
private LevelEditorView editorView;
LevelLoader(JSONObject json, GameCanvas level, LevelEditorView levelEditor) {
this.jsonLevel = json;
this.gc = level;
this.editorView = levelEditor;
}
public void parseJson(){
gc.clearObjectsList();
int groundHeight = gc.getGroundHeight();
long jsonTotalHeight = (Long) jsonLevel.get("height");
long jsonTotalWidth = (Long) jsonLevel.get("width");
editorView.setCanvasDimensions(jsonTotalWidth, jsonTotalHeight);
float yOffset = Utils.convertPixelToMeter(jsonTotalHeight - groundHeight);
JSONArray jArray = (JSONArray) jsonLevel.get("entities");
JSONObject jObj;
for (int i = 0; i < jArray.size(); i++){
jObj = (JSONObject) jArray.get(i);
jObj.put("y", yOffset - (Double)jObj.get("y"));
if ( String.valueOf(jObj.get("type")).equals(DrawMode.BOX.toString()) ){
//BOX
gc.addEntities(new Box(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.BREAKABLE.toString())){
//BREAKABLE
gc.addEntities(new Breakable(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.COIN.toString())){
//COIN
gc.addEntities(new Coin(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.FLAG.toString())){
//FLAG
gc.setFlag(new Flag(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.FLUID.toString())){
//FLUID
gc.addEntities(new Fluid(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.LIANA.toString())){
//LIANA
gc.addEntities(new Liana(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.ONEWAY_WALL.toString())){
//ONEWAY_WALL
gc.addEntities(new OneWayWall(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.PLAYER.toString())){
//PLAYER
gc.addEntities(new Player(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.PULLEY.toString())){
//PULLEY
gc.addEntities(new Pulley(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.GRASS.toString())){
//GRASS
gc.addEntities(new Grass(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.SHRUB.toString())){
//SHRUB
gc.addEntities(new Shrub(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.SPIKE.toString())){
//SHRUB
gc.addEntities(new Spike(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.TREE.toString())){
//TREE
gc.addEntities(new Tree(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.HOLE.toString())) {
// HOLE
gc.addEntities(new Hole(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.BOX_ITEM.toString())) {
// BOX ITEM
gc.addEntities(new BoxItem(jObj));
}else if (String.valueOf(jObj.get("type")).equals(DrawMode.TREE_LOG.toString())) {
// TREE LOG
gc.addEntities(new TreeLog(jObj));
}else {
System.out.println("Not Found: " + jObj.get("type"));
}
}
}
}