Add user settings

This commit is contained in:
austin 2021-08-07 17:35:27 -04:00
parent c663074616
commit 6bbcc4af50
4 changed files with 154 additions and 1 deletions

View File

@ -0,0 +1,16 @@
{
"gameplayGenerateWorld" : false,
"displayWidth" : 1920,
"displayHeight" : 1080,
"graphicsFOV" : 90.0,
"graphicsPerformanceEnableVSync" : false,
"graphicsPerformanceDrawShadows" : true,
"graphicsDebugDrawCollisionSpheres" : false,
"graphicsDebugDrawPhysicsObjects" : false,
"graphicsDebugDrawMovementVectors" : false
}

View File

@ -0,0 +1,128 @@
package electrosphere.game.config;
import electrosphere.main.Globals;
import electrosphere.util.FileLoadingUtils;
/**
*
* @author amaterasu
*/
public class UserSettings {
//
//Gameplay settings
//
boolean gameplayGenerateWorld;
//
//Display settings
//
int displayWidth;
int displayHeight;
//
//Graphics settings
//
//general
float graphicsFOV;
//performance
boolean graphicsPerformanceEnableVSync;
boolean graphicsPerformanceDrawShadows;
//debug
boolean graphicsDebugDrawCollisionSpheres;
boolean graphicsDebugDrawPhysicsObjects;
boolean graphicsDebugDrawMovementVectors;
public boolean gameplayGenerateWorld() {
return gameplayGenerateWorld;
}
public int getDisplayWidth() {
return displayWidth;
}
public int getDisplayHeight() {
return displayHeight;
}
public float getGraphicsFOV() {
return graphicsFOV;
}
public boolean graphicsPerformanceEnableVSync() {
return graphicsPerformanceEnableVSync;
}
public boolean graphicsPerformanceDrawShadows() {
return graphicsPerformanceDrawShadows;
}
public boolean graphicsDebugDrawCollisionSpheres() {
return graphicsDebugDrawCollisionSpheres;
}
public boolean graphicsDebugDrawPhysicsObjects() {
return graphicsDebugDrawPhysicsObjects;
}
public boolean graphicsDebugDrawMovementVectors() {
return graphicsDebugDrawMovementVectors;
}
static UserSettings getDefault(){
UserSettings rVal = new UserSettings();
//display settings
rVal.displayHeight = 1080;
rVal.displayWidth = 1920;
//gameplay settings
rVal.gameplayGenerateWorld = true;
//graphics settings
rVal.graphicsDebugDrawCollisionSpheres = false;
rVal.graphicsDebugDrawMovementVectors = false;
rVal.graphicsDebugDrawPhysicsObjects = false;
rVal.graphicsFOV = 90.0f;
rVal.graphicsPerformanceDrawShadows = true;
rVal.graphicsPerformanceEnableVSync = true;
return rVal;
}
public static void loadUserSettings(){
Globals.userSettings = FileLoadingUtils.loadObjectFromAssetPath("/Config/settings.json", UserSettings.class);
if(Globals.userSettings == null){
Globals.userSettings = getDefault();
}
Globals.WINDOW_WIDTH = Globals.userSettings.displayWidth;
Globals.WINDOW_HEIGHT = Globals.userSettings.displayHeight;
Globals.FOV = Globals.userSettings.graphicsFOV;
}
}

View File

@ -18,6 +18,7 @@ import electrosphere.game.client.terrain.manager.ClientTerrainManager;
import electrosphere.game.client.world.ClientWorldData;
import electrosphere.game.collision.CommonWorldData;
import electrosphere.engine.LoadingThread;
import electrosphere.game.config.UserSettings;
import electrosphere.game.server.ai.AIManager;
import electrosphere.game.server.character.Character;
import electrosphere.game.config.creature.type.model.CreatureTypeMap;
@ -67,7 +68,11 @@ import org.lwjgl.glfw.GLFWErrorCallback;
* @author amaterasu
*/
public class Globals {
//
//Top level user settings object
//
public static UserSettings userSettings;
//
//Rendering Engine

View File

@ -15,6 +15,7 @@ import electrosphere.entity.types.item.ItemUtils;
import electrosphere.entity.types.attach.AttachUtils;
import electrosphere.engine.LoadingThread;
import electrosphere.game.client.ClientFunctions;
import electrosphere.game.config.UserSettings;
import electrosphere.game.state.MicroSimulation;
import electrosphere.logger.LoggerInterface;
import electrosphere.renderer.RenderingEngine;
@ -100,6 +101,9 @@ public class Main {
//
//
//load user settings
UserSettings.loadUserSettings();
//initialize logging interfaces
LoggerInterface.initLoggers();