diff --git a/core/src/mindustry/ui/fragments/MenuFragment.java b/core/src/mindustry/ui/fragments/MenuFragment.java index 497b2077e173..4e3004aadc59 100644 --- a/core/src/mindustry/ui/fragments/MenuFragment.java +++ b/core/src/mindustry/ui/fragments/MenuFragment.java @@ -28,6 +28,28 @@ public class MenuFragment{ private Button currentMenu; private MenuRenderer renderer; private Seq customButtons = new Seq<>(); + public Seq desktopButtons = new Seq(); + + public MenuFragment(){ + if(!mobile){ + desktopButtons = Seq.with( + new MenuButton("@play", Icon.play, + new MenuButton("@campaign", Icon.play, () -> checkPlay(ui.planet::show)), + new MenuButton("@joingame", Icon.add, () -> checkPlay(ui.join::show)), + new MenuButton("@customgame", Icon.terrain, () -> checkPlay(ui.custom::show)), + new MenuButton("@loadgame", Icon.download, () -> checkPlay(ui.load::show)) + ), + new MenuButton("@database.button", Icon.menu, + new MenuButton("@schematics", Icon.paste, ui.schematics::show), + new MenuButton("@database", Icon.book, ui.database::show), + new MenuButton("@about.button", Icon.info, ui.about::show) + ), + new MenuButton("@editor", Icon.terrain, () -> checkPlay(ui.maps::show)), steam ? new MenuButton("@workshop", Icon.steam, platform::openWorkshop) : null, + new MenuButton("@mods", Icon.book, ui.mods::show), + new MenuButton("@settings", Icon.settings, ui.settings::show) + ); + } + } public void build(Group parent){ renderer = new MenuRenderer(); @@ -187,22 +209,7 @@ private void buildDesktop(){ t.defaults().width(width).height(70f); t.name = "buttons"; - buttons(t, - new MenuButton("@play", Icon.play, - new MenuButton("@campaign", Icon.play, () -> checkPlay(ui.planet::show)), - new MenuButton("@joingame", Icon.add, () -> checkPlay(ui.join::show)), - new MenuButton("@customgame", Icon.terrain, () -> checkPlay(ui.custom::show)), - new MenuButton("@loadgame", Icon.download, () -> checkPlay(ui.load::show)) - ), - new MenuButton("@database.button", Icon.menu, - new MenuButton("@schematics", Icon.paste, ui.schematics::show), - new MenuButton("@database", Icon.book, ui.database::show), - new MenuButton("@about.button", Icon.info, ui.about::show) - ), - new MenuButton("@editor", Icon.terrain, () -> checkPlay(ui.maps::show)), steam ? new MenuButton("@workshop", Icon.steam, platform::openWorkshop) : null, - new MenuButton("@mods", Icon.book, ui.mods::show), - new MenuButton("@settings", Icon.settings, ui.settings::show) - ); + buttons(t, desktopButtons.toArray(MenuButton.class)); buttons(t, customButtons.toArray(MenuButton.class)); buttons(t, new MenuButton("@quit", Icon.exit, Core.app::exit)); }).width(width).growY(); @@ -257,7 +264,7 @@ private void buttons(Table t, MenuButton... buttons){ //correctly offset the button submenu.add().height((Core.graphics.getHeight() - Core.scene.marginTop - Core.scene.marginBottom - out[0].getY(Align.topLeft)) / Scl.scl(1f)); submenu.row(); - buttons(submenu, b.submenu); + buttons(submenu, b.submenu.toArray()); }else{ currentMenu = null; fadeOutMenu(); @@ -296,7 +303,7 @@ public static class MenuButton{ /** Runnable ran when the button is clicked. Ignored on desktop if {@link #submenu} is not null. */ public final Runnable runnable; /** Submenu shown when this button is clicked. Used instead of {@link #runnable} on desktop. */ - public final @Nullable MenuButton[] submenu; + public final @Nullable Seq submenu; /** Constructs a simple menu button, which behaves the same way on desktop and mobile. */ public MenuButton(String text, Drawable icon, Runnable runnable){ @@ -311,7 +318,7 @@ public MenuButton(String text, Drawable icon, Runnable runnable, MenuButton... s this.icon = icon; this.text = text; this.runnable = runnable; - this.submenu = submenu; + this.submenu = Seq.with(submenu); } /** Comstructs a desktop-only button; used internally. */ @@ -319,7 +326,7 @@ public MenuButton(String text, Drawable icon, Runnable runnable, MenuButton... s this.icon = icon; this.text = text; this.runnable = () -> {}; - this.submenu = submenu; + this.submenu = Seq.with(submenu); } } }