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 bd393f9..f0b2d89 100644 --- a/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java +++ b/app/src/main/java/org/vibecoders/moongazer/managers/Assets.java @@ -89,6 +89,10 @@ public class Assets { assetManager.load("textures/main_menu/background.png", Texture.class); assetManager.load("textures/main_menu/title.png", Texture.class); assetManager.load("textures/ui/text_button.png", Texture.class); + assetManager.load("textures/ui/IconExitGame.png", Texture.class); + assetManager.load("textures/ui/UI_Icon_Setting.png", Texture.class); + assetManager.load("textures/ui/ImgReShaSoundOn.png", Texture.class); + assetManager.load("textures/ui/UI_Gcg_Icon_Close.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 9fc7ba6..2fef02a 100644 --- a/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java +++ b/app/src/main/java/org/vibecoders/moongazer/scenes/MainMenu.java @@ -3,6 +3,7 @@ package org.vibecoders.moongazer.scenes; import static org.vibecoders.moongazer.Constants.*; import org.vibecoders.moongazer.managers.Assets; +import org.vibecoders.moongazer.ui.UIImageButton; import org.vibecoders.moongazer.ui.UITextButton; import org.vibecoders.moongazer.Game; @@ -38,8 +39,22 @@ public class MainMenu extends Scene { UITextButton settingsButton = new UITextButton("Settings", font); UITextButton exitButton = new UITextButton("Exit", font); + UIImageButton settingButton = UIImageButton.settingButton(); + UIImageButton exitImgButton = UIImageButton.exitButton(); + UIImageButton soundButton = UIImageButton.soundButton(); + UIImageButton closeButton = UIImageButton.closeButton(); + settingButton.setSize(50, 50); + exitImgButton.setSize(50, 50); + soundButton.setSize(50, 50); + closeButton.setSize(50, 50); + settingButton.setPosition(20, WINDOW_HEIGHT - 70); + exitImgButton.setPosition(WINDOW_WIDTH - 70, WINDOW_HEIGHT - 70); + soundButton.setPosition(20, 20); + closeButton.setPosition(WINDOW_WIDTH - 70, 20); + int buttonWidth = 300; int buttonHeight = 80; + playButton.setSize(buttonWidth, buttonHeight); loadButton.setSize(buttonWidth, buttonHeight); settingsButton.setSize(buttonWidth, buttonHeight); @@ -59,6 +74,10 @@ public class MainMenu extends Scene { settingsButton.onClick(() -> log.debug("Settings clicked")); exitButton.onClick(() -> log.debug("Exit clicked")); + root.addActor(settingButton.getActor()); + root.addActor(exitImgButton.getActor()); + root.addActor(soundButton.getActor()); + root.addActor(closeButton.getActor()); root.addActor(playButton.getActor()); root.addActor(loadButton.getActor()); root.addActor(settingsButton.getActor()); diff --git a/app/src/main/java/org/vibecoders/moongazer/ui/UIImageButton.java b/app/src/main/java/org/vibecoders/moongazer/ui/UIImageButton.java index 3ae9d46..1f541a2 100644 --- a/app/src/main/java/org/vibecoders/moongazer/ui/UIImageButton.java +++ b/app/src/main/java/org/vibecoders/moongazer/ui/UIImageButton.java @@ -1,10 +1,51 @@ package org.vibecoders.moongazer.ui; +import com.badlogic.gdx.graphics.Texture; +import com.badlogic.gdx.graphics.g2d.TextureRegion; import com.badlogic.gdx.scenes.scene2d.ui.ImageButton; +import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; +import org.vibecoders.moongazer.managers.Assets; public class UIImageButton extends UIButton { + public UIImageButton() { this.button = new ImageButton(new ImageButton.ImageButtonStyle()); this.actor = button; } + + public UIImageButton(UIImageButton other) { + this.button = new ImageButton((ImageButton.ImageButtonStyle) other.button.getStyle()); + this.actor = button; + } + + private static UIImageButton createButton(String texturePath) { + Texture texture = Assets.getAsset(texturePath, Texture.class); + TextureRegionDrawable drawable = new TextureRegionDrawable(new TextureRegion(texture)); + + ImageButton.ImageButtonStyle style = new ImageButton.ImageButtonStyle(); + style.imageUp = drawable; + style.imageDown = drawable; + style.imageOver = drawable; + + UIImageButton button = new UIImageButton(); + button.button.setStyle(style); + return button; + } + + public static UIImageButton settingButton() { + return createButton("textures/ui/UI_Icon_Setting.png"); + } + + public static UIImageButton exitButton() { + return createButton("textures/ui/IconExitGame.png"); + } + + public static UIImageButton soundButton() { + return createButton("textures/ui/ImgReShaSoundOn.png"); + } + + public static UIImageButton closeButton() { + return createButton("textures/ui/UI_Gcg_Icon_Close.png"); + } } diff --git a/app/src/main/resources/textures/ui/IconExitGame.png b/app/src/main/resources/textures/ui/IconExitGame.png new file mode 100644 index 0000000..2f5b6f3 Binary files /dev/null and b/app/src/main/resources/textures/ui/IconExitGame.png differ diff --git a/app/src/main/resources/textures/ui/ImgReShaSoundOn.png b/app/src/main/resources/textures/ui/ImgReShaSoundOn.png new file mode 100644 index 0000000..0801164 Binary files /dev/null and b/app/src/main/resources/textures/ui/ImgReShaSoundOn.png differ diff --git a/app/src/main/resources/textures/ui/UI_Gcg_Icon_Close.png b/app/src/main/resources/textures/ui/UI_Gcg_Icon_Close.png new file mode 100644 index 0000000..620d2e0 Binary files /dev/null and b/app/src/main/resources/textures/ui/UI_Gcg_Icon_Close.png differ diff --git a/app/src/main/resources/textures/ui/UI_Icon_Setting.png b/app/src/main/resources/textures/ui/UI_Icon_Setting.png new file mode 100644 index 0000000..18a3d8f Binary files /dev/null and b/app/src/main/resources/textures/ui/UI_Icon_Setting.png differ