diff --git a/assets/default-spritesheets/speedy_blupi_I.spritesheet.csv b/assets/default-spritesheets/speedy_blupi_I.spritesheet.csv index 3ad23e7..a6842c4 100644 --- a/assets/default-spritesheets/speedy_blupi_I.spritesheet.csv +++ b/assets/default-spritesheets/speedy_blupi_I.spritesheet.csv @@ -1,5 +1,5 @@ File;Group;Number in Group;Row;Column;X;Y;Width;Height;Notes;Tags;Number per file -blupi000.blp;Yellow_Eggbert_Born;1;1;1;;0;28;20;;ok;1 +blupi000.blp;YELLOW_EGGBERT_BORN;1;1;1;;0;28;20;;ok;1 blupi000.blp;Yellow_Eggbert_Born;2;1;2;;0;28;0;;ok;2 blupi000.blp;Yellow_Eggbert_Born;3;1;3;;0;28;3;;ok;3 blupi000.blp;Yellow_Eggbert_Born;4;1;4;;0;28;0;;ok;4 diff --git a/core/src/main/java/com/openeggbert/compatibility/FileNameCaseType.java b/core/src/main/java/com/openeggbert/compatibility/FileNameCaseType.java index 0367f3e..1d2a92b 100644 --- a/core/src/main/java/com/openeggbert/compatibility/FileNameCaseType.java +++ b/core/src/main/java/com/openeggbert/compatibility/FileNameCaseType.java @@ -102,11 +102,11 @@ public enum FileNameCaseType { && thereIsNoUppercaseCharacterExcludingTheFirstCharacter) { return CAPITALIZATION; } else { - throw new OpenEggbertException("1Could not find FileNameCaseType from String: " + string); + throw new OpenEggbertException("Could not find FileNameCaseType from String: " + string); } } - throw new OpenEggbertException("2Could not find FileNameCaseType from String: " + string); + throw new OpenEggbertException("Could not find FileNameCaseType from String: " + string); } @@ -115,7 +115,7 @@ public enum FileNameCaseType { new FileNameCaseTypeStringComparator()); } - static class FileNameCaseTypeStringComparator implements Comparator { + private static class FileNameCaseTypeStringComparator implements Comparator { @Override public int compare(String o1, String o2) { diff --git a/core/src/main/java/com/openeggbert/compatibility/GameDirectoryType.java b/core/src/main/java/com/openeggbert/compatibility/GameDirectoryType.java new file mode 100644 index 0000000..6670b14 --- /dev/null +++ b/core/src/main/java/com/openeggbert/compatibility/GameDirectoryType.java @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// +package com.openeggbert.compatibility; + +import lombok.Getter; + +/** + * + * @author robertvokac + */ +public enum GameDirectoryType implements StrictMode{ + DATA(true), + IMAGE(true), + IMAGE08(true), + IMAGE16(true), + IMAGE24(false), + IMAGE24X2(false), + SOUND(true), + TEXT(false), + MOD(false), + ; + @Getter + private boolean enabledInCaseOfStrictMode; + + GameDirectoryType(boolean enabledInCaseOfStrictMode) { + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; + } + @Override + public boolean isEnabledInCaseOfStrictMode() { + return enabledInCaseOfStrictMode; + } + +} diff --git a/core/src/main/java/com/openeggbert/compatibility/ImageFormat.java b/core/src/main/java/com/openeggbert/compatibility/ImageFormat.java index c9fd4c3..efcbed9 100644 --- a/core/src/main/java/com/openeggbert/compatibility/ImageFormat.java +++ b/core/src/main/java/com/openeggbert/compatibility/ImageFormat.java @@ -25,16 +25,28 @@ import lombok.Getter; * * @author robertvokac */ -public enum ImageFormat { - BMP("blp", "bmp"), - PNG("png"), - JPEG("jpeg") +public enum ImageFormat implements StrictMode{ + BLP("blp", true), + BMP("bmp", false), + PNG("png", false), + JPEG("jpeg", false) ; @Getter - private String[] fileExtensions; + private String fileExtension; + @Getter + private boolean enabledInCaseOfStrictMode; - ImageFormat(String... fileExtensionsIn) { - this.fileExtensions = fileExtensionsIn; + ImageFormat(String fileExtensionIn, boolean enabledInCaseOfStrictMode) { + this.fileExtension = fileExtensionIn; + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; } + @Override + public boolean isEnabledInCaseOfStrictMode() { + return enabledInCaseOfStrictMode; + } + public ImageFormat getTargetFormat() { + return this == BLP ? BMP : this; + } + } diff --git a/core/src/main/java/com/openeggbert/compatibility/ImageResolution.java b/core/src/main/java/com/openeggbert/compatibility/ImageResolution.java index 9baebba..ad362d4 100644 --- a/core/src/main/java/com/openeggbert/compatibility/ImageResolution.java +++ b/core/src/main/java/com/openeggbert/compatibility/ImageResolution.java @@ -19,11 +19,23 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.compatibility; +import lombok.Getter; + /** * * @author robertvokac */ -public enum ImageResolution { - NORMAL, DOUBLE; +public enum ImageResolution implements StrictMode{ + NORMAL(true), DOUBLE(false); + @Getter + private boolean enabledInCaseOfStrictMode; + ImageResolution(boolean enabledInCaseOfStrictMode) { + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; + } + + @Override + public boolean isEnabledInCaseOfStrictMode() { + throw new UnsupportedOperationException("Not supported yet."); // Generated from nbfs://nbhost/SystemFileSystem/Templates/Classes/Code/GeneratedMethodBody + } } diff --git a/core/src/main/java/com/openeggbert/compatibility/MusicFormat.java b/core/src/main/java/com/openeggbert/compatibility/MusicFormat.java index b9a9c9f..b3303c7 100644 --- a/core/src/main/java/com/openeggbert/compatibility/MusicFormat.java +++ b/core/src/main/java/com/openeggbert/compatibility/MusicFormat.java @@ -25,16 +25,29 @@ import lombok.Getter; * * @author robertvokac */ -public enum MusicFormat { - MIDI("blp", "mid"), - WAV("wav"), - MP3("mp3"), - OGG("ogg"), +public enum MusicFormat implements StrictMode { + BLP("blp", true), + MIDI("mid", false), + WAV("wav", false), + MP3("mp3", false), + OGG("ogg", false), ; @Getter - private String[] fileExtensions; - MusicFormat(String... fileExtensionsIn) { - this.fileExtensions = fileExtensionsIn; + private String fileExtension; + + @Getter + private boolean enabledInCaseOfStrictMode; + MusicFormat(String fileExtension, boolean enabledInCaseOfStrictMode) { + this.fileExtension = fileExtension; + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; + } + + @Override + public boolean isEnabledInCaseOfStrictMode() { + return enabledInCaseOfStrictMode; } + public MusicFormat getTargetFormat() { + return this == BLP ? MIDI : this; + } } diff --git a/core/src/main/java/com/openeggbert/compatibility/FeatureLevel.java b/core/src/main/java/com/openeggbert/compatibility/Release.java similarity index 80% rename from core/src/main/java/com/openeggbert/compatibility/FeatureLevel.java rename to core/src/main/java/com/openeggbert/compatibility/Release.java index b236bbf..91b1069 100644 --- a/core/src/main/java/com/openeggbert/compatibility/FeatureLevel.java +++ b/core/src/main/java/com/openeggbert/compatibility/Release.java @@ -25,7 +25,7 @@ import lombok.Getter; * * @author robertvokac */ -public enum FeatureLevel { +public enum Release { SPEEDY_BLUPI_DEMO(ReleaseType.BLUPI, ReleaseVersion.DEMO, Publisher.EPSITEC_SA), SPEEDY_BLUPI_I(ReleaseType.BLUPI, ReleaseVersion.ONE, Publisher.EPSITEC_SA), SPEEDY_BLUPI_II(ReleaseType.BLUPI, ReleaseVersion.TWO, Publisher.EPSITEC_SA), @@ -40,9 +40,21 @@ public enum FeatureLevel { @Getter private final ReleaseVersion releaseVersion; - private FeatureLevel(ReleaseType releaseType, ReleaseVersion releaseVersion, Publisher publisher) { + private Release(ReleaseType releaseType, ReleaseVersion releaseVersion, Publisher publisher) { this.releaseType = releaseType; this.releaseVersion = releaseVersion; } + + public String createLabel() { + String[] array = this.name().split("_"); + StringBuilder sb = new StringBuilder(); + for(int i = 0;i < array.length; i++) { + sb.append(FileNameCaseType.convertToString(array[i], FileNameCaseType.CAPITALIZATION)); + if(i < (array.length - 1)) { + sb.append(" "); + } + } + return sb.toString(); + } } diff --git a/core/src/main/java/com/openeggbert/compatibility/ScreenResolution.java b/core/src/main/java/com/openeggbert/compatibility/ScreenResolution.java new file mode 100644 index 0000000..ca9320a --- /dev/null +++ b/core/src/main/java/com/openeggbert/compatibility/ScreenResolution.java @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Copyright (C) 2024 the original author or authors. +// +// This program is free software: you can redistribute it and/or +// modify it under the terms of the GNU General Public License +// as published by the Free Software Foundation, either version 3 +// of the License, or (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see +// or write to the Free Software +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +/////////////////////////////////////////////////////////////////////////////////////////////// + + +package com.openeggbert.compatibility; + +import lombok.Getter; + +/** + * + * @author robertvokac + */ +public enum ScreenResolution implements StrictMode { + VGA(640,480,true), + QUAD_VGA(1280, 960, false), + CURRENT(0, 0, false); + @Getter + private boolean enabledInCaseOfStrictMode; + @Getter + private int width; + @Getter + private int height; + ScreenResolution(int width, int height, boolean enabledInCaseOfStrictMode) { + this.width = width; + this.height = height; + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; + } + + @Override + public boolean isEnabledInCaseOfStrictMode() { + return enabledInCaseOfStrictMode; + } +} diff --git a/core/src/main/java/com/openeggbert/compatibility/SoundFormat.java b/core/src/main/java/com/openeggbert/compatibility/SoundFormat.java index 88f090f..f464216 100644 --- a/core/src/main/java/com/openeggbert/compatibility/SoundFormat.java +++ b/core/src/main/java/com/openeggbert/compatibility/SoundFormat.java @@ -25,15 +25,27 @@ import lombok.Getter; * * @author robertvokac */ -public enum SoundFormat { - WAV("blp", "wav"), - MP3("mp3"), - OGG("ogg") +public enum SoundFormat implements StrictMode { + BLP("blp", true), + WAV("wav", false), + MP3("mp3", false), + OGG("ogg", false), ; @Getter - private String[] fileExtensions; - SoundFormat(String... fileExtensionsIn) { - this.fileExtensions = fileExtensionsIn; + private String fileExtension; + SoundFormat(String fileExtensionIn, boolean enabledInCaseOfStrictMode) { + this.fileExtension = fileExtensionIn; + this.enabledInCaseOfStrictMode = enabledInCaseOfStrictMode; + } + + @Getter + private boolean enabledInCaseOfStrictMode; + + @Override + public boolean isEnabledInCaseOfStrictMode() { + return enabledInCaseOfStrictMode; + } + public SoundFormat getTargetFormat() { + return this == BLP ? WAV : this; } - } diff --git a/core/src/main/java/com/openeggbert/compatibility/ResolutionMode.java b/core/src/main/java/com/openeggbert/compatibility/StrictMode.java similarity index 90% rename from core/src/main/java/com/openeggbert/compatibility/ResolutionMode.java rename to core/src/main/java/com/openeggbert/compatibility/StrictMode.java index 36a67fe..bd0d08d 100644 --- a/core/src/main/java/com/openeggbert/compatibility/ResolutionMode.java +++ b/core/src/main/java/com/openeggbert/compatibility/StrictMode.java @@ -25,9 +25,7 @@ package com.openeggbert.compatibility; * * @author robertvokac */ -public enum ResolutionMode { - RESOLUTION_640_480, - RESOLUTION_1280_960, - RESOLUTION_SCALED, - RESOLUTION_CURRENT; +public interface StrictMode { + boolean isEnabledInCaseOfStrictMode(); + } diff --git a/core/src/main/java/com/openeggbert/entity/common/Cheat.java b/core/src/main/java/com/openeggbert/entity/common/Cheat.java index 228f408..054df5f 100644 --- a/core/src/main/java/com/openeggbert/entity/common/Cheat.java +++ b/core/src/main/java/com/openeggbert/entity/common/Cheat.java @@ -21,7 +21,7 @@ package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import lombok.Getter; /** @@ -31,16 +31,16 @@ import lombok.Getter; public enum Cheat { MEGABLUPI(Utils.ALL_FEATURE_LEVELS); - //todo//todo + //todo//todo//todo//todo @Getter - private final FeatureLevel[] compatibilityModes; + private final Release[] compatibilityModes; @Getter private String note; - Cheat (FeatureLevel[] compatibilityModes) { + Cheat (Release[] compatibilityModes) { this(compatibilityModes, ""); } - Cheat (FeatureLevel[] compatibilityModes, String note) { + Cheat (Release[] compatibilityModes, String note) { this.compatibilityModes = compatibilityModes; this.note = note; } diff --git a/core/src/main/java/com/openeggbert/entity/common/ConfigDefKey.java b/core/src/main/java/com/openeggbert/entity/common/ConfigDefKey.java index 6262dfb..3993e10 100644 --- a/core/src/main/java/com/openeggbert/entity/common/ConfigDefKey.java +++ b/core/src/main/java/com/openeggbert/entity/common/ConfigDefKey.java @@ -19,7 +19,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -31,17 +31,17 @@ import lombok.Getter; * @author robertvokac */ public enum ConfigDefKey { - FULLSCREEN("FullScreen", new FeatureLevel[]{FeatureLevel.SPEEDY_BLUPI_DEMO}), - STRICT_COMPATIBILITY("StrictCompatibility", new FeatureLevel[]{FeatureLevel.OPEN_EGGBERT_3}); + FULLSCREEN("FullScreen", new Release[]{Release.SPEEDY_BLUPI_DEMO}), + STRICT_COMPATIBILITY("StrictCompatibility", new Release[]{Release.OPEN_EGGBERT_3}); @Getter private String key; @Getter - private final List featureLevels; - ConfigDefKey(String keyIn, FeatureLevel[] featureLevelsIn) { + private final List featureLevels; + ConfigDefKey(String keyIn, Release[] featureLevelsIn) { this.key = keyIn; - List list = Arrays.asList(featureLevelsIn); - Stream stream = list.stream(); + List list = Arrays.asList(featureLevelsIn); + Stream stream = list.stream(); this.featureLevels = stream.collect(Collectors.toList()); } diff --git a/core/src/main/java/com/openeggbert/entity/common/GameSpace.java b/core/src/main/java/com/openeggbert/entity/common/GameSpace.java index c897bd2..f3639b7 100644 --- a/core/src/main/java/com/openeggbert/entity/common/GameSpace.java +++ b/core/src/main/java/com/openeggbert/entity/common/GameSpace.java @@ -19,7 +19,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import lombok.AllArgsConstructor; import lombok.Data; @@ -32,7 +32,7 @@ import lombok.Data; public class GameSpace { private boolean embeddedAssets; - private FeatureLevel featureLevel; + private Release featureLevel; private String dataDirectory; private String image08Directory; private String image16Directory; diff --git a/core/src/main/java/com/openeggbert/entity/common/MusicType.java b/core/src/main/java/com/openeggbert/entity/common/MusicType.java index 89080e7..8e61a47 100644 --- a/core/src/main/java/com/openeggbert/entity/common/MusicType.java +++ b/core/src/main/java/com/openeggbert/entity/common/MusicType.java @@ -21,7 +21,7 @@ package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import lombok.Getter; /** @@ -41,7 +41,7 @@ public enum MusicType { MUSIC10(9); @Getter private int number; - MusicType(int numberIn, FeatureLevel... featureLevels) { + MusicType(int numberIn, Release... featureLevels) { this.number = numberIn; } diff --git a/core/src/main/java/com/openeggbert/entity/common/SoundType.java b/core/src/main/java/com/openeggbert/entity/common/SoundType.java index 5240c80..19c616f 100644 --- a/core/src/main/java/com/openeggbert/entity/common/SoundType.java +++ b/core/src/main/java/com/openeggbert/entity/common/SoundType.java @@ -21,7 +21,7 @@ package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import lombok.Getter; /** @@ -108,7 +108,7 @@ public enum SoundType { ; @Getter private int number; - SoundType(int numberIn, FeatureLevel... featureLevels) { + SoundType(int numberIn, Release... featureLevels) { this.number = numberIn; } diff --git a/core/src/main/java/com/openeggbert/entity/common/Utils.java b/core/src/main/java/com/openeggbert/entity/common/Utils.java index 03d714e..dc7a57f 100644 --- a/core/src/main/java/com/openeggbert/entity/common/Utils.java +++ b/core/src/main/java/com/openeggbert/entity/common/Utils.java @@ -21,7 +21,7 @@ package com.openeggbert.entity.common; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; /** * @@ -31,5 +31,5 @@ public class Utils { private Utils() { //Instantiate not needed. } - public static final FeatureLevel[] ALL_FEATURE_LEVELS = FeatureLevel.values(); + public static final Release[] ALL_FEATURE_LEVELS = Release.values(); } diff --git a/core/src/main/java/com/openeggbert/mods/Mod.java b/core/src/main/java/com/openeggbert/mods/Mod.java index 7fc6aaf..86bd1d0 100644 --- a/core/src/main/java/com/openeggbert/mods/Mod.java +++ b/core/src/main/java/com/openeggbert/mods/Mod.java @@ -21,7 +21,7 @@ package com.openeggbert.mods; import com.badlogic.gdx.utils.XmlReader; import com.badlogic.gdx.utils.XmlReader.Element; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import java.util.ArrayList; import java.util.List; import lombok.Data; @@ -45,7 +45,7 @@ public class Mod { root.get("version")); modPackaging = ModPackaging.valueOf(root.get("packaging")); modType = ModType.valueOf(root.get("type")); - featureLevel = FeatureLevel.valueOf(root.get("featureLevel")); + featureLevel = Release.valueOf(root.get("featureLevel")); name = root.get("name"); description = root.get("description"); Element imports = root.getChildByName("imports"); @@ -76,7 +76,7 @@ public class Mod { private ModIdentification identification; private ModPackaging modPackaging; private ModType modType; - private FeatureLevel featureLevel; + private Release featureLevel; private String name; private String description; private List importedMods = new ArrayList<>(); diff --git a/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java b/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java index 11a7c0e..045b032 100644 --- a/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java +++ b/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java @@ -55,7 +55,7 @@ public class OpenEggbertUtils { String fileNameWithoutExtension = getFileNameWithoutExtension(fileName); for (ImageFormat imageFormat : ImageFormat.values()) { - fillListWithPossibleFileNamesForGivenFileExtension(imageFormat.getFileExtensions(), fileNameWithoutExtension, list); + fillListWithPossibleFileNamesForGivenFileExtension(imageFormat.getFileExtension(), fileNameWithoutExtension, list); } return list; } @@ -64,7 +64,7 @@ public class OpenEggbertUtils { String fileNameWithoutExtension = getFileNameWithoutExtension(fileName); for (MusicFormat musicFormat : MusicFormat.values()) { - fillListWithPossibleFileNamesForGivenFileExtension(musicFormat.getFileExtensions(), fileNameWithoutExtension, list); + fillListWithPossibleFileNamesForGivenFileExtension(musicFormat.getFileExtension(), fileNameWithoutExtension, list); } return list; } @@ -73,7 +73,7 @@ public class OpenEggbertUtils { String fileNameWithoutExtension = getFileNameWithoutExtension(fileName); for (SoundFormat soundFormat : SoundFormat.values()) { - fillListWithPossibleFileNamesForGivenFileExtension(soundFormat.getFileExtensions(), fileNameWithoutExtension, list); + fillListWithPossibleFileNamesForGivenFileExtension(soundFormat.getFileExtension(), fileNameWithoutExtension, list); } return list; } @@ -90,13 +90,13 @@ public class OpenEggbertUtils { throw new OpenEggbertException("Unsupported GameFileType: " + gameFileType); } - private static void fillListWithPossibleFileNamesForGivenFileExtension(String[] fileExtensions, String fileNameWithoutExtension, List list) { - for (String fileExtension : fileExtensions) { - String fileNameWithExtension = fileNameWithoutExtension + "." + fileExtension; - for (FileNameCaseType fileNameCaseType : FileNameCaseType.values()) { - list.add(FileNameCaseType.convertToString(fileNameWithExtension, fileNameCaseType)); - } + private static void fillListWithPossibleFileNamesForGivenFileExtension(String fileExtension, String fileNameWithoutExtension, List list) { + + String fileNameWithExtension = fileNameWithoutExtension + "." + fileExtension; + for (FileNameCaseType fileNameCaseType : FileNameCaseType.values()) { + list.add(FileNameCaseType.convertToString(fileNameWithExtension, fileNameCaseType)); } + } private static final String IMAGE = "IMAGE"; diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/DesktopUtils.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/DesktopUtils.java index d408950..46e3810 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/DesktopUtils.java +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/DesktopUtils.java @@ -19,7 +19,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.lwjgl3; -import com.openeggbert.compatibility.FeatureLevel; +import com.openeggbert.compatibility.Release; import com.openeggbert.entity.common.GameSpace; import com.openeggbert.entity.common.OpenEggbertException; import java.io.File; @@ -37,8 +37,8 @@ public class DesktopUtils { } public static Optional tryToLoadGameSpace() { - String gameSpaceDirectoryFromEnvironmentVariable = System.getenv().getOrDefault("GAME_SPACE_DIRECTORY", ""); - String gameSpaceDirectoryFromSystemProperty = System.getProperty("GAME_SPACE_DIRECTORY", ""); + String gameSpaceDirectoryFromEnvironmentVariable = System.getenv().getOrDefault(GAME_SPACE_DIRECTORY, ""); + String gameSpaceDirectoryFromSystemProperty = System.getProperty(GAME_SPACE_DIRECTORY, ""); if (!gameSpaceDirectoryFromEnvironmentVariable.isBlank()) { return tryToLoadGameSpaceFromEnvironmentVariable(gameSpaceDirectoryFromEnvironmentVariable); @@ -49,6 +49,7 @@ public class DesktopUtils { Optional gameOptional = tryToLoadGameSpaceFromCurrentDirectory(); return gameOptional; } + private static final String GAME_SPACE_DIRECTORY = "GAME_SPACE_DIRECTORY"; private static Optional tryToLoadGameSpaceFromEnvironmentVariable(String gameSpaceDirectoryFromEnvironmentVariable) { @@ -63,7 +64,7 @@ public class DesktopUtils { if (!gameSpaceDirectory.exists()) { throw new OpenEggbertException("Directory does not exist: " + gameSpaceDirectory.getAbsolutePath()); } - FeatureLevel featureLevel = null; + Release featureLevel = null; try { featureLevel = findFeatureLevelFromDirectory(gameSpaceDirectory); } catch (Exception e) { @@ -75,7 +76,7 @@ public class DesktopUtils { GameSpace gameSpace = new GameSpace(); gameSpace.setCurrentDirectory(new File(".").getAbsolutePath()); gameSpace.setFeatureLevel(featureLevel); - if (featureLevel == FeatureLevel.SPEEDY_BLUPI_DEMO) { + if (featureLevel == Release.SPEEDY_BLUPI_DEMO) { gameSpace.setDataDirectory(gameSpaceDirectory.getAbsolutePath() + "/" + "Data"); gameSpace.setImage08Directory(gameSpaceDirectory.getAbsolutePath() + "/" + "Image"); gameSpace.setSoundDirectory(gameSpaceDirectory.getAbsolutePath() + "/" + "Sound"); @@ -93,19 +94,19 @@ public class DesktopUtils { gameSpace.setImage08Directory(image08Directory.getAbsolutePath()); gameSpace.setSoundDirectory(soundDirectory.getAbsolutePath()); - if (featureLevel != FeatureLevel.SPEEDY_EGGBERT_DEMO) { + if (featureLevel != Release.SPEEDY_EGGBERT_DEMO) { gameSpace.setImage16Directory(image16Directory.getAbsolutePath()); } - if (featureLevel != FeatureLevel.OPEN_EGGBERT_3) { + if (featureLevel != Release.OPEN_EGGBERT_3) { throwExceptionIfDirectoryDoesNotExist(image08Directory); - if (featureLevel != FeatureLevel.SPEEDY_EGGBERT_DEMO) { + if (featureLevel != Release.SPEEDY_EGGBERT_DEMO) { throwExceptionIfDirectoryDoesNotExist(image16Directory); } throwExceptionIfDirectoryDoesNotExist(soundDirectory); return Optional.of(gameSpace); } - if (featureLevel == FeatureLevel.OPEN_EGGBERT_3) { + if (featureLevel == Release.OPEN_EGGBERT_3) { if (!image08Directory.exists()) { image08Directory = null; @@ -135,7 +136,7 @@ public class DesktopUtils { private static Optional tryToLoadGameSpaceFromCurrentDirectory() { try { - return tryToLoadGameSpaceFromDirectory(new File(DesktopUtils.getPathToDirectoryWhereJarIsRunning())); + return tryToLoadGameSpaceFromDirectory(new File(DesktopUtils.getPathOfDirectoryWhereJarIsRunning())); } catch (Exception e) { System.err.println(e.getMessage()); @@ -154,14 +155,14 @@ public class DesktopUtils { throwExceptionIfDirectoryDoesNotExist(new File(directoryString)); } - public static FeatureLevel findFeatureLevelFromDirectory(File dir) { + public static Release findFeatureLevelFromDirectory(File dir) { final File image24Directory = new File(dir, "IMAGE24"); - final File image24x2Directory = new File(dir, "IMAGE24x2"); + final File image24x2Directory = new File(dir, "IMAGE24X2"); if (image24Directory.exists() && image24x2Directory.exists()) { - return FeatureLevel.OPEN_EGGBERT_3; + return Release.OPEN_EGGBERT_3; } if (new File(dir, "Data").exists() && new File(dir, "Image").exists() && new File(dir, "Sound").exists()) { - return FeatureLevel.SPEEDY_BLUPI_DEMO; + return Release.SPEEDY_BLUPI_DEMO; } if (!new File(dir, "DATA").exists()) { throw new OpenEggbertException("Directory does not exist: " + new File(dir, "DATA").getAbsolutePath()); @@ -171,27 +172,27 @@ public class DesktopUtils { if (new File(image08Directory, "INSERT.BLP").exists()) { //blupi if (new File(image08Directory, "DECOR024.BLP").exists()) { - return FeatureLevel.SPEEDY_BLUPI_II; + return Release.SPEEDY_BLUPI_II; } else { - return FeatureLevel.SPEEDY_BLUPI_I; + return Release.SPEEDY_BLUPI_I; } } else { //eggbert final File image16Directory = new File(dir, "IMAGE16"); if (!image16Directory.exists()) { - return FeatureLevel.SPEEDY_EGGBERT_DEMO; + return Release.SPEEDY_EGGBERT_DEMO; } if (new File(image08Directory, "DECOR024.BLP").exists() || new File(image08Directory, "decor024.blp").exists()) { - return FeatureLevel.SPEEDY_EGGBERT_2; + return Release.SPEEDY_EGGBERT_2; } else { - return FeatureLevel.SPEEDY_EGGBERT_1; + return Release.SPEEDY_EGGBERT_1; } } } throw new OpenEggbertException("Directory is not compatible with any supported version: " + dir.getAbsolutePath()); } - public static String getPathToDirectoryWhereJarIsRunning() { + public static String getPathOfDirectoryWhereJarIsRunning() { try { return new File(DesktopUtils.class.getProtectionDomain().getCodeSource().getLocation() .toURI()).getParentFile().getAbsolutePath(); diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/Lwjgl3Launcher.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/Lwjgl3Launcher.java index e28ab7a..77ca353 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/Lwjgl3Launcher.java +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/Lwjgl3Launcher.java @@ -37,7 +37,7 @@ public class Lwjgl3Launcher { //System.getProperties().put("GAME_SPACE_DIRECTORY", "/rv/data/desktop/code/code.nanoboot.org/nanoboot/open-eggbert/assets/open-eggbert-legacy-assets/speedy_blupi_I"); Optional gameSpace = DesktopUtils.tryToLoadGameSpace(); - String currentDirectory = DesktopUtils.getPathToDirectoryWhereJarIsRunning(); + String currentDirectory = DesktopUtils.getPathOfDirectoryWhereJarIsRunning(); final OpenEggbertGame openEggbertGame = gameSpace.isPresent() ? new OpenEggbertGame(gameSpace.get(), currentDirectory) : new OpenEggbertGame(currentDirectory); return new Lwjgl3Application(openEggbertGame, getDefaultConfiguration()); }