From 20799c7413b10a8d3daa19faee4edf56a9c228a5 Mon Sep 17 00:00:00 2001 From: Robert Vokac Date: Sat, 10 Aug 2024 18:55:15 +0200 Subject: [PATCH] Added storage classes - work in progress V --- android/build.gradle | 3 +- core/build.gradle | 2 +- .../core/entity/immovableobjects/.gitkeep | 1 + .../entity/common/OpenEggbertScreenType.java | 2 + .../gdx/storage/GdxStorageException.java | 32 ++++++++++++ .../gdx/storage/GdxStorageMainClass.gwt.xml | 9 ++++ .../gdx/storage/GdxStorageMainClass.java | 34 +++++++++++++ .../gdx/storage/GdxStorageUtils.java | 50 +++++++++++++++++++ .../{ => gdx}/storage/Storage.java | 4 +- .../storage/StorageImplementationLoader.java | 15 +++--- .../storage}/command/BaseCommandLine.java | 4 +- .../storage}/command/CommandLineScanner.java | 4 +- .../storage}/command/StorageCommand.java | 4 +- .../storage}/command/StorageCommandLine.java | 6 +-- .../command/StorageCommandLineScanner.java | 6 +-- .../command/StorageCommandResult.java | 4 +- .../storage/filesystem/AndroidStorage.java | 4 +- .../filesystem/DesktopAndroidStorage.java | 6 +-- .../storage/filesystem/DesktopStorage.java | 4 +- .../{ => gdx}/storage/map/MapFileType.java | 11 ++-- .../{ => gdx}/storage/map/MapStorage.java | 22 ++++---- .../storage/map/MapStorageCompression.java | 4 +- .../{ => gdx}/storage/map/MemoryStorage.java | 4 +- .../{ => gdx}/storage/map/SimpleJavaMap.java | 4 +- .../storage/map/SimpleLocalStorageMap.java | 4 +- .../{ => gdx}/storage/map/SimpleMap.java | 4 +- .../{ => gdx}/storage/map/WebGLStorage.java | 4 +- .../com/openeggbert/main/OpenEggbertGame.java | 4 +- .../openeggbert/utils/OpenEggbertUtils.java | 17 ------- .../utils/OpenEggbertUtilsTest.java | 2 - html/build.gradle | 2 + .../com/openeggbert/GdxDefinition.gwt.xml | 3 +- lwjgl3/build.gradle | 1 + .../storage/DesktopCommandLineScanner.java | 2 +- .../DesktopStorageCommandLineScanner.java | 6 +-- 35 files changed, 201 insertions(+), 87 deletions(-) create mode 100644 core/src/main/java/com/openeggbert/core/entity/immovableobjects/.gitkeep create mode 100644 core/src/main/java/com/openeggbert/gdx/storage/GdxStorageException.java create mode 100644 core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.gwt.xml create mode 100644 core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.java create mode 100644 core/src/main/java/com/openeggbert/gdx/storage/GdxStorageUtils.java rename core/src/main/java/com/openeggbert/{ => gdx}/storage/Storage.java (96%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/StorageImplementationLoader.java (81%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/BaseCommandLine.java (94%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/CommandLineScanner.java (90%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/StorageCommand.java (91%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/StorageCommandLine.java (98%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/StorageCommandLineScanner.java (91%) rename core/src/main/java/com/openeggbert/{storage/filesystem => gdx/storage}/command/StorageCommandResult.java (93%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/filesystem/AndroidStorage.java (90%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/filesystem/DesktopAndroidStorage.java (97%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/filesystem/DesktopStorage.java (90%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/MapFileType.java (80%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/MapStorage.java (93%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/MapStorageCompression.java (91%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/MemoryStorage.java (92%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/SimpleJavaMap.java (95%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/SimpleLocalStorageMap.java (96%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/SimpleMap.java (93%) rename core/src/main/java/com/openeggbert/{ => gdx}/storage/map/WebGLStorage.java (93%) diff --git a/android/build.gradle b/android/build.gradle index d374117..e02c693 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -57,7 +57,8 @@ dependencies { implementation "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion" implementation "com.github.MrStahlfelge.gdx-websockets:common:$websocketVersion" implementation project(':core') - + //implementation "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" + natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a" natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86" diff --git a/core/build.gradle b/core/build.gradle index 9794de2..dc9a1f6 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -17,7 +17,7 @@ dependencies { api "com.github.tommyettinger:libgdx-utils:$utilsVersion" api "de.golfgl.gdxcontrollerutils:gdx-controllerutils-mapping:$controllerMappingVersion" api "games.rednblack.miniaudio:miniaudio:$miniaudioVersion" - api "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" + //api "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" annotationProcessor "org.projectlombok:lombok:$lombokVersion" compileOnly "org.projectlombok:lombok:$lombokVersion" testImplementation "org.junit.jupiter:junit-jupiter-api:5.10.3" diff --git a/core/src/main/java/com/openeggbert/core/entity/immovableobjects/.gitkeep b/core/src/main/java/com/openeggbert/core/entity/immovableobjects/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/core/src/main/java/com/openeggbert/core/entity/immovableobjects/.gitkeep @@ -0,0 +1 @@ + diff --git a/core/src/main/java/com/openeggbert/entity/common/OpenEggbertScreenType.java b/core/src/main/java/com/openeggbert/entity/common/OpenEggbertScreenType.java index 2077383..627739b 100644 --- a/core/src/main/java/com/openeggbert/entity/common/OpenEggbertScreenType.java +++ b/core/src/main/java/com/openeggbert/entity/common/OpenEggbertScreenType.java @@ -28,6 +28,8 @@ import lombok.Getter; * @author robertvokac */ public enum OpenEggbertScreenType { + MAIN, + GAME_SPACE_SELECTION, INIT("INIT"), GAMER("GAMER"), MAIN_HUB(""), diff --git a/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageException.java b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageException.java new file mode 100644 index 0000000..11c0d7d --- /dev/null +++ b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageException.java @@ -0,0 +1,32 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Gdx Storage: Multiplatform persistent storage. +// 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.gdx.storage; + +/** + * + * @author robertvokac + */ +public class GdxStorageException extends RuntimeException { + + public GdxStorageException(String string) { + super(string); + } + +} diff --git a/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.gwt.xml b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.gwt.xml new file mode 100644 index 0000000..e348369 --- /dev/null +++ b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.gwt.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.java b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.java new file mode 100644 index 0000000..3bcfd60 --- /dev/null +++ b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageMainClass.java @@ -0,0 +1,34 @@ +package com.openeggbert.gdx.storage; + +import com.badlogic.gdx.ApplicationAdapter; +import com.badlogic.gdx.Gdx; +import com.badlogic.gdx.graphics.GL20; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.SpriteBatch; +import com.badlogic.gdx.utils.ScreenUtils; + +/** {@link com.badlogic.gdx.ApplicationListener} implementation shared by all platforms. */ +public class GdxStorageMainClass extends ApplicationAdapter { + private SpriteBatch batch; + private Texture image; + + @Override + public void create() { + batch = new SpriteBatch(); + image = new Texture("libgdx.png"); + } + + @Override + public void render() { + ScreenUtils.clear(0.15f, 0.15f, 0.2f, 1f); + batch.begin(); + batch.draw(image, 140, 210); + batch.end(); + } + + @Override + public void dispose() { + batch.dispose(); + image.dispose(); + } +} diff --git a/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageUtils.java b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageUtils.java new file mode 100644 index 0000000..50093d9 --- /dev/null +++ b/core/src/main/java/com/openeggbert/gdx/storage/GdxStorageUtils.java @@ -0,0 +1,50 @@ +/////////////////////////////////////////////////////////////////////////////////////////////// +// Gdx Storage: Multiplatform persistent storage. +// 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.gdx.storage; + +import com.badlogic.gdx.utils.Base64Coder; + +/** + * + * @author robertvokac + */ +public class GdxStorageUtils { + + private GdxStorageUtils() { + //Not meant to be instantiated. + } + + public static String decodeBase64AsString(String string) { + return new String(decodeBase64AsByteArray(string)); + } + + public static byte[] decodeBase64AsByteArray(String string) { + return Base64Coder.decode(string); + } + + public static String encodeToBase64(String string) { + return encodeToBase64(string.getBytes()); + } + + public static String encodeToBase64(byte[] data) { + return String.valueOf(Base64Coder.encode(data)); + } + +} diff --git a/core/src/main/java/com/openeggbert/storage/Storage.java b/core/src/main/java/com/openeggbert/gdx/storage/Storage.java similarity index 96% rename from core/src/main/java/com/openeggbert/storage/Storage.java rename to core/src/main/java/com/openeggbert/gdx/storage/Storage.java index 1f36e89..3c4cb66 100644 --- a/core/src/main/java/com/openeggbert/storage/Storage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/Storage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage; +package com.openeggbert.gdx.storage; import com.badlogic.gdx.Application; import java.util.List; diff --git a/core/src/main/java/com/openeggbert/storage/StorageImplementationLoader.java b/core/src/main/java/com/openeggbert/gdx/storage/StorageImplementationLoader.java similarity index 81% rename from core/src/main/java/com/openeggbert/storage/StorageImplementationLoader.java rename to core/src/main/java/com/openeggbert/gdx/storage/StorageImplementationLoader.java index 14a852e..80351d0 100644 --- a/core/src/main/java/com/openeggbert/storage/StorageImplementationLoader.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/StorageImplementationLoader.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,15 +17,14 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage; +package com.openeggbert.gdx.storage; -import com.openeggbert.storage.map.WebGLStorage; -import com.openeggbert.storage.map.MemoryStorage; -import com.openeggbert.storage.filesystem.AndroidStorage; -import com.openeggbert.storage.filesystem.DesktopStorage; +import com.openeggbert.gdx.storage.map.WebGLStorage; +import com.openeggbert.gdx.storage.map.MemoryStorage; +import com.openeggbert.gdx.storage.filesystem.AndroidStorage; +import com.openeggbert.gdx.storage.filesystem.DesktopStorage; import com.badlogic.gdx.Application; import com.badlogic.gdx.Gdx; -import com.openeggbert.entity.common.OpenEggbertException; /** * @@ -56,7 +55,7 @@ public class StorageImplementationLoader { } } if (storage == null) { - throw new OpenEggbertException("Platform is not supported: " + type); + throw new GdxStorageException("Platform is not supported: " + type); } return storage; } diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java b/core/src/main/java/com/openeggbert/gdx/storage/command/BaseCommandLine.java similarity index 94% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/BaseCommandLine.java index a133201..bbb70fe 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/BaseCommandLine.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/BaseCommandLine.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; import java.util.function.Function; diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java b/core/src/main/java/com/openeggbert/gdx/storage/command/CommandLineScanner.java similarity index 90% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/CommandLineScanner.java index 13b75c5..e682f67 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/CommandLineScanner.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/CommandLineScanner.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; /** * diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommand.java similarity index 91% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommand.java index afaa84e..e11e879 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommand.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommand.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; /** * diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLine.java similarity index 98% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLine.java index fc4b6c0..8771033 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLine.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLine.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,9 +17,9 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; -import com.openeggbert.storage.Storage; +import com.openeggbert.gdx.storage.Storage; import java.util.Arrays; import java.util.Date; import java.util.HashMap; diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLineScanner.java similarity index 91% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLineScanner.java index 422b273..b762a48 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandLineScanner.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandLineScanner.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,9 +17,9 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; -import com.openeggbert.storage.map.MemoryStorage; +import com.openeggbert.gdx.storage.map.MemoryStorage; import java.util.Scanner; /** diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandResult.java similarity index 93% rename from core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java rename to core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandResult.java index 829b41b..802ab77 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/command/StorageCommandResult.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/command/StorageCommandResult.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem.command; +package com.openeggbert.gdx.storage.command; /** * diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/AndroidStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/AndroidStorage.java similarity index 90% rename from core/src/main/java/com/openeggbert/storage/filesystem/AndroidStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/filesystem/AndroidStorage.java index 2815f1f..9af90b3 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/AndroidStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/AndroidStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem; +package com.openeggbert.gdx.storage.filesystem; /** * diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/DesktopAndroidStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopAndroidStorage.java similarity index 97% rename from core/src/main/java/com/openeggbert/storage/filesystem/DesktopAndroidStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopAndroidStorage.java index 7514076..16e3dfd 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/DesktopAndroidStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopAndroidStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,10 +17,10 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem; +package com.openeggbert.gdx.storage.filesystem; import com.badlogic.gdx.Application; -import com.openeggbert.storage.Storage; +import com.openeggbert.gdx.storage.Storage; import java.util.List; /** diff --git a/core/src/main/java/com/openeggbert/storage/filesystem/DesktopStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopStorage.java similarity index 90% rename from core/src/main/java/com/openeggbert/storage/filesystem/DesktopStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopStorage.java index 13b6b49..e14f123 100644 --- a/core/src/main/java/com/openeggbert/storage/filesystem/DesktopStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/filesystem/DesktopStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.filesystem; +package com.openeggbert.gdx.storage.filesystem; /** * diff --git a/core/src/main/java/com/openeggbert/storage/map/MapFileType.java b/core/src/main/java/com/openeggbert/gdx/storage/map/MapFileType.java similarity index 80% rename from core/src/main/java/com/openeggbert/storage/map/MapFileType.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/MapFileType.java index 387cf94..72b422b 100644 --- a/core/src/main/java/com/openeggbert/storage/map/MapFileType.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/MapFileType.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,9 +17,10 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; + +import com.openeggbert.gdx.storage.GdxStorageException; -import com.openeggbert.entity.common.OpenEggbertException; /** * @@ -30,7 +31,7 @@ public enum MapFileType { public static MapFileType ofKey(String key, SimpleMap map) { if (!map.contains(key)) { - throw new OpenEggbertException("Map does not contain key: " + key); + throw new GdxStorageException("Map does not contain key: " + key); } String value = map.getString(key); if (value.startsWith(FILE.name())) { @@ -39,7 +40,7 @@ public enum MapFileType { if (value.startsWith(DIRECTORY.name())) { return DIRECTORY; } - throw new OpenEggbertException("Unsupported MapFileType for key in the map: " + key); + throw new GdxStorageException("Unsupported MapFileType for key in the map: " + key); } diff --git a/core/src/main/java/com/openeggbert/storage/map/MapStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/map/MapStorage.java similarity index 93% rename from core/src/main/java/com/openeggbert/storage/map/MapStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/MapStorage.java index 92ebe81..238b6c9 100644 --- a/core/src/main/java/com/openeggbert/storage/map/MapStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/MapStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,13 +17,13 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import com.badlogic.gdx.Application; import com.badlogic.gdx.Gdx; -import com.openeggbert.entity.common.OpenEggbertException; -import com.openeggbert.storage.Storage; -import com.openeggbert.utils.OpenEggbertUtils; +import com.openeggbert.gdx.storage.GdxStorageException; +import com.openeggbert.gdx.storage.GdxStorageUtils; +import com.openeggbert.gdx.storage.Storage; import java.util.List; import java.util.stream.Collectors; @@ -124,10 +124,10 @@ public class MapStorage implements Storage { private static String getParentPath(String path) { // System.out.println("getParentPath()"); if (path == null) { - throw new OpenEggbertException("Path is null"); + throw new GdxStorageException("Path is null"); } if (path.trim().isEmpty()) { - throw new OpenEggbertException("Path is empty"); + throw new GdxStorageException("Path is empty"); } if (path.equals("/")) { @@ -218,10 +218,10 @@ public class MapStorage implements Storage { private String moveOrCp(String source, String target, boolean move, boolean cp) { if (move && cp) { - throw new OpenEggbertException("move == true && cp == true"); + throw new GdxStorageException("move == true && cp == true"); } if (!move && !cp) { - throw new OpenEggbertException("move != true && cp != true"); + throw new GdxStorageException("move != true && cp != true"); } String absolutePathSource = convertToAbsolutePathIfNeeded(source); String absolutePathTarget = convertToAbsolutePathIfNeeded(target); @@ -287,7 +287,7 @@ public class MapStorage implements Storage { return null; } text = text.substring(BINARYFILE.length()); - return OpenEggbertUtils.decodeBase64AsByteArray(text); + return GdxStorageUtils.decodeBase64AsByteArray(text); } private static final String BINARYFILE = "BINARYFILE"; @@ -298,7 +298,7 @@ public class MapStorage implements Storage { @Override public String savebin(String name, byte[] data) { - return savetext(name, BINARYFILE + OpenEggbertUtils.encodeToBase64(data)); + return savetext(name, BINARYFILE + GdxStorageUtils.encodeToBase64(data)); } @Override diff --git a/core/src/main/java/com/openeggbert/storage/map/MapStorageCompression.java b/core/src/main/java/com/openeggbert/gdx/storage/map/MapStorageCompression.java similarity index 91% rename from core/src/main/java/com/openeggbert/storage/map/MapStorageCompression.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/MapStorageCompression.java index 6af03a6..106959c 100644 --- a/core/src/main/java/com/openeggbert/storage/map/MapStorageCompression.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/MapStorageCompression.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; /** * diff --git a/core/src/main/java/com/openeggbert/storage/map/MemoryStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/map/MemoryStorage.java similarity index 92% rename from core/src/main/java/com/openeggbert/storage/map/MemoryStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/MemoryStorage.java index 04945fe..9015532 100644 --- a/core/src/main/java/com/openeggbert/storage/map/MemoryStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/MemoryStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import com.badlogic.gdx.Application; diff --git a/core/src/main/java/com/openeggbert/storage/map/SimpleJavaMap.java b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleJavaMap.java similarity index 95% rename from core/src/main/java/com/openeggbert/storage/map/SimpleJavaMap.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/SimpleJavaMap.java index bb8f21d..b060265 100644 --- a/core/src/main/java/com/openeggbert/storage/map/SimpleJavaMap.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleJavaMap.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import java.util.Collections; import java.util.HashMap; diff --git a/core/src/main/java/com/openeggbert/storage/map/SimpleLocalStorageMap.java b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleLocalStorageMap.java similarity index 96% rename from core/src/main/java/com/openeggbert/storage/map/SimpleLocalStorageMap.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/SimpleLocalStorageMap.java index af7b60f..ae6eb86 100644 --- a/core/src/main/java/com/openeggbert/storage/map/SimpleLocalStorageMap.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleLocalStorageMap.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import com.badlogic.gdx.Preferences; import java.util.Collections; diff --git a/core/src/main/java/com/openeggbert/storage/map/SimpleMap.java b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleMap.java similarity index 93% rename from core/src/main/java/com/openeggbert/storage/map/SimpleMap.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/SimpleMap.java index d2a90dd..3aab24c 100644 --- a/core/src/main/java/com/openeggbert/storage/map/SimpleMap.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/SimpleMap.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import java.util.List; import java.util.Map; diff --git a/core/src/main/java/com/openeggbert/storage/map/WebGLStorage.java b/core/src/main/java/com/openeggbert/gdx/storage/map/WebGLStorage.java similarity index 93% rename from core/src/main/java/com/openeggbert/storage/map/WebGLStorage.java rename to core/src/main/java/com/openeggbert/gdx/storage/map/WebGLStorage.java index 38906ed..459f9f6 100644 --- a/core/src/main/java/com/openeggbert/storage/map/WebGLStorage.java +++ b/core/src/main/java/com/openeggbert/gdx/storage/map/WebGLStorage.java @@ -1,5 +1,5 @@ /////////////////////////////////////////////////////////////////////////////////////////////// -// Open Eggbert: Free recreation of the computer game Speedy Eggbert. +// Gdx Storage: Multiplatform persistent storage. // Copyright (C) 2024 the original author or authors. // // This program is free software: you can redistribute it and/or @@ -17,7 +17,7 @@ // or write to the Free Software // Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. /////////////////////////////////////////////////////////////////////////////////////////////// -package com.openeggbert.storage.map; +package com.openeggbert.gdx.storage.map; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.Preferences; diff --git a/core/src/main/java/com/openeggbert/main/OpenEggbertGame.java b/core/src/main/java/com/openeggbert/main/OpenEggbertGame.java index 6fec830..48528e2 100644 --- a/core/src/main/java/com/openeggbert/main/OpenEggbertGame.java +++ b/core/src/main/java/com/openeggbert/main/OpenEggbertGame.java @@ -37,8 +37,8 @@ import com.openeggbert.mods.Mod; import com.openeggbert.mods.ModIdentification; import com.openeggbert.screens.GameSpaceListScreen; import com.openeggbert.screens.InitScreen; -import com.openeggbert.storage.Storage; -import com.openeggbert.storage.StorageImplementationLoader; +import com.openeggbert.gdx.storage.Storage; +import com.openeggbert.gdx.storage.StorageImplementationLoader; import com.openeggbert.utils.OpenEggbertDisplayMode; import java.util.ArrayList; import java.util.List; diff --git a/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java b/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java index 884d409..8c66d3e 100644 --- a/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java +++ b/core/src/main/java/com/openeggbert/utils/OpenEggbertUtils.java @@ -19,7 +19,6 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.utils; -import com.badlogic.gdx.utils.Base64Coder; import com.openeggbert.compatibility.FileNameCaseType; import com.openeggbert.compatibility.ImageFormat; import com.openeggbert.compatibility.MusicFormat; @@ -114,20 +113,4 @@ public class OpenEggbertUtils { } - public static String decodeBase64AsString(String string) { - return new String(decodeBase64AsByteArray(string)); - } - - public static byte[] decodeBase64AsByteArray(String string) { - return Base64Coder.decode(string); - } - - public static String encodeToBase64(String string) { - return encodeToBase64(string.getBytes()); - } - - public static String encodeToBase64(byte[] data) { - return String.valueOf(Base64Coder.encode(data)); - } - } diff --git a/core/src/test/java/com/openeggbert/utils/OpenEggbertUtilsTest.java b/core/src/test/java/com/openeggbert/utils/OpenEggbertUtilsTest.java index 583472e..d34b6a4 100644 --- a/core/src/test/java/com/openeggbert/utils/OpenEggbertUtilsTest.java +++ b/core/src/test/java/com/openeggbert/utils/OpenEggbertUtilsTest.java @@ -20,9 +20,7 @@ package com.openeggbert.utils; import com.openeggbert.entity.common.GameFileType; -import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.BeforeEach; diff --git a/html/build.gradle b/html/build.gradle index 25b8ca5..bc24f42 100644 --- a/html/build.gradle +++ b/html/build.gradle @@ -18,6 +18,7 @@ gwt { src = files(file('src/main/java')) // Needs to be in front of "modules" below. modules 'com.openeggbert.GdxDefinition' +//,'com.openeggbert.gdx.storage.GdxStorageMainClass' devModules 'com.openeggbert.GdxDefinitionSuperdev' project.webAppDirName = 'webapp' @@ -50,6 +51,7 @@ dependencies { implementation("com.badlogicgames.gdx-controllers:gdx-controllers-gwt:$gdxControllersVersion:sources"){exclude group: "com.badlogicgames.gdx", module: "gdx-backend-gwt"} implementation("com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources") {exclude group: "com.google.gwt", module: "gwt-user"} implementation("com.github.crykn.guacamole:gdx-gwt:$guacamoleVersion:sources"){exclude group: "com.badlogicgames.gdx", module: "gdx-backend-gwt"} + //implementation "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" } diff --git a/html/src/main/java/com/openeggbert/GdxDefinition.gwt.xml b/html/src/main/java/com/openeggbert/GdxDefinition.gwt.xml index a8ed1a1..95212a2 100644 --- a/html/src/main/java/com/openeggbert/GdxDefinition.gwt.xml +++ b/html/src/main/java/com/openeggbert/GdxDefinition.gwt.xml @@ -23,6 +23,7 @@ + @@ -38,4 +39,4 @@ - \ No newline at end of file + diff --git a/lwjgl3/build.gradle b/lwjgl3/build.gradle index daa26cc..46eeea7 100644 --- a/lwjgl3/build.gradle +++ b/lwjgl3/build.gradle @@ -31,6 +31,7 @@ dependencies { implementation "com.github.MrStahlfelge.gdx-websockets:common:$websocketVersion" implementation "com.github.crykn.guacamole:gdx-desktop:$guacamoleVersion" implementation "games.rednblack.miniaudio:miniaudio:$miniaudioVersion:natives-desktop" + //implementation "com.openeggbert.gdx:gdx-storage:0.0.0-SNAPSHOT" implementation project(':core') } diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java index a213889..a3ac363 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopCommandLineScanner.java @@ -19,7 +19,7 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.lwjgl3.debugging.storage; -import com.openeggbert.storage.filesystem.command.CommandLineScanner; +import com.openeggbert.gdx.storage.command.CommandLineScanner; import java.util.Scanner; /** diff --git a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java index 311a543..09bd08f 100644 --- a/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java +++ b/lwjgl3/src/main/java/com/openeggbert/lwjgl3/debugging/storage/DesktopStorageCommandLineScanner.java @@ -19,9 +19,9 @@ /////////////////////////////////////////////////////////////////////////////////////////////// package com.openeggbert.lwjgl3.debugging.storage; -import com.openeggbert.storage.filesystem.command.StorageCommandLine; -import com.openeggbert.storage.filesystem.command.StorageCommandLineScanner; -import com.openeggbert.storage.map.MemoryStorage; +import com.openeggbert.gdx.storage.command.StorageCommandLine; +import com.openeggbert.gdx.storage.command.StorageCommandLineScanner; +import com.openeggbert.gdx.storage.map.MemoryStorage; /** *