package de.sanguinik.model;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;
import javafx.scene.Group;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
/**
*
* This class provides the a maze for the game.
*
* @author marlene
*
*/
public class Maze{
private List<Rectangle> walls = new ArrayList<Rectangle>();
public Maze(String levelName) {
createMaze(levelName);
}
private void createMaze(String levelName) {
double[][] values = loadJSON(levelName);
Group g = new Group();
for(int i = 0; i<values.length; i++){
walls.add(new Rectangle(values[i][0], values[i][1], values[i][2], values[i][3]));
}
for (Rectangle r : walls) {
r.setFill(Color.BLUE);
}
g.getChildren().addAll(walls);
}
public List<Rectangle> getWalls() {
return walls;
}
public void addWalls(List<Rectangle> walls){
this.walls.addAll(walls);
}
private double[][] loadJSON(String levelName){
double[][] result = null;
JSONParser parser = new JSONParser();
try{
Object obj = parser.parse(new FileReader("./src/main/resources/de/sanguinik/model/"+levelName+".json"));
JSONObject jsonObject = (JSONObject) obj;
double[][] blockValues = new double[jsonObject.size()][4];
for(int i = 1; i <= jsonObject.size(); i++){
JSONObject block = (JSONObject) jsonObject.get("Block"+i);
long x = (Long) block.get("x");
blockValues[i-1][0] = (double) x;
long y = (Long) block.get("y");
blockValues[i-1][1] = (double) y;
long width = (Long) block.get("width");
blockValues[i-1][2] = (double) width;
long height = (Long) block.get("height");
blockValues[i-1][3] = (double) height;
}
result = blockValues;
} catch (IOException | ParseException e){
e.printStackTrace();
}
return result;
}
}