summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/FrogarthaGame.java12
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/assets/AssetUtils.java70
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/Text.java15
-rw-r--r--core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/TextLoader.java40
4 files changed, 137 insertions, 0 deletions
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/FrogarthaGame.java b/core/src/main/java/kz/ilotterytea/frogartha/FrogarthaGame.java
index 28b9ab9..83f3a44 100644
--- a/core/src/main/java/kz/ilotterytea/frogartha/FrogarthaGame.java
+++ b/core/src/main/java/kz/ilotterytea/frogartha/FrogarthaGame.java
@@ -1,6 +1,8 @@
package kz.ilotterytea.frogartha;
import com.badlogic.gdx.Game;
+import com.badlogic.gdx.assets.AssetManager;
+import kz.ilotterytea.frogartha.assets.AssetUtils;
import kz.ilotterytea.frogartha.screens.GameScreen;
import kz.ilotterytea.frogartha.sessions.IdentityClient;
import kz.ilotterytea.frogartha.sessions.SessionClient;
@@ -11,11 +13,17 @@ import kz.ilotterytea.frogartha.sessions.SessionClient;
public class FrogarthaGame extends Game {
private static FrogarthaGame instance;
+ private AssetManager assetManager;
+
private IdentityClient identityClient;
private SessionClient sessionClient;
@Override
public void create() {
+ assetManager = new AssetManager();
+ AssetUtils.setup(assetManager);
+ AssetUtils.queue(assetManager);
+
identityClient = new IdentityClient();
sessionClient = new SessionClient();
@@ -34,4 +42,8 @@ public class FrogarthaGame extends Game {
public IdentityClient getIdentityClient() {
return identityClient;
}
+
+ public AssetManager getAssetManager() {
+ return assetManager;
+ }
}
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/assets/AssetUtils.java b/core/src/main/java/kz/ilotterytea/frogartha/assets/AssetUtils.java
new file mode 100644
index 0000000..8f1c047
--- /dev/null
+++ b/core/src/main/java/kz/ilotterytea/frogartha/assets/AssetUtils.java
@@ -0,0 +1,70 @@
+package kz.ilotterytea.frogartha.assets;
+
+import com.badlogic.gdx.Gdx;
+import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
+import com.badlogic.gdx.audio.Music;
+import com.badlogic.gdx.audio.Sound;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.TextureAtlas;
+import com.badlogic.gdx.scenes.scene2d.ui.Skin;
+import kz.ilotterytea.frogartha.assets.loaders.Text;
+import kz.ilotterytea.frogartha.assets.loaders.TextLoader;
+import net.mgsx.gltf.loaders.gltf.GLTFAssetLoader;
+import net.mgsx.gltf.scene3d.scene.SceneAsset;
+
+public class AssetUtils {
+ public static void setup(AssetManager assetManager) {
+ assetManager.setLoader(SceneAsset.class, ".gltf", new GLTFAssetLoader());
+ assetManager.setLoader(Text.class, new TextLoader(new InternalFileHandleResolver()));
+ }
+
+ public static void queue(AssetManager assetManager) {
+ FileHandle assetsFile = Gdx.files.internal("assets.txt");
+ String contents = assetsFile.readString();
+ String[] filePaths = contents.split("\n");
+
+ for (String filePath : filePaths) {
+ String[] splitFilePath = filePath.split("/");
+ String[] splitFileName = splitFilePath[splitFilePath.length - 1].split("\\.");
+ String extension = splitFileName[splitFileName.length - 1];
+
+ Class<?> type = null;
+
+ switch (extension) {
+ case "png":
+ type = Texture.class;
+ break;
+ case "atlas":
+ type = TextureAtlas.class;
+ break;
+ case "skin":
+ type = Skin.class;
+ break;
+ case "json":
+ case "txt":
+ type = Text.class;
+ break;
+ case "gltf":
+ type = SceneAsset.class;
+ break;
+ case "wav":
+ case "mp3":
+ type = Music.class;
+ break;
+ case "ogg":
+ type = Sound.class;
+ break;
+ default:
+ break;
+ }
+
+ if (type == null) {
+ continue;
+ }
+
+ assetManager.load(filePath, type);
+ }
+ }
+}
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/Text.java b/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/Text.java
new file mode 100644
index 0000000..96990f6
--- /dev/null
+++ b/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/Text.java
@@ -0,0 +1,15 @@
+package kz.ilotterytea.frogartha.assets.loaders;
+
+import com.badlogic.gdx.files.FileHandle;
+
+public class Text {
+ private final String string;
+
+ public Text(FileHandle file) {
+ this.string = new String(file.readBytes());
+ }
+
+ public String getString() {
+ return this.string;
+ }
+}
diff --git a/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/TextLoader.java b/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/TextLoader.java
new file mode 100644
index 0000000..74a4faa
--- /dev/null
+++ b/core/src/main/java/kz/ilotterytea/frogartha/assets/loaders/TextLoader.java
@@ -0,0 +1,40 @@
+package kz.ilotterytea.frogartha.assets.loaders;
+
+import com.badlogic.gdx.assets.AssetDescriptor;
+import com.badlogic.gdx.assets.AssetLoaderParameters;
+import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.assets.loaders.AsynchronousAssetLoader;
+import com.badlogic.gdx.assets.loaders.FileHandleResolver;
+import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.utils.Array;
+
+public class TextLoader extends AsynchronousAssetLoader<Text, TextLoader.TextParameter> {
+ public TextLoader(FileHandleResolver resolver) {
+ super(resolver);
+ }
+
+ Text text;
+
+ @Override
+ public void loadAsync(AssetManager manager, String fileName, FileHandle file, TextParameter parameter) {
+ this.text = null;
+ this.text = new Text(file);
+ }
+
+ @Override
+ public Text loadSync(AssetManager manager, String fileName, FileHandle file, TextParameter parameter) {
+ Text text = this.text;
+ this.text = null;
+
+ return text;
+ }
+
+ @SuppressWarnings("rawtypes")
+ @Override
+ public Array<AssetDescriptor> getDependencies(String fileName, FileHandle file, TextParameter parameter) {
+ return null;
+ }
+
+ public static class TextParameter extends AssetLoaderParameters<Text> {
+ }
+}