diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsLibGDXStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsLibGDXStorage.java
index 1e86c9e..1a17794 100644
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsLibGDXStorage.java
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsLibGDXStorage.java
@@ -1,6 +1,8 @@
package com.pixelgamelibrary.backend.libgdx.assets;
+import com.pixelgamelibrary.api.utils.AssetsTxt;
import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.files.FileHandle;
import com.pixelgamelibrary.api.Pixel;
import com.pixelgamelibrary.api.Platform;
import com.pixelgamelibrary.api.storage.FileType;
@@ -17,6 +19,7 @@ import lombok.Getter;
*/
public class AssetsLibGDXStorage implements Storage {
+ private boolean isProbablyTeaVM = false;
@Getter
private final AssetsTxt assets;
private String workingDirectory = "/";
@@ -25,8 +28,15 @@ public class AssetsLibGDXStorage implements Storage {
assets = new AssetsTxt(readAssetsTxt());
}
- private static String readAssetsTxt() {
- return Gdx.files.internal("assets.txt").readString();
+ private String readAssetsTxt() {
+ final String ASSETSTXT = "assets.txt";
+
+ FileHandle fileHandle = Gdx.files.internal(ASSETSTXT);
+ if(!fileHandle.exists()) {
+ fileHandle = Gdx.files.classpath(ASSETSTXT);
+ isProbablyTeaVM = true;
+ }
+ return fileHandle.readString();
}
@Override
@@ -177,7 +187,7 @@ public class AssetsLibGDXStorage implements Storage {
private com.badlogic.gdx.files.FileHandle createEmbeddedLibGDXFileHandle(String name) {
- if (Pixel.app().isOneOfPlatforms(Platform.ANDROID, Platform.WEB)) {
+ if (Pixel.app().isOneOfPlatforms(Platform.ANDROID, Platform.WEB) && !isProbablyTeaVM) {
return Gdx.files.internal(name);
} else {
return Gdx.files.classpath(name);
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsTxt.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsTxt.java
deleted file mode 100644
index 8862bc6..0000000
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/assets/AssetsTxt.java
+++ /dev/null
@@ -1,177 +0,0 @@
-///////////////////////////////////////////////////////////////////////////////////////////////
-// 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.pixelgamelibrary.backend.libgdx.assets;
-
-import com.badlogic.gdx.Application;
-import com.badlogic.gdx.Gdx;
-import com.badlogic.gdx.files.FileHandle;
-import com.pixelgamelibrary.api.Pixel;
-import com.pixelgamelibrary.api.storage.StorageException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-/**
- *
- * @author robertvokac
- */
-public class AssetsTxt {
-
- private final List> filesLists = new ArrayList<>();
- private final List> directoriesLists = new ArrayList<>();
-
- private final Set directoriesSet = new HashSet<>();
-
- public AssetsTxt(String readString) {
- Pixel.utils().splitStringToLinesAsStream(readString).forEach(line -> {
- var lineArray = Arrays.asList(line.split("/"));
- filesLists.add(lineArray);
- if (lineArray.size() > 1) {
- String fileName = lineArray.get(lineArray.size() - 1);
- String directory = line.substring(0, line.length() - 1 - fileName.length());
- if (!directoriesSet.contains(directory)) {
- directoriesSet.add(directory);
- directoriesLists.add(Arrays.asList(directory.split("/")));
- }
- }
- });
- //directories: without files, with only directories
- Set subDirectoriesTmpSet = new HashSet<>();
- for (String dir : directoriesSet) {
- List list = Arrays.asList(dir.split("/"));
- int depth = list.size();
-
- while (depth > 1) {
- depth = depth - 1;
- String aSubdirectory = list.stream().limit(depth).collect(Collectors.joining("/"));
- if (!directoriesSet.contains(aSubdirectory)) {
- subDirectoriesTmpSet.add(aSubdirectory);
- directoriesLists.add(Arrays.asList(aSubdirectory.split("/")));
- }
-
- }
- }
- directoriesSet.addAll(subDirectoriesTmpSet);
-
- }
-
- public void listDirectories() {
- directoriesLists.forEach(l -> System.out.println(convertListStringToStringPath(l)));
- //return directoriesLists.stream().map(l -> convertListStringToStringPath(l)).collect(Collectors.toList());
- }
-
- public void listFiles() {
- filesLists.forEach(l -> System.out.println(convertListStringToStringPath(l)));
- //return filesLists.stream().map(l -> convertListStringToStringPath(l)).collect(Collectors.toList());
-
- }
-
- public List listRoot(boolean directoryType, boolean fileType) {
- return AssetsTxt.this.list(".", directoryType, fileType);
- }
-
- public List listRoot() {
- return listRoot(true, true);
- }
-
- public List list(String pathToDirectory) {
- return AssetsTxt.this.list(pathToDirectory, true, true);
- }
-
- public List listDirectories(String pathToDirectory) {
- return AssetsTxt.this.list(pathToDirectory, true, false);
- }
-
- public List listFiles(String pathToDirectory) {
- return AssetsTxt.this.list(pathToDirectory, false, true);
- }
-
- public List list(String pathToDirectory, boolean directoryType, boolean fileType) {
-// System.out.println("Calling: AssetsTxt.list( " + pathToDirectory + " ...)");
- if (!directoryType && !fileType) {
- throw new StorageException("Invalid arguments, both arguments are false: directoryType, fileType");
- }
-
- if (pathToDirectory.equals(".")) {
- List files = fileType ? filesLists
- .stream()
- .filter(l -> l.size() == 1)
- .map(l -> l.get(0))
- .collect(Collectors.toList()) : new ArrayList<>();
- List directories = directoryType ? directoriesLists
- .stream()
- .filter(l -> l.size() == 1)
- .map(l -> l.get(0))
- .collect(Collectors.toList()) : new ArrayList<>();
- List result = new ArrayList<>();
- result.addAll(files);
- result.addAll(directories);
- return result;
- }
- if (!directoriesSet.contains(pathToDirectory)) {
- throw new StorageException("There is no such directory in assets: " + pathToDirectory);
- }
-
- var directoryArray = pathToDirectory.split("/");
- int depth = directoryArray.length;
-
- List files = fileType ? filesLists
- .stream()
- .filter(l -> l.size() == depth + 1)
- .filter(l -> convertListStringToStringPath(l).startsWith(pathToDirectory))
- .map(l -> l.get(depth))
- .collect(Collectors.toList()) : new ArrayList<>();
- List directories = directoryType ? directoriesLists
- .stream()
- .filter(l -> l.size() == depth + 1)
- .filter(l -> convertListStringToStringPath(l).startsWith(pathToDirectory))
- .map(l -> l.get(depth))
- .distinct()
- .collect(Collectors.toList()) : new ArrayList<>();
- List result = new ArrayList<>();
- result.addAll(files);
- result.addAll(directories);
- return result;
-
- }
-
- public List list(FileHandle fileHandle) {
- String pathToDirectory = fileHandle.path();//((fileHandle.path().isEmpty() ? "" : (fileHandle.path() + "/"))) + fileHandle.name();
- Function createFileHandle = s
- -> Gdx.app.getType() == Application.ApplicationType.Desktop
- ? Gdx.files.classpath(s) : Gdx.files.internal(s);
- return AssetsTxt.this.list(pathToDirectory)
- .stream()
- .map(p -> createFileHandle.apply((pathToDirectory.equals(".") ? "" : (pathToDirectory + "/")) + p))
- .collect(Collectors.toList());
- }
-
- static String convertListStringToStringPath(List list) {
- return list.stream().collect(Collectors.joining("/"));
- }
-
- public boolean containsDirectory(String path) {
- return directoriesSet.contains(path);
- }
-}
diff --git a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java
index 2375414..044c959 100644
--- a/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java
+++ b/src/main/java/com/pixelgamelibrary/backend/libgdx/storage/DesktopAndroidStorage.java
@@ -21,7 +21,6 @@ package com.pixelgamelibrary.backend.libgdx.storage;
import com.badlogic.gdx.Gdx;
import com.pixelgamelibrary.api.Pixel;
-import com.pixelgamelibrary.api.Platform;
import com.pixelgamelibrary.api.storage.FileType;
import com.pixelgamelibrary.api.storage.RegularFileType;
import com.pixelgamelibrary.api.storage.Storage;