Localconfig generation and updates

This commit is contained in:
satellite 2021-04-05 22:26:46 -04:00
parent a87fcbed3a
commit c265b71e8b
5 changed files with 95 additions and 9 deletions

1
.gitignore vendored
View File

@ -1,3 +1,4 @@
/target/
/src/main/resources/Config/terrain.json
/src/main/resources/Config/localconfig.json

View File

@ -1,5 +1,15 @@
package electrosphere.cfg;
import com.google.gson.Gson;
import electrosphere.main.Globals;
import electrosphere.main.Main;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author satellite
@ -7,11 +17,21 @@ package electrosphere.cfg;
//Main configuration file for application
public class MainConfig {
//localconfig.json version
public static final int CONFIG_FILE_VERSION = 2;
//physical file version
public int version;
//Main directory of project resources
public String projectMainDirectory;
//
//Networking related
//
public boolean runServer;
public boolean runRenderer;
//
@ -22,4 +42,55 @@ public class MainConfig {
public boolean loadTerrain;
//If load terrain, where from?
public String loadTerrainLocation;
public static void generateMainConfig(){
System.out.println("localconfig.json either doesn't exist or is out of date");
System.out.println("Would you like to generate a new one?(1-y/0-n)");
Scanner scan = new Scanner(System.in);
if(scan.nextInt() == 0){
System.err.println("Bad localconfig.json");
System.exit(1);
}
Globals.mainConfig = new MainConfig();
System.out.println("What is the main resources directory?");
System.out.println("(Suggested: \"" + Main.class.getResource("/").getPath() + "\"");
Globals.mainConfig.projectMainDirectory = scan.next();
System.out.println("Where would you like to save quickload terrain to?");
System.out.println("(Suggested: \"" + Globals.mainConfig.projectMainDirectory + "/src/main/resources/Config/terrain.json" + "\"");
Globals.mainConfig.loadTerrainLocation = scan.next();
System.out.println("Would you like to load terrain from file?(1-y/0-n)");
if(scan.nextInt() == 1){
Globals.mainConfig.loadTerrain = true;
} else {
Globals.mainConfig.loadTerrain = false;
}
System.out.println("Would you like to run the server?(1-y/0-n)");
if(scan.nextInt() == 1){
Globals.mainConfig.runServer = true;
} else {
Globals.mainConfig.runServer = false;
}
System.out.println("Would you like to run the renderer?(1-y/0-n)");
if(scan.nextInt() == 1){
Globals.mainConfig.runRenderer = true;
} else {
Globals.mainConfig.runRenderer = false;
}
Globals.mainConfig.version = MainConfig.CONFIG_FILE_VERSION;
System.out.println("Saving config to " + Globals.mainConfig.projectMainDirectory + "/src/main/resources/Config/localconfig.json");
Gson gson = new Gson();
try {
Files.write(
new File(Globals.mainConfig.projectMainDirectory + "/src/main/resources/Config/localconfig.json").toPath(),
gson.toJson(Globals.mainConfig).getBytes()
);
} catch (IOException ex) {
System.err.println("Failed to save!!");
ex.printStackTrace();
System.exit(1);
}
System.out.println("Saved");
}
}

View File

@ -401,4 +401,14 @@ public class Main {
Globals.cellManager.invalidateAllCells();
}
public static void initServer(){
}
public static void initClient(){
}
}

View File

@ -141,8 +141,16 @@ public class Utilities {
public static void loadMainConfig(){
Gson gson = new Gson();
String configRaw = Utilities.readFileToString(new File(Main.class.getResource("/Config/localconfig.json").getPath()));
Globals.mainConfig = gson.fromJson(configRaw, MainConfig.class);
if(Files.exists(new File(Main.class.getResource("/Config/localconfig.json").getPath()).toPath())){
Gson gson = new Gson();
String configRaw = Utilities.readFileToString(new File(Main.class.getResource("/Config/localconfig.json").getPath()));
Globals.mainConfig = gson.fromJson(configRaw, MainConfig.class);
if(Globals.mainConfig.version != MainConfig.CONFIG_FILE_VERSION){
//dynamically generate config and save it
MainConfig.generateMainConfig();
}
} else {
MainConfig.generateMainConfig();
}
}
}

View File

@ -1,5 +1 @@
{
"projectMainDirectory" : "/Users/satellite/p/Renderer/src/main/resources/Config",
"loadTerrain" : true,
"loadTerrainLocation" : "/Users/satellite/p/Renderer/src/main/resources/Config/terrain.json"
}
{"version":2,"projectMainDirectory":"/Users/satellite/p/Renderer","runServer":true,"runRenderer":true,"loadTerrain":true,"loadTerrainLocation":"/Users/satellite/p/Renderer/src/main/resources/Config/terrain.json"}