From 7e2e954a36c5f65cff61637f39c64046e2d84eba Mon Sep 17 00:00:00 2001 From: Natan Date: Thu, 20 Jun 2024 23:01:28 -0300 Subject: [PATCH] Fix saving local data --- .../gdx/backends/teavm/TeaApplication.java | 1 + .../teavm/filesystem/MemoryFileStorage.java | 22 ++++++++++++++++--- .../filesystem/types/LocalDBStorage.java | 6 ++--- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java index fa960883..5d11a7a9 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/TeaApplication.java @@ -215,6 +215,7 @@ public void run() { if(delayInitCount == 0) { initState = AppState.LOAD_ASSETS; } + break; case LOAD_ASSETS: int queue = AssetDownloader.getInstance().getQueue(); if(queue == 0) { diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/MemoryFileStorage.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/MemoryFileStorage.java index 1851b719..dc130d03 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/MemoryFileStorage.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/MemoryFileStorage.java @@ -334,6 +334,10 @@ final protected FileData getInternal(String path) { } final public void putFileInternal(String path, byte[] bytes) { + putFileInternal(path, bytes, true); + } + + final public void putFileInternal(String path, byte[] bytes, boolean callMethod) { if(debug) { String pathStr = "\"" + path + "\""; System.out.println(getClass().getSimpleName() + " PUT FILE: " + pathStr + " Bytes: " + bytes.length); @@ -343,10 +347,16 @@ final public void putFileInternal(String path, byte[] bytes) { } FileData fileData = new FileData(path, bytes); fileMap.put(path, fileData); - putFile(path, fileData); + if(callMethod) { + putFile(path, fileData); + } } final public void putFolderInternal(String path) { + putFolderInternal(path, true); + } + + final public void putFolderInternal(String path, boolean callMethod) { if(debug) { String pathStr = "\"" + path + "\""; System.out.println(getClass().getSimpleName() + " PUT FOLDER: " + pathStr); @@ -356,17 +366,23 @@ final public void putFolderInternal(String path) { } FileData fileData = new FileData(path); fileMap.put(path, new FileData(path)); - putFile(path, fileData); + if(callMethod) { + putFile(path, fileData); + } } final public FileData removeInternal(String path) { + return removeInternal(path, true); + } + + final public FileData removeInternal(String path, boolean callMethod) { FileData fileData = fileMap.remove(path); if(debug) { String pathStr = "\"" + path + "\""; String type = fileData != null && fileData.isDirectory() ? " REMOVE FOLDER: " : " REMOVE FILE: "; System.out.println(getClass().getSimpleName() + type + (fileData != null) + " Path: " + pathStr); } - if(fileData != null) { + if(fileData != null && callMethod) { removeFile(path); } return fileData; diff --git a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/types/LocalDBStorage.java b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/types/LocalDBStorage.java index 38891394..2f443934 100644 --- a/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/types/LocalDBStorage.java +++ b/backends/backend-teavm/src/main/java/com/github/xpenatan/gdx/backends/teavm/filesystem/types/LocalDBStorage.java @@ -133,17 +133,17 @@ private void readAllFilesAsync(TeaApplication teaApplication) { int type = dbFileData.getType(); if(type == FileData.TYPE_DIRECTORY) { - putFolderInternal(key); + putFolderInternal(key, false); } else { Int8ArrayWrapper contents = dbFileData.getContents(); byte[] bytes = TypedArrays.toByteArray(contents); - putFileInternal(key, bytes); + putFileInternal(key, bytes, false); } cursor.doContinue(); + teaApplication.delayInitCount--; } - teaApplication.delayInitCount--; }); cursorRequest.setOnError(() -> { teaApplication.delayInitCount--;