From 604f315a8381b8e6187fac4956c0be06f0fe1fd6 Mon Sep 17 00:00:00 2001 From: Anuken Date: Fri, 15 Jun 2018 12:13:52 -0400 Subject: [PATCH] Switched to binary preference file for desktop --- .../mindustry/entities/bullet/BulletType.java | 2 +- .../mindustry/desktop/DesktopLauncher.java | 33 ++++++++++++++--- .../mindustry/server/ServerLauncher.java | 36 +++++++++++++++++-- 3 files changed, 63 insertions(+), 8 deletions(-) diff --git a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java index c505108d33..291d1bc613 100644 --- a/core/src/io/anuke/mindustry/entities/bullet/BulletType.java +++ b/core/src/io/anuke/mindustry/entities/bullet/BulletType.java @@ -26,7 +26,7 @@ public abstract class BulletType extends BaseBulletType implements Conte /**Whether to sync this bullet to clients.*/ public boolean syncable; /**Whether this bullet type collides with tiles.*/ - public boolean collidesTiles; + public boolean collidesTiles = true; public BulletType(float speed, float damage){ this.id = lastid ++; diff --git a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java index 2d41d4bb37..cfd729a066 100644 --- a/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java +++ b/desktop/src/io/anuke/mindustry/desktop/DesktopLauncher.java @@ -1,11 +1,15 @@ package io.anuke.mindustry.desktop; import com.apple.eawt.Application; +import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.Files.FileType; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Preferences; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application; import com.badlogic.gdx.backends.lwjgl3.Lwjgl3ApplicationConfiguration; +import com.badlogic.gdx.backends.lwjgl3.Lwjgl3FileHandle; import com.badlogic.gdx.files.FileHandle; +import com.badlogic.gdx.utils.ObjectMap; import io.anuke.kryonet.KryoClient; import io.anuke.kryonet.KryoServer; 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.Saves.SaveSlot; import io.anuke.mindustry.net.Net; +import io.anuke.ucore.io.BinaryPreferences; import io.anuke.ucore.util.Bundles; import io.anuke.ucore.util.OS; import io.anuke.ucore.util.Strings; @@ -23,7 +28,8 @@ import java.util.List; import static io.anuke.mindustry.Vars.*; -public class DesktopLauncher { +public class DesktopLauncher extends Lwjgl3Application{ + ObjectMap prefmap; 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); Net.setClientProvider(new KryoClient()); Net.setServerProvider(new KryoServer()); try { - new Lwjgl3Application(new Mindustry(), config); + new DesktopLauncher(new Mindustry(), config); }catch (Throwable 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; + } + } } diff --git a/server/src/io/anuke/mindustry/server/ServerLauncher.java b/server/src/io/anuke/mindustry/server/ServerLauncher.java index bf3a59ac57..4a8c07ba20 100644 --- a/server/src/io/anuke/mindustry/server/ServerLauncher.java +++ b/server/src/io/anuke/mindustry/server/ServerLauncher.java @@ -2,20 +2,33 @@ package io.anuke.mindustry.server; import com.badlogic.gdx.ApplicationListener; import com.badlogic.gdx.ApplicationLogger; +import com.badlogic.gdx.Files.FileType; import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.Preferences; 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.KryoServer; 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{ + ObjectMap prefmap; public static void main(String[] args){ Net.setClientProvider(new KryoClient()); 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 for(Thread thread : Thread.getAllStackTraces().keySet()){ @@ -29,8 +42,8 @@ public class ServerLauncher extends HeadlessApplication{ } } - public ServerLauncher(ApplicationListener listener) { - super(listener); + public ServerLauncher(ApplicationListener listener, HeadlessApplicationConfiguration config) { + super(listener, config); //don't do anything at all for GDX logging: don't want controller info and such 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 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; + } + } } \ No newline at end of file