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);
Globals.serverTerrainManager = new ServerTerrainManager(2000,50,100,0.0f,0);
SaveUtils.loadSave(Globals.currentSaveName);
Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
//TODO: set spawnpoint
//TODO: Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
//TODO: Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
// Globals.serverWorldData = ServerWorldData.createGameWorld(Globals.serverTerrainManager);
// Globals.dataCellManager = new DataCellManager(Globals.serverWorldData);
}
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 static boolean initCentralDBFile(String path){
String sanitizedPath = "." + FileUtils.sanitizeFilePath(path);
if(!FileUtils.checkDirectoryExists(sanitizedPath)){
if(!FileUtils.checkFileExists(sanitizedPath)){
return false;
}
String dbFilePath = sanitizedPath + "/central.db";

View File

@ -1,6 +1,9 @@
package electrosphere.game.server.saves;
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.util.FileUtils;
import java.util.LinkedList;
@ -24,7 +27,7 @@ public class SaveUtils {
public static boolean initSave(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName);
//check if exists
if(FileUtils.checkDirectoryExists(dirPath)){
if(FileUtils.checkFileExists(dirPath)){
return false;
}
//create dir
@ -46,8 +49,7 @@ public class SaveUtils {
return rVal;
}
public static boolean loadSave(String saveName){
public static boolean loadTerrainAndDB(String saveName){
String dirPath = deriveSaveDirectoryPath(saveName);
String dbFilePath = FileUtils.sanitizeFilePath(dirPath) + "/central.db";
Globals.dbController.connect(dbFilePath);
@ -55,8 +57,41 @@ public class SaveUtils {
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(){
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.engine.LoadingThread;
import electrosphere.game.server.saves.SaveUtils;
import electrosphere.main.Globals;
import electrosphere.main.Main;
import electrosphere.net.NetUtils;
@ -54,10 +55,42 @@ public class MenuTransition {
}
break;
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;
case WORLD_CREATE_MENU:
break;
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;
case CHARACTER_CREATE_MENU:
break;

View File

@ -51,17 +51,15 @@ public class MenuUtils {
List<String> saveNames = SaveUtils.getSaves();
int verticalPosition = 125;
//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;
}
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;
List<String> saveNames = SaveUtils.getSaves();
int verticalPosition = 125;
//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, "SAVE", true));
rVal.addOption(WidgetUtils.createVerticallyAlignedMinSizeTextBoxFromCharCount(40, 40, screenTop - 200, "CANCEL", true));
return rVal;
}

View File

@ -199,7 +199,7 @@ public class FileUtils {
* @param directoryName
* @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));
if(targetDir.exists()){
return true;
@ -208,6 +208,7 @@ public class FileUtils {
}
}
/**
* Trys to create a directory
* @param directoryName