Skip to content
Snippets Groups Projects
Commit 95d61bf1 authored by Max Wittig's avatar Max Wittig
Browse files

levelpacks are now read from jar and from user dir

parent aa36a5a5
No related branches found
No related tags found
No related merge requests found
package de.bricked.game.levels; package de.bricked.game.levels;
import java.io.File; import de.bricked.utils.FileUtils;
import tools.PathUtils;
import java.io.*;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator; import java.util.Comparator;
public class LevelPackHandler public class LevelPackHandler
{ {
private static String directory = "src/de/bricked/resources/levelpacks/"; private static final String directory = "/de/bricked/resources/levelpacks/";
private static final String DEFAULT_PACKAGE_NAME = "default"; private static final String DEFAULT_PACKAGE_NAME = "default";
private static ArrayList<LevelPack> sort(ArrayList<LevelPack> levelPackArrayList) private static ArrayList<LevelPack> sort(ArrayList<LevelPack> levelPackArrayList)
...@@ -40,18 +46,60 @@ public class LevelPackHandler ...@@ -40,18 +46,60 @@ public class LevelPackHandler
public static ArrayList<LevelPack> getAllLevelPacks() public static ArrayList<LevelPack> getAllLevelPacks()
{ {
ArrayList<LevelPack> levelPacks = new ArrayList<>(); ArrayList<LevelPack> levelPacks = new ArrayList<>();
for(File currentFile : getListOfFiles()) for(String currentFileContent : getFileContent())
{ {
LevelPackReader levelPackReader = new LevelPackReader(currentFile.getName()); LevelPackParser levelPackParser = new LevelPackParser(currentFileContent);
levelPacks.add(levelPackReader.read()); levelPacks.add(levelPackParser.read());
} }
return sort(levelPacks); return sort(levelPacks);
} }
private static File[] getListOfFiles() private static ArrayList<String> getFilesFromJar()
{
ArrayList<String> stringArrayList = new ArrayList<>();
try
{
String text = FileUtils.getFileContentFromJar(directory+"files.txt");
String[] filenamesArray = text.split(" ");
for(String filename : filenamesArray)
{
stringArrayList.add(FileUtils.getFileContentFromJar(directory + filename));
}
}
catch (Exception e)
{
System.out.println(e);
}
return stringArrayList;
}
private static ArrayList<String> getFileContentFromUserDir()
{
ArrayList<String> stringContent = new ArrayList<>();
File folder = new File(PathUtils.getOSindependentPath().toFile(), "deadspaghetti/bricked/levelpacks/");
ArrayList<File> fileArrayList = new ArrayList<>(Arrays.asList(folder.listFiles()));
for(File file : fileArrayList)
{
try
{
stringContent.add(new String(Files.readAllBytes(FileSystems.getDefault().getPath(file.getPath()))));
}
catch (IOException e)
{
e.printStackTrace();
}
}
return stringContent;
}
private static ArrayList<String> getFileContent()
{ {
File folder = new File(directory); ArrayList<String> fileArrayList = new ArrayList<>();
return folder.listFiles(); fileArrayList.addAll(getFileContentFromUserDir());
fileArrayList.addAll(getFilesFromJar());
return fileArrayList;
} }
} }
...@@ -4,27 +4,20 @@ import com.google.gson.JsonArray; ...@@ -4,27 +4,20 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import de.bricked.game.paddle.PaddleSize; import de.bricked.game.paddle.PaddleSize;
import logger.LogLevel; import logger.LogLevel;
import logger.Logger; import logger.Logger;
import java.io.File;
import java.nio.file.FileSystems;
import java.nio.file.Files;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
public class LevelPackReader public class LevelPackParser
{ {
private String filename; private String fileContents;
private String directory;
public LevelPackReader(String filename) public LevelPackParser(String fileContents)
{ {
this.directory = "src/de/bricked/resources/levelpacks/"; this.fileContents = fileContents;
this.filename = filename;
} }
private ArrayList<Level> parseLevels(JsonArray levelPackArray) private ArrayList<Level> parseLevels(JsonArray levelPackArray)
...@@ -82,8 +75,7 @@ public class LevelPackReader ...@@ -82,8 +75,7 @@ public class LevelPackReader
{ {
try try
{ {
String jsonContent = new String(Files.readAllBytes(FileSystems.getDefault().getPath(directory + filename))); JsonObject root = new JsonParser().parse(fileContents).getAsJsonObject();
JsonObject root = new JsonParser().parse(jsonContent).getAsJsonObject();
String packageName = root.get("name").getAsString(); String packageName = root.get("name").getAsString();
String packageAuthor = root.get("author").getAsString(); String packageAuthor = root.get("author").getAsString();
String packageVersion = root.get("version").getAsString(); String packageVersion = root.get("version").getAsString();
......
default.json Eimer.json
\ No newline at end of file
package de.bricked.utils;
import de.bricked.game.levels.LevelPackHandler;
import logger.LogLevel;
import logger.Logger;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class FileUtils
{
public static String getFileContentFromJar(String path)
{
try
{
InputStream inputStream = FileUtils.class.getResourceAsStream(path);
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(bufferedInputStream));
String line = "";
StringBuilder text = new StringBuilder();
while (line != null)
{
line = bufferedReader.readLine();
if (line != null)
text.append(line);
}
return text.toString();
}
catch (Exception e)
{
Logger.log(LogLevel.ERROR, Logger.exceptionToString(e));
}
return null;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment