diff --git a/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java b/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java index dee003b..d68a766 100644 --- a/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java +++ b/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java @@ -88,6 +88,7 @@ public class Assets { // Load all assets here assetManager.load("textures/main_menu/background.png", Texture.class); assetManager.load("textures/main_menu/title.png", Texture.class); + assetManager.load("textures/ui/menu_button.png", Texture.class); } public static boolean isLoadedAll() { diff --git a/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java b/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java index 6f7e19c..6f29c41 100644 --- a/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java +++ b/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java @@ -3,34 +3,25 @@ package org.vibecoders.moongazer.scenes; import static org.vibecoders.moongazer.Constants.*; import com.badlogic.gdx.scenes.scene2d.InputEvent; -import com.badlogic.gdx.scenes.scene2d.Stage; -import com.badlogic.gdx.scenes.scene2d.ui.Table; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; -import org.vibecoders.moongazer.buttons.MenuButton; + import org.vibecoders.moongazer.managers.Assets; +import org.vibecoders.moongazer.ui.MenuButton; import org.vibecoders.moongazer.Game; -import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; -import com.badlogic.gdx.scenes.scene2d.ui.Label; -import com.badlogic.gdx.scenes.scene2d.ui.Label.LabelStyle; public class MainMenu extends Scene { - private Label newGameLabel; - private Label loadGameLabel; - private Label settingsLabel; - private Label quitGameLabel; - private Texture backgroundTexture; private Texture titleTexture; public MainMenu(Game game) { super(game); - var font = Assets.getFont("ui", 24); - textLabel = new Label("Moongazer", new LabelStyle(font, Color.BLACK)); - textLabel.setPosition(WINDOW_WIDTH / 2f - textLabel.getWidth() / 2f, WINDOW_HEIGHT / 2f - textLabel.getHeight() / 2f); + backgroundTexture = Assets.getAsset("textures/main_menu/background.png", Texture.class); + titleTexture = Assets.getAsset("textures/main_menu/title.png", Texture.class); + var font = Assets.getFont("ui", 24); MenuButton playButton = new MenuButton("Play", font); MenuButton loadButton = new MenuButton("Load", font); MenuButton settingsButton = new MenuButton("Settings", font); @@ -52,45 +43,44 @@ public class MainMenu extends Scene { settingsButton.setPosition(centerX, startY - buttonSpacing * 2); exitButton.setPosition(centerX, startY - buttonSpacing * 3); - playButton.getActor().addListener(new ClickListener() { + playButton.addEventListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - System.out.println("Play clicked"); + log.debug("Play clicked"); } }); - loadButton.getActor().addListener(new ClickListener() { + loadButton.addEventListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - System.out.println("Load clicked"); + log.debug("Load clicked"); } }); - settingsButton.getActor().addListener(new ClickListener() { + settingsButton.addEventListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - System.out.println("Settings clicked"); + log.debug("Settings clicked"); } }); - exitButton.getActor().addListener(new ClickListener() { + exitButton.addEventListener(new ClickListener() { @Override public void clicked(InputEvent event, float x, float y) { - System.out.println("Exit clicked"); + log.debug("Exit clicked"); } }); - game.root.addActor(textLabel); - game.root.addActor(playButton.getActor()); - game.root.addActor(loadButton.getActor()); - game.root.addActor(settingsButton.getActor()); - game.root.addActor(exitButton.getActor()); + root.addActor(playButton.getActor()); + root.addActor(loadButton.getActor()); + root.addActor(settingsButton.getActor()); + root.addActor(exitButton.getActor()); + game.stage.addActor(root); } @Override public void render(SpriteBatch batch) { batch.draw(backgroundTexture, 0, 0, WINDOW_WIDTH, WINDOW_HEIGHT); - float targetTitleWidth = 300f; float originalWidth = titleTexture.getWidth(); float originalHeight = titleTexture.getHeight(); @@ -100,10 +90,5 @@ public class MainMenu extends Scene { float titleX = (WINDOW_WIDTH - titleWidth) / 2f; float titleY = WINDOW_HEIGHT * 0.58f; batch.draw(titleTexture, titleX, titleY, titleWidth, titleHeight); - - newGameLabel.draw(batch, 1.0f); - loadGameLabel.draw(batch, 1.0f); - settingsLabel.draw(batch, 1.0f); - quitGameLabel.draw(batch, 1.0f); } } \ No newline at end of file diff --git a/app/src/main/java/org/vibecoders/moongazer/buttons/BaseButton.java b/app/src/main/java/org/vibecoders/moongazer/ui/BaseButton.java similarity index 72% rename from app/src/main/java/org/vibecoders/moongazer/buttons/BaseButton.java rename to app/src/main/java/org/vibecoders/moongazer/ui/BaseButton.java index afa829a..f86d020 100644 --- a/app/src/main/java/org/vibecoders/moongazer/buttons/BaseButton.java +++ b/app/src/main/java/org/vibecoders/moongazer/ui/BaseButton.java @@ -1,4 +1,4 @@ -package org.vibecoders.moongazer.buttons; +package org.vibecoders.moongazer.ui; import com.badlogic.gdx.scenes.scene2d.Actor; import com.badlogic.gdx.scenes.scene2d.EventListener; @@ -14,11 +14,11 @@ public abstract class BaseButton { actor.setPosition(x, y); } - public void setSize(int width, int height) { + public void setSize(int width, int height) { actor.setSize(width, height); } - public void eventListener(EventListener eventListener) { + public void addEventListener(EventListener eventListener) { actor.addListener(eventListener); } } diff --git a/app/src/main/java/org/vibecoders/moongazer/buttons/IngameButton.java b/app/src/main/java/org/vibecoders/moongazer/ui/IngameButton.java similarity index 80% rename from app/src/main/java/org/vibecoders/moongazer/buttons/IngameButton.java rename to app/src/main/java/org/vibecoders/moongazer/ui/IngameButton.java index 0a0c082..5a0b5ac 100644 --- a/app/src/main/java/org/vibecoders/moongazer/buttons/IngameButton.java +++ b/app/src/main/java/org/vibecoders/moongazer/ui/IngameButton.java @@ -1,4 +1,4 @@ -package org.vibecoders.moongazer.buttons; +package org.vibecoders.moongazer.ui; import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; diff --git a/app/src/main/java/org/vibecoders/moongazer/buttons/MenuButton.java b/app/src/main/java/org/vibecoders/moongazer/ui/MenuButton.java similarity index 82% rename from app/src/main/java/org/vibecoders/moongazer/buttons/MenuButton.java rename to app/src/main/java/org/vibecoders/moongazer/ui/MenuButton.java index bc18bd6..4d460c3 100644 --- a/app/src/main/java/org/vibecoders/moongazer/buttons/MenuButton.java +++ b/app/src/main/java/org/vibecoders/moongazer/ui/MenuButton.java @@ -1,4 +1,6 @@ -package org.vibecoders.moongazer.buttons; +package org.vibecoders.moongazer.ui; + +import org.vibecoders.moongazer.managers.Assets; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; @@ -10,9 +12,10 @@ import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; public class MenuButton extends BaseButton { private TextButton textButton; + private Texture buttonTexture; public MenuButton(String text, BitmapFont font) { - Texture buttonTexture = new Texture(Gdx.files.internal("icons/MenuIcon.png")); + buttonTexture = Assets.getAsset("textures/ui/menu_button.png", Texture.class); TextureRegionDrawable buttonDrawable = new TextureRegionDrawable(new TextureRegion(buttonTexture)); TextButton.TextButtonStyle style = new TextButton.TextButtonStyle(); diff --git a/app/src/main/resources/icons/MenuIcon.png b/app/src/main/resources/textures/ui/menu_button.png similarity index 100% rename from app/src/main/resources/icons/MenuIcon.png rename to app/src/main/resources/textures/ui/menu_button.png