Switched to binary preference file for desktop

This commit is contained in:
Anuken
2018-06-15 12:13:52 -04:00
parent ba67c01dd0
commit 604f315a83
3 changed files with 63 additions and 8 deletions

View File

@@ -26,7 +26,7 @@ public abstract class BulletType extends BaseBulletType<Bullet> implements Conte
/**Whether to sync this bullet to clients.*/ /**Whether to sync this bullet to clients.*/
public boolean syncable; public boolean syncable;
/**Whether this bullet type collides with tiles.*/ /**Whether this bullet type collides with tiles.*/
public boolean collidesTiles; public boolean collidesTiles = true;
public BulletType(float speed, float damage){ public BulletType(float speed, float damage){
this.id = lastid ++; this.id = lastid ++;

View File

@@ -1,11 +1,15 @@
package io.anuke.mindustry.desktop; package io.anuke.mindustry.desktop;
import com.apple.eawt.Application; import com.apple.eawt.Application;
import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.Files.FileType; import com.badlogic.gdx.Files.FileType;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration;
import com.badlogic.gdx.backends.lwjgl3.Lwjgl3FileHandle;
import com.badlogic.gdx.files.FileHandle; import com.badlogic.gdx.files.FileHandle;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.kryonet.KryoClient; import io.anuke.kryonet.KryoClient;
import io.anuke.kryonet.KryoServer; import io.anuke.kryonet.KryoServer;
import io.anuke.mindustry.Mindustry; import io.anuke.mindustry.Mindustry;
@@ -13,6 +17,7 @@ import io.anuke.mindustry.core.Platform;
import io.anuke.mindustry.io.SaveIO; import io.anuke.mindustry.io.SaveIO;
import io.anuke.mindustry.io.Saves.SaveSlot; import io.anuke.mindustry.io.Saves.SaveSlot;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.ucore.io.BinaryPreferences;
import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.Bundles;
import io.anuke.ucore.util.OS; import io.anuke.ucore.util.OS;
import io.anuke.ucore.util.Strings; import io.anuke.ucore.util.Strings;
@@ -23,7 +28,8 @@ import java.util.List;
import static io.anuke.mindustry.Vars.*; import static io.anuke.mindustry.Vars.*;
public class DesktopLauncher { public class DesktopLauncher extends Lwjgl3Application{
ObjectMap<String, Preferences> prefmap;
public static void main (String[] arg) { public static void main (String[] arg) {
@@ -70,17 +76,36 @@ public class DesktopLauncher {
}); });
} }
config.setPreferencesConfig(OS.getAppDataDirectoryString("Mindustry"), FileType.Absolute);
Platform.instance = new DesktopPlatform(arg); Platform.instance = new DesktopPlatform(arg);
Net.setClientProvider(new KryoClient()); Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer()); Net.setServerProvider(new KryoServer());
try { try {
new Lwjgl3Application(new Mindustry(), config); new DesktopLauncher(new Mindustry(), config);
}catch (Throwable e){ }catch (Throwable e){
CrashHandler.handle(e); CrashHandler.handle(e);
} }
} }
public DesktopLauncher(ApplicationListener listener, Lwjgl3ApplicationConfiguration config) {
super(listener, config);
}
@Override
public Preferences getPreferences(String name) {
String prefsDirectory = OS.getAppDataDirectoryString("Mindustry");
if(prefmap == null){
prefmap = new ObjectMap<>();
}
if(prefmap.containsKey(name)){
return prefmap.get(name);
}else{
Preferences prefs = new BinaryPreferences(new Lwjgl3FileHandle(new File(prefsDirectory, name), FileType.Absolute));
prefmap.put(name, prefs);
return prefs;
}
}
} }

View File

@@ -2,20 +2,33 @@ package io.anuke.mindustry.server;
import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.ApplicationListener;
import com.badlogic.gdx.ApplicationLogger; import com.badlogic.gdx.ApplicationLogger;
import com.badlogic.gdx.Files.FileType;
import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Preferences;
import com.badlogic.gdx.backends.headless.HeadlessApplication; import com.badlogic.gdx.backends.headless.HeadlessApplication;
import com.badlogic.gdx.backends.headless.HeadlessApplicationConfiguration;
import com.badlogic.gdx.backends.headless.HeadlessFileHandle;
import com.badlogic.gdx.utils.ObjectMap;
import io.anuke.kryonet.KryoClient; import io.anuke.kryonet.KryoClient;
import io.anuke.kryonet.KryoServer; import io.anuke.kryonet.KryoServer;
import io.anuke.mindustry.net.Net; import io.anuke.mindustry.net.Net;
import io.anuke.ucore.io.BinaryPreferences;
import io.anuke.ucore.util.OS;
import java.io.File;
public class ServerLauncher extends HeadlessApplication{ public class ServerLauncher extends HeadlessApplication{
ObjectMap<String, Preferences> prefmap;
public static void main(String[] args){ public static void main(String[] args){
Net.setClientProvider(new KryoClient()); Net.setClientProvider(new KryoClient());
Net.setServerProvider(new KryoServer()); Net.setServerProvider(new KryoServer());
new ServerLauncher(new MindustryServer(args)); HeadlessApplicationConfiguration config = new HeadlessApplicationConfiguration();
config.preferencesDirectory = OS.getAppDataDirectoryString("Mindustry");
new ServerLauncher(new MindustryServer(args), config);
//find and handle uncaught exceptions in libGDX thread //find and handle uncaught exceptions in libGDX thread
for(Thread thread : Thread.getAllStackTraces().keySet()){ for(Thread thread : Thread.getAllStackTraces().keySet()){
@@ -29,8 +42,8 @@ public class ServerLauncher extends HeadlessApplication{
} }
} }
public ServerLauncher(ApplicationListener listener) { public ServerLauncher(ApplicationListener listener, HeadlessApplicationConfiguration config) {
super(listener); super(listener, config);
//don't do anything at all for GDX logging: don't want controller info and such //don't do anything at all for GDX logging: don't want controller info and such
Gdx.app.setApplicationLogger(new ApplicationLogger() { Gdx.app.setApplicationLogger(new ApplicationLogger() {
@@ -42,4 +55,21 @@ public class ServerLauncher extends HeadlessApplication{
@Override public void debug(String tag, String message, Throwable exception) { } @Override public void debug(String tag, String message, Throwable exception) { }
}); });
} }
@Override
public Preferences getPreferences(String name) {
String prefsDirectory = OS.getAppDataDirectoryString("Mindustry");
if(prefmap == null){
prefmap = new ObjectMap<>();
}
if(prefmap.containsKey(name)){
return prefmap.get(name);
}else{
Preferences prefs = new BinaryPreferences(new HeadlessFileHandle(new File(prefsDirectory, name), FileType.Absolute));
prefmap.put(name, prefs);
return prefs;
}
}
} }