// BUG level editor x position bleibt ingame // TODO Completly rework colission // TODO Die when touching triangle // moveTilesBack() and High Score Tracking // No Unlimited Jumping int screenx = 0; // level generation for playable void generate_tiles() { stroke(0); for (int i = 0; i < level.length; i++ ) { if (level[i][4] == 0) { rect(level[i][0]-screenx, level[i][1], level[i][2], level[i][3]); } else { triangle(level[i][0]-level[i][2]/2 -screenx, level[i][1], level[i][0]+level[i][2]/2, level[i][1], level[i][0], level[i][1]-level[i][3]); } } } // Generate the tiles for Editor View (tiles that are deletable with mouse) void generate_editor_tiles() { for (int i = 0; i < 100; i++ ) { // rect(level[i][0]-screenx, level[i][1], level[i][2], level[i][3]); if(level[i][4] == 0) { if (drawRectWithMouseColission(level[i][0]-screenx, level[i][1], level[i][2], level[i][3])) { if (mousePressed && iseditor) { if (mouseButton == RIGHT) { level[i][0] = 0; level[i][1] = 0; level[i][2] = 0; level[i][3] = 0; level[i][4] = 0; } } } } else { if (drawTriangleWithMouseColission(level[i][0]-screenx, level[i][1], level[i][2], level[i][3])) { if (mousePressed && iseditor) { if (mouseButton == RIGHT) { level[i][0] = 0; level[i][1] = 0; level[i][2] = 0; level[i][3] = 0; level[i][4] = 0; } } } } } } void baseRect() { line(0, 0.850*height, width, 0.850*height); fill(255); } // Draws all the Background elements like sea and Beach void drawBackground() { color sky = color(94, 218, 252); color sand = color(235, 218, 174); color darksand = color(232, 177, 120); color sea = color(51, 169, 255); color seaend = color(146, 254, 255); color sun = color(247, 178, 2); // sky background(sky); // sea for(int y = 400; y < 650; y++){ float inter = map(y, 400, 650, 0, 1); color c = lerpColor(sea, seaend, inter); stroke(c); line(0, y, width, y); noStroke(); } // Beach fill(sand); quad(0, 650, width, 650, width, height, 0, height); // Player stands on this fill(darksand); quad(0, 0.850*height, width, 0.850*height, width, height, 0, height); //sun fill(sun); ellipse(130, 100, 70, 70); fill(0); randomSeed(0); drawPalm(100, 700); drawPalm(200, 700); drawPalm(300, 700); drawPalm(400, 700); } // No Clouds yet void drawCloud() { ellipse(224, 184, 220, 220); } // Draws a slightly randomised Palm void drawPalm(int startingpoint_x, int startingpoint_y) { fill(108, 88, 51); float randomnumber = int(random(10, 16)); float schwanken = int(random(-2, 2)); int offset = 8; PVector endpoint = new PVector(startingpoint_x, startingpoint_y - randomnumber * offset); for (int i = 0; i <= randomnumber; i++) { triangle(endpoint.x+i*schwanken, endpoint.y+i*offset, endpoint.x+10+i*schwanken, endpoint.y+10+i*offset, endpoint.x+20+i*schwanken, endpoint.y+i*offset); } fill(93, 133, 47); quad(endpoint.x+10, endpoint.y, endpoint.x - 12, endpoint.y - 8, endpoint.x - 50, endpoint.y + 20, endpoint.x - 5, endpoint.y + 12); quad(endpoint.x+10, endpoint.y, endpoint.x + 22, endpoint.y - 8, endpoint.x + 60, endpoint.y + 20, endpoint.x + 15, endpoint.y + 12); } //// This Handles loading and saving the level JSONArray json; // This saves the Current save to file int savetofile(String filename) { json = new JSONArray(); for (int i = 0; i < level.length; i++) { JSONArray mapsave = new JSONArray(); mapsave.setInt(0, level[i][0]); mapsave.setInt(1, level[i][1]); mapsave.setInt(2, level[i][2]); mapsave.setInt(3, level[i][3]); mapsave.setInt(4, level[i][4]); json.setJSONArray(i, mapsave); } saveJSONArray(json,"./saves/" + filename + ".json"); return 1; } boolean checkSaveFile(String filepath) { return new File(dataPath(filepath)).exists(); } // Check if there already is a safefile and load it if it is possible. If not load empty array int[][] loadJson(String jsonfile) { if (checkSaveFile("./saves/save.json")) { JSONArray values = loadJSONArray(jsonfile); // println(values.size()); int[][] arrayfromjson = new int[values.size()][values.size()]; for (int i = 0; i < values.size(); i++) { JSONArray jsontoarray = values.getJSONArray(i); int x = jsontoarray.getInt(0); int y = jsontoarray.getInt(1); int rectwidth = jsontoarray.getInt(2); int rectheight = jsontoarray.getInt(3); int isspike = jsontoarray.getInt(4); arrayfromjson[i][0] = x; arrayfromjson[i][1] = y; arrayfromjson[i][2] = rectwidth; arrayfromjson[i][3] = rectheight; arrayfromjson[i][4] = isspike; } return arrayfromjson; } else { int[][] arrayfromjson = new int[100][5]; return arrayfromjson; } }