diff options
| author | ilotterytea <iltsu@alright.party> | 2025-01-21 00:30:48 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2025-01-21 00:30:48 +0500 |
| commit | bbfa6d5e8de8e160f9c0e225da2399d16db0f04c (patch) | |
| tree | 0e6df064b7a0a6186ce04eb1dda28d12dc1aeaf8 /core/src | |
| parent | 046dfa6de637111774016698af626c1086a37e04 (diff) | |
feat: asset manager
Diffstat (limited to 'core/src')
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> { + } +} |
