From e6405d39c26e19103853be5519de1708fc23603d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maty=C3=A1=C5=A1=20Latner?= <matyas.latner@nic.cz> Date: Wed, 4 Feb 2015 17:52:03 +0100 Subject: [PATCH] #7 Submenus in main menu --- .../application/text/application.properties | 2 ++ core/src/cz/nic/tablexia/Tablexia.java | 1 + .../cz/nic/tablexia/game/GameDefinition.java | 36 +++++++++++++++++++ .../clothing/bottom/MPantsAttribute.java | 4 +-- .../robbery/loader/RobberyTextureManager.java | 4 +-- core/src/cz/nic/tablexia/menu/IMenuItem.java | 8 +++++ core/src/cz/nic/tablexia/menu/MainMenu.java | 32 +++++++++++------ .../nic/tablexia/menu/MainMenuDefinition.java | 30 ++++++++++------ 8 files changed, 91 insertions(+), 26 deletions(-) create mode 100644 core/src/cz/nic/tablexia/game/GameDefinition.java create mode 100644 core/src/cz/nic/tablexia/menu/IMenuItem.java diff --git a/android/assets/application/text/application.properties b/android/assets/application/text/application.properties index 0da43559c..c65c60307 100644 --- a/android/assets/application/text/application.properties +++ b/android/assets/application/text/application.properties @@ -4,3 +4,5 @@ mainmenu_statistics=Statistiky mainmenu_encyclopedia=Encyklopedie mainmenu_about=O aplikaci mainmenu_logout=Odhlásit + +game_robbery_title=Lupiči diff --git a/core/src/cz/nic/tablexia/Tablexia.java b/core/src/cz/nic/tablexia/Tablexia.java index be311d31a..74e081161 100644 --- a/core/src/cz/nic/tablexia/Tablexia.java +++ b/core/src/cz/nic/tablexia/Tablexia.java @@ -93,6 +93,7 @@ public class Tablexia extends TablexiaApplication { public void dispose() { ApplicationTextureManager.getInstance().dispose(); ApplicationFontManager.getInstance().dispose(); + ApplicationTextManager.getInstance().dispose(); } diff --git a/core/src/cz/nic/tablexia/game/GameDefinition.java b/core/src/cz/nic/tablexia/game/GameDefinition.java new file mode 100644 index 000000000..1dadee428 --- /dev/null +++ b/core/src/cz/nic/tablexia/game/GameDefinition.java @@ -0,0 +1,36 @@ +package cz.nic.tablexia.game; + +import cz.nic.tablexia.Tablexia.ChangeScreenEvent; +import cz.nic.tablexia.TablexiaApplication.ScreenTransaction; +import cz.nic.tablexia.bus.ApplicationBus; +import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; +import cz.nic.tablexia.game.games.robbery.RuleScreen; +import cz.nic.tablexia.loader.ApplicationTextManager; +import cz.nic.tablexia.menu.IMenuItem; +import cz.nic.tablexia.screen.AbstractTablexiaScreen; + + +public enum GameDefinition implements ApplicationEvent, IMenuItem { + + ROBBERY ("game_robbery_title", RuleScreen.class); + + private String menuTextKey; + private Class<? extends AbstractTablexiaScreen> screenClass; + + private GameDefinition(String nameResource, Class<? extends AbstractTablexiaScreen> screenClass) { + this.menuTextKey = nameResource; + this.screenClass = screenClass; + } + + @Override + public String getTitle() { + return ApplicationTextManager.getInstance().getResult().get(menuTextKey); + } + + @Override + public void performAction() { + ApplicationBus.getInstance().publishAsync(this); + ApplicationBus.getInstance().publishAsync(new ChangeScreenEvent(screenClass, ScreenTransaction.FADE)); + } + +} diff --git a/core/src/cz/nic/tablexia/game/games/robbery/creature/attribute/clothing/bottom/MPantsAttribute.java b/core/src/cz/nic/tablexia/game/games/robbery/creature/attribute/clothing/bottom/MPantsAttribute.java index 9741be227..cfc5daa04 100644 --- a/core/src/cz/nic/tablexia/game/games/robbery/creature/attribute/clothing/bottom/MPantsAttribute.java +++ b/core/src/cz/nic/tablexia/game/games/robbery/creature/attribute/clothing/bottom/MPantsAttribute.java @@ -36,8 +36,8 @@ public class MPantsAttribute extends BottomAttribute { add(new AttributeDescription(AttributeColor.BROWN, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_BROWN, MPantsAttribute.class)); add(new AttributeDescription(AttributeColor.GREEN, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_GREEN, MPantsAttribute.class)); add(new AttributeDescription(AttributeColor.GREY, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_GREY, MPantsAttribute.class)); - add(new AttributeDescription(AttributeColor.RED, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_RED, MPantsAttribute.class)); - add(new AttributeDescription(AttributeColor.YELLOW, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_YELLOW, MPantsAttribute.class)); + add(new AttributeDescription(AttributeColor.RED, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_RED, MPantsAttribute.class)); + add(new AttributeDescription(AttributeColor.YELLOW, AttributeGender.MALE, RobberyTextureManager.ATTRIBUTE_M_PANTS_YELLOW, MPantsAttribute.class)); } }; diff --git a/core/src/cz/nic/tablexia/game/games/robbery/loader/RobberyTextureManager.java b/core/src/cz/nic/tablexia/game/games/robbery/loader/RobberyTextureManager.java index c6bbff548..ea42e6512 100644 --- a/core/src/cz/nic/tablexia/game/games/robbery/loader/RobberyTextureManager.java +++ b/core/src/cz/nic/tablexia/game/games/robbery/loader/RobberyTextureManager.java @@ -20,8 +20,8 @@ public class RobberyTextureManager extends AssetManager implements IApplicationL @Override public synchronized void dispose() { - super.dispose(); - instance = null; +// super.dispose(); +// instance = null; } public static final String GAME_ROBBERY_GFX_PATH = "game/robbery/gfx/"; diff --git a/core/src/cz/nic/tablexia/menu/IMenuItem.java b/core/src/cz/nic/tablexia/menu/IMenuItem.java new file mode 100644 index 000000000..fc984a319 --- /dev/null +++ b/core/src/cz/nic/tablexia/menu/IMenuItem.java @@ -0,0 +1,8 @@ +package cz.nic.tablexia.menu; + +public interface IMenuItem { + + public String getTitle(); + public void performAction(); + +} diff --git a/core/src/cz/nic/tablexia/menu/MainMenu.java b/core/src/cz/nic/tablexia/menu/MainMenu.java index 741e0fc69..ca7ed1c6e 100644 --- a/core/src/cz/nic/tablexia/menu/MainMenu.java +++ b/core/src/cz/nic/tablexia/menu/MainMenu.java @@ -49,19 +49,29 @@ public class MainMenu extends Container<Table> { public void initMenuItems() { menuTableLayout.reset(); menuTableLayout.setDebug(TablexiaSettings.isShowBoudingBoxes()); - for (final MainMenuDefinition mainMenuDefinition : MainMenuDefinition.values()) { - TextButton menuButton = new TextButton(mainMenuDefinition.getMenuTitle(), menuButtonStyle); - menuButton.addListener(new ClickListener() { - - @Override - public void clicked(InputEvent event, float x, float y) { - mainMenuDefinition.performMenuAction(); + for (final MainMenuDefinition menuItem : MainMenuDefinition.values()) { + addMenuItem(menuItem); + IMenuItem[] subMenu = menuItem.getSubmenu(); + if (subMenu != null) { + for (IMenuItem submenuItem : subMenu) { + addMenuItem(submenuItem); } - - }); - menuTableLayout.add(menuButton).expandX(); - menuTableLayout.row(); + } } } + + private void addMenuItem(final IMenuItem menuItem) { + TextButton subMenuButton = new TextButton(menuItem.getTitle(), menuButtonStyle); + subMenuButton.addListener(new ClickListener() { + + @Override + public void clicked(InputEvent event, float x, float y) { + menuItem.performAction(); + } + + }); + menuTableLayout.add(subMenuButton).expandX(); + menuTableLayout.row(); + } } diff --git a/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java b/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java index a2ef67862..47864c807 100644 --- a/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java +++ b/core/src/cz/nic/tablexia/menu/MainMenuDefinition.java @@ -2,30 +2,38 @@ package cz.nic.tablexia.menu; import cz.nic.tablexia.bus.ApplicationBus; import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent; +import cz.nic.tablexia.game.GameDefinition; import cz.nic.tablexia.loader.ApplicationTextManager; -public enum MainMenuDefinition implements ApplicationEvent { +public enum MainMenuDefinition implements ApplicationEvent, IMenuItem { - GAMES ("mainmenu_games"), - HALL_OF_FAME ("mainmenu_halloffame"), - STATISTICS ("mainmenu_statistics"), - ENCYCLOPEDIA ("mainmenu_encyclopedia"), - ABOUT_APPLICATION ("mainmenu_about"), - LOGOUT ("mainmenu_logout"); + GAMES ("mainmenu_games", GameDefinition.values()), + HALL_OF_FAME ("mainmenu_halloffame", null), + STATISTICS ("mainmenu_statistics", null), + ENCYCLOPEDIA ("mainmenu_encyclopedia", null), + ABOUT_APPLICATION ("mainmenu_about", null), + LOGOUT ("mainmenu_logout", null); private String menuTextKey; + private IMenuItem[] submenu; - private MainMenuDefinition(String nameResource) { + private MainMenuDefinition(String nameResource, IMenuItem[] submenu) { this.menuTextKey = nameResource; + this.submenu = submenu; } - public String getMenuTitle() { + @Override + public String getTitle() { return ApplicationTextManager.getInstance().getResult().get(menuTextKey); - } + } - public void performMenuAction() { + @Override + public void performAction() { ApplicationBus.getInstance().publishAsync(this); } + public IMenuItem[] getSubmenu() { + return submenu; + } } -- GitLab