From ce74ad0a82fca5b51c03af4a6e77f9efc8f4f90d Mon Sep 17 00:00:00 2001
From: sanderof <sanderof@stud.ntnu.no>
Date: Mon, 13 Mar 2023 12:26:02 +0100
Subject: [PATCH] feat: Simple AssetManager set up

Issue #19
---
 .../com/game/tankwars/MenuAssetManager.java   | 57 +++++++++++++++++++
 .../com/game/tankwars/model/MenuHeader.java   | 17 ++++++
 .../com/game/tankwars/view/LoginScreen.java   |  3 +
 3 files changed, 77 insertions(+)
 create mode 100644 frontend/core/src/com/game/tankwars/MenuAssetManager.java
 create mode 100644 frontend/core/src/com/game/tankwars/model/MenuHeader.java

diff --git a/frontend/core/src/com/game/tankwars/MenuAssetManager.java b/frontend/core/src/com/game/tankwars/MenuAssetManager.java
new file mode 100644
index 0000000..ef77bdb
--- /dev/null
+++ b/frontend/core/src/com/game/tankwars/MenuAssetManager.java
@@ -0,0 +1,57 @@
+package com.game.tankwars;
+
+import com.badlogic.gdx.assets.AssetManager;
+import com.badlogic.gdx.assets.loaders.FileHandleResolver;
+import com.badlogic.gdx.assets.loaders.resolvers.InternalFileHandleResolver;
+import com.badlogic.gdx.graphics.Texture;
+import com.badlogic.gdx.graphics.g2d.BitmapFont;
+import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
+import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGeneratorLoader;
+import com.badlogic.gdx.graphics.g2d.freetype.FreetypeFontLoader;
+
+import java.util.HashMap;
+
+public class MenuAssetManager {
+
+    private final AssetManager manager;
+
+    private final HashMap<String, String> textures;
+    private final HashMap<String, String> fonts;
+
+    public MenuAssetManager() {
+        manager = new AssetManager();
+
+        textures = new HashMap<>();
+        textures.put("menu-background", "menu-background.png");
+        textures.put("logo", "tankwars-logo.png");
+        textures.put("menu-header-box", "main-menu-welcome-box.png");
+        textures.put("dialog-box", "menu-button.png");
+        textures.put("menu-button", "menu-button-2.png");
+
+        fonts = new HashMap<>();
+        fonts.put("menu-regular", "RollAccurate-mvrx.ttf");
+
+        FileHandleResolver resolver = new InternalFileHandleResolver();
+        manager.setLoader(FreeTypeFontGenerator.class, new FreeTypeFontGeneratorLoader(resolver));
+        manager.setLoader(BitmapFont.class, ".ttf", new FreetypeFontLoader(resolver));
+    }
+
+    public void loadTextures() {
+        for (String internalPath : textures.keySet()) {
+            manager.load(internalPath, Texture.class);
+        }
+    }
+
+    public void loadFonts() {
+        // First, let's define the params and then load our smaller font
+        FreetypeFontLoader.FreeTypeFontLoaderParameter mySmallFont = new FreetypeFontLoader.FreeTypeFontLoaderParameter();
+        mySmallFont.fontFileName = "arial.ttf";
+        mySmallFont.fontParameters.size = 10;
+        manager.load("arial.ttf", BitmapFont.class, mySmallFont);
+    }
+
+    public void finishLoading() {
+        manager.finishLoading();
+    }
+
+}
diff --git a/frontend/core/src/com/game/tankwars/model/MenuHeader.java b/frontend/core/src/com/game/tankwars/model/MenuHeader.java
new file mode 100644
index 0000000..4946701
--- /dev/null
+++ b/frontend/core/src/com/game/tankwars/model/MenuHeader.java
@@ -0,0 +1,17 @@
+package com.game.tankwars.model;
+
+import com.badlogic.gdx.graphics.Texture;
+
+public class MenuHeader {
+
+    private final Texture texture;
+
+    public MenuHeader() {
+        texture = new Texture("main-menu-welcome-box.png");
+    }
+
+    public Texture getTexture() {
+        return  texture;
+    }
+
+}
diff --git a/frontend/core/src/com/game/tankwars/view/LoginScreen.java b/frontend/core/src/com/game/tankwars/view/LoginScreen.java
index 0928db1..6704768 100644
--- a/frontend/core/src/com/game/tankwars/view/LoginScreen.java
+++ b/frontend/core/src/com/game/tankwars/view/LoginScreen.java
@@ -15,6 +15,7 @@ import com.badlogic.gdx.utils.viewport.Viewport;
 import com.game.tankwars.TankWarsGame;
 import com.game.tankwars.controller.LoginController;
 import com.game.tankwars.model.FontGeneratorTTF;
+import com.game.tankwars.model.MenuHeader;
 
 public class LoginScreen extends InputAdapter implements Screen {
 
@@ -27,6 +28,7 @@ public class LoginScreen extends InputAdapter implements Screen {
     private final Texture background;
     private final Sprite logo;
     private final Texture headerBox;
+    private final MenuHeader menuHeader;
 
     private final GlyphLayout title;
 
@@ -51,6 +53,7 @@ public class LoginScreen extends InputAdapter implements Screen {
         logo.setScale(1.3f);
         logo.setPosition(-logo.getWidth() / 2, 32 * heightPercentile);
 
+        menuHeader = new MenuHeader();
         headerBox = new Texture("main-menu-welcome-box.png");
 
         font.getData().setScale(1f);
-- 
GitLab