v1.4.0: made desktop save DIR variable based on game name/vendor
This commit is contained in:
@@ -19,6 +19,7 @@ task debug(type: JavaExec) {
|
|||||||
|
|
||||||
main = appMainClass
|
main = appMainClass
|
||||||
systemProperty 'Specification-Title', appName
|
systemProperty 'Specification-Title', appName
|
||||||
|
systemProperty 'Implementation-Title', appPackageName
|
||||||
systemProperty 'Specification-Version', appVersionName + "-INDEV"
|
systemProperty 'Specification-Version', appVersionName + "-INDEV"
|
||||||
systemProperty 'Implementation-Version', appVersionCode
|
systemProperty 'Implementation-Version', appVersionCode
|
||||||
|
|
||||||
@@ -37,6 +38,7 @@ task release(type: Jar) {
|
|||||||
manifest {
|
manifest {
|
||||||
attributes 'Main-Class': appMainClass
|
attributes 'Main-Class': appMainClass
|
||||||
attributes 'Specification-Title': appName
|
attributes 'Specification-Title': appName
|
||||||
|
attributes 'Implementation-Title': appPackageName
|
||||||
attributes 'Specification-Version': appVersionName
|
attributes 'Specification-Version': appVersionName
|
||||||
attributes 'Implementation-Version': appVersionCode
|
attributes 'Implementation-Version': appVersionCode
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ import org.lwjgl.util.tinyfd.TinyFileDialogs;
|
|||||||
|
|
||||||
import java.io.PrintWriter;
|
import java.io.PrintWriter;
|
||||||
import java.io.StringWriter;
|
import java.io.StringWriter;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class DesktopLauncher {
|
public class DesktopLauncher {
|
||||||
|
|
||||||
@@ -132,25 +133,36 @@ public class DesktopLauncher {
|
|||||||
|
|
||||||
config.setTitle( title );
|
config.setTitle( title );
|
||||||
|
|
||||||
|
//if I were implementing this from scratch I would use the full implementation title for saves
|
||||||
|
// (e.g. /.shatteredpixel/shatteredpixeldungeon), but we have too much existing save
|
||||||
|
// date to worry about transferring at this point.
|
||||||
|
String vendor = DesktopLauncher.class.getPackage().getImplementationTitle();
|
||||||
|
if (vendor == null) {
|
||||||
|
vendor = System.getProperty("Implementation-Title");
|
||||||
|
}
|
||||||
|
vendor = vendor.split("\\.")[1];
|
||||||
|
|
||||||
String basePath = "";
|
String basePath = "";
|
||||||
Files.FileType baseFileType = null;
|
Files.FileType baseFileType = null;
|
||||||
if (SharedLibraryLoader.isWindows) {
|
if (SharedLibraryLoader.isWindows) {
|
||||||
if (System.getProperties().getProperty("os.name").equals("Windows XP")) {
|
if (System.getProperties().getProperty("os.name").equals("Windows XP")) {
|
||||||
basePath = "Application Data/.shatteredpixel/Shattered Pixel Dungeon/";
|
basePath = "Application Data/." + vendor + "/" + title + "/";
|
||||||
} else {
|
} else {
|
||||||
basePath = "AppData/Roaming/.shatteredpixel/Shattered Pixel Dungeon/";
|
basePath = "AppData/Roaming/." + vendor + "/" + title + "/";
|
||||||
}
|
}
|
||||||
baseFileType = Files.FileType.External;
|
baseFileType = Files.FileType.External;
|
||||||
} else if (SharedLibraryLoader.isMac) {
|
} else if (SharedLibraryLoader.isMac) {
|
||||||
basePath = "Library/Application Support/Shattered Pixel Dungeon/";
|
basePath = "Library/Application Support/" + title + "/";
|
||||||
baseFileType = Files.FileType.External;
|
baseFileType = Files.FileType.External;
|
||||||
} else if (SharedLibraryLoader.isLinux) {
|
} else if (SharedLibraryLoader.isLinux) {
|
||||||
String XDGHome = System.getenv("XDG_DATA_HOME");
|
String XDGHome = System.getenv("XDG_DATA_HOME");
|
||||||
if (XDGHome == null) XDGHome = System.getProperty("user.home") + "/.local/share";
|
if (XDGHome == null) XDGHome = System.getProperty("user.home") + "/.local/share";
|
||||||
basePath = XDGHome + "/.shatteredpixel/shattered-pixel-dungeon/";
|
|
||||||
|
String titleLinux = title.toLowerCase(Locale.ROOT).replace(" ", "-");
|
||||||
|
basePath = XDGHome + "/." + vendor + "/" + titleLinux + "/";
|
||||||
|
|
||||||
//copy over files from old linux save DIR, pre-1.2.0
|
//copy over files from old linux save DIR, pre-1.2.0
|
||||||
FileHandle oldBase = new Lwjgl3FileHandle(".shatteredpixel/shattered-pixel-dungeon/", Files.FileType.External);
|
FileHandle oldBase = new Lwjgl3FileHandle("." + vendor + "/" + titleLinux + "/", Files.FileType.External);
|
||||||
FileHandle newBase = new Lwjgl3FileHandle(basePath, Files.FileType.Absolute);
|
FileHandle newBase = new Lwjgl3FileHandle(basePath, Files.FileType.Absolute);
|
||||||
if (oldBase.exists()){
|
if (oldBase.exists()){
|
||||||
if (!newBase.exists()) {
|
if (!newBase.exists()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user