Create basic world stuff

This commit is contained in:
austin 2021-10-24 18:41:45 -04:00
parent 14d096230a
commit 3b31303078
7 changed files with 82 additions and 13 deletions

1
saves/default/world.json Normal file
View File

@ -0,0 +1 @@
{"type":"GAME_WORLD","worldMinPoint":{"x":0.0,"y":0.0,"z":0.0},"worldMaxPoint":{"x":200000.0,"y":0.0,"z":200000.0},"worldSizeDiscrete":2000,"dynamicInterpolationRatio":100,"randomDampener":0.0,"isArena":false}

View File

@ -117,11 +117,12 @@ public class LoadingThread extends Thread {
//TODO: Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,randomDampener,0); //TODO: Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,randomDampener,0);
Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,0.0f,0); Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,0.0f,0);
SaveUtils.loadSave(Globals.currentSaveName); SaveUtils.loadSave(Globals.currentSaveName);
Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
//TODO: set spawnpoint //TODO: set spawnpoint
//TODO: Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager); //TODO: Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
//TODO: Globals.dataCellManager = new DataCellManager(Globals.serverWorldData); //TODO: Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager); // Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
Globals.dataCellManager = new DataCellManager(Globals.serverWorldData); // Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
} }
LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT); LoggerInterface.loggerEngine.INFO("run server: " + Globals.RUN_SERVER + " run client: " + Globals.RUN_CLIENT);

View File

@ -13,7 +13,7 @@ import java.util.logging.Logger;
public class DatabaseUtils { public class DatabaseUtils {
public static boolean initCentralDBFile(String path){ public static boolean initCentralDBFile(String path){
String sanitizedPath = "." + FileUtils.sanitizeFilePath(path); String sanitizedPath = "." + FileUtils.sanitizeFilePath(path);
if(!FileUtils.checkDirectoryExists(sanitizedPath)){ if(!FileUtils.checkFileExists(sanitizedPath)){
return false; return false;
} }
String dbFilePath = sanitizedPath + "/central.db"; String dbFilePath = sanitizedPath + "/central.db";

View File

@ -1,6 +1,9 @@
package electrosphere.game.server.saves; package electrosphere.game.server.saves;
import electrosphere.game.server.db.DatabaseUtils; import electrosphere.game.server.db.DatabaseUtils;
import electrosphere.game.server.terrain.manager.ServerTerrainManager;
import electrosphere.game.server.world.ServerWorldData;
import electrosphere.game.server.world.datacell.DataCellManager;
import electrosphere.main.Globals; import electrosphere.main.Globals;
import electrosphere.util.FileUtils; import electrosphere.util.FileUtils;
import java.util.LinkedList; import java.util.LinkedList;
@ -24,7 +27,7 @@ public class SaveUtils {
public static boolean initSave(String saveName){ public static boolean initSave(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName); String dirPath = deriveSaveDirectoryPath(saveName);
//check if exists //check if exists
if(FileUtils.checkDirectoryExists(dirPath)){ if(FileUtils.checkFileExists(dirPath)){
return false; return false;
} }
//create dir //create dir
@ -46,8 +49,7 @@ public class SaveUtils {
return rVal; return rVal;
} }
public static boolean loadTerrainAndDB(String saveName){
public static boolean loadSave(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName); String dirPath = deriveSaveDirectoryPath(saveName);
String dbFilePath = FileUtils.sanitizeFilePath(dirPath) + "/central.db"; String dbFilePath = FileUtils.sanitizeFilePath(dirPath) + "/central.db";
Globals.dbController.connect(dbFilePath); Globals.dbController.connect(dbFilePath);
@ -55,8 +57,41 @@ public class SaveUtils {
return true; return true;
} }
public static boolean loadSave(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName);
String dbFilePath = FileUtils.sanitizeFilePath(dirPath) + "/central.db";
Globals.dbController.connect(dbFilePath);
Globals.serverTerrainManager.load(saveName);
Globals.serverWorldData = FileUtils.loadObjectFromSavePath(saveName, "world.json", ServerWorldData.class);
return true;
}
public static List<String> getSaves(){ public static List<String> getSaves(){
return FileUtils.listDirectory("./saves"); return FileUtils.listDirectory("./saves");
} }
public static boolean worldHasSave(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName) + "/world.json";
System.out.println("Exists? " + dirPath);
return FileUtils.checkFileExists(dirPath);
}
public static boolean loadTerrainAndCreateWorldData(){
Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,0.0f,0);
SaveUtils.loadTerrainAndDB(Globals.currentSaveName);
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
return true;
}
public static boolean saveWorldDataToSave(String saveName){
/*
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
//TODO: Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
*/
String dirPath = deriveSaveDirectoryPath(saveName);
FileUtils.serializeObjectToFilePath(dirPath + "/world.json", Globals.serverWorldData);
return true;
}
} }

View File

@ -2,6 +2,7 @@ package electrosphere.menu;
import electrosphere.controls.ControlHandler; import electrosphere.controls.ControlHandler;
import electrosphere.engine.LoadingThread; import electrosphere.engine.LoadingThread;
import electrosphere.game.server.saves.SaveUtils;
import electrosphere.main.Globals; import electrosphere.main.Globals;
import electrosphere.main.Main; import electrosphere.main.Main;
import electrosphere.net.NetUtils; import electrosphere.net.NetUtils;
@ -54,10 +55,42 @@ public class MenuTransition {
} }
break; break;
case WORLD_SELECT_MENU: case WORLD_SELECT_MENU:
switch(((TextBox)m.getCurrentOption()).getText()){
case "CREATE WORLD":
m.dispose();
Globals.currentMenu = MenuUtils.createWorldCreationMenu();
break;
default:
String worldName = ((TextBox)m.getCurrentOption()).getText();
m.dispose();
//check if has save or not
if(SaveUtils.worldHasSave(worldName.toLowerCase())){
Globals.loadingThread = new LoadingThread(LoadingThread.LOAD_MAIN_GAME);
Globals.RUN_CLIENT = true;
Globals.RUN_SERVER = true;
Globals.loadingThread.start();
} else {
Globals.currentSaveName = worldName.toLowerCase();
SaveUtils.loadTerrainAndCreateWorldData();
Globals.currentMenu = MenuUtils.createSaveCreationMenu();
}
break;
}
break; break;
case WORLD_CREATE_MENU: case WORLD_CREATE_MENU:
break; break;
case SAVE_CREATE_MENU: case SAVE_CREATE_MENU:
switch(((TextBox)m.getCurrentOption()).getText()){
case "SAVE":
m.dispose();
SaveUtils.saveWorldDataToSave(Globals.currentSaveName);
Globals.currentMenu = MenuUtils.createWorldSelectMenu();
break;
case "CANCEL":
m.dispose();
Globals.currentMenu = MenuUtils.createWorldSelectMenu();
break;
}
break; break;
case CHARACTER_CREATE_MENU: case CHARACTER_CREATE_MENU:
break; break;

View File

@ -51,17 +51,15 @@ public class MenuUtils {
List<String> saveNames = SaveUtils.getSaves(); List<String> saveNames = SaveUtils.getSaves();
int verticalPosition = 125; int verticalPosition = 125;
//TODO: add text input to name world //TODO: add text input to name world
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition, "CREATE WORLD", true)); rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "CREATE WORLD", true));
return rVal; return rVal;
} }
public static Menu createSaveCreationMenu(){ public static Menu createSaveCreationMenu(){
Menu rVal = new Menu(MenuType.WORLD_CREATE_MENU); Menu rVal = new Menu(MenuType.SAVE_CREATE_MENU);
int screenTop = Globals.WINDOW_HEIGHT - 150; int screenTop = Globals.WINDOW_HEIGHT - 150;
List<String> saveNames = SaveUtils.getSaves(); rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 125, "SAVE", true));
int verticalPosition = 125; rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "CANCEL", true));
//TODO: add text input to name world
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - verticalPosition, "CREATE WORLD", true));
return rVal; return rVal;
} }

View File

@ -199,7 +199,7 @@ public class FileUtils {
* @param directoryName * @param directoryName
* @return true if directory exists, false otherwise * @return true if directory exists, false otherwise
*/ */
public static boolean checkDirectoryExists(String directoryName){ public static boolean checkFileExists(String directoryName){
File targetDir = new File(sanitizeFilePath(directoryName)); File targetDir = new File(sanitizeFilePath(directoryName));
if(targetDir.exists()){ if(targetDir.exists()){
return true; return true;
@ -208,6 +208,7 @@ public class FileUtils {
} }
} }
/** /**
* Trys to create a directory * Trys to create a directory
* @param directoryName * @param directoryName