Skip to content
Snippets Groups Projects
Commit 2e2cc186 authored by Matyáš Latner's avatar Matyáš Latner
Browse files

#58 Ability to move with game menu to specific page

parent a01544f9
No related branches found
No related tags found
No related merge requests found
package cz.nic.tablexia.game;
import cz.nic.tablexia.Tablexia.ChangeScreenEvent;
import cz.nic.tablexia.TablexiaApplication.ScreenTransaction;
import cz.nic.tablexia.Tablexia;
import cz.nic.tablexia.TablexiaApplication;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.bus.ApplicationBus.ApplicationEvent;
import cz.nic.tablexia.game.games.in_the_darkness.InTheDarknessGame;
......@@ -15,6 +15,8 @@ import cz.nic.tablexia.loader.application.ApplicationTextManager;
import cz.nic.tablexia.menu.AbstractMenu;
import cz.nic.tablexia.menu.IMenuItem;
import cz.nic.tablexia.model.game.Game;
import cz.nic.tablexia.screen.gamemenu.GameMenuScreen;
import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
public enum GameDefinition implements ApplicationEvent, IMenuItem {
......@@ -77,7 +79,8 @@ public enum GameDefinition implements ApplicationEvent, IMenuItem {
@Override
public void performAction() {
ApplicationBus.getInstance().publishAsync(this);
ApplicationBus.getInstance().publishAsync(new ChangeScreenEvent(screenClass, ScreenTransaction.FADE));
ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(GameMenuScreen.class, TablexiaApplication.ScreenTransaction.FADE));
ApplicationBus.getInstance().publishAsync(new ShowGameMenuPageEvent(GameDefinition.this));
}
@Override
......
......@@ -258,8 +258,16 @@ public abstract class AbstractMenu extends Stack implements Disposable {
menuItemsLayout.addActor(menuItemContainer);
IMenuItem[] subMenu = menuItem.getSubmenu();
if (subMenu != null) {
for (IMenuItem submenuItem : subMenu) {
menuItemsLayout.addActor(new MenuItemContainer(createSubMenuItem(submenuItem), menuItemWidth));
for (final IMenuItem submenuItem : subMenu) {
MenuItemContainer submenuItemContainer = new MenuItemContainer(createSubMenuItem(submenuItem), menuItemWidth);
submenuItemContainer.addListener(new ClickListener() {
@Override
public void clicked(InputEvent event, float x, float y) {
doMenuAction(submenuItem.getMenuAction(), true, true);
performMenuAction(submenuItem);
}
});
menuItemsLayout.addActor(submenuItemContainer);
}
}
}
......
......@@ -13,6 +13,7 @@ import cz.nic.tablexia.TablexiaSettings;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.game.GameDefinition;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
import cz.nic.tablexia.screen.gamemenu.pages.GameMenuPage;
import cz.nic.tablexia.screen.gamemenu.pages.OfficeMenuPage;
import cz.nic.tablexia.util.Utility;
......@@ -20,6 +21,47 @@ import cz.nic.tablexia.util.ui.ViewPager;
public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
public enum GameMenuPageDefinition {
OFFICE_PAGE (0, null),
ROBBERY_PAGE (1, GameDefinition.ROBBERY),
PURSUIT_PAGE (2, GameDefinition.PURSUIT),
KIDNAPPING_PAGE (3, GameDefinition.KIDNAPPING),
NIGH_WATCH_PAGE (4, GameDefinition.NIGHT_WATCH),
SHOOTING_RANGE_PAGE (5, GameDefinition.SHOOTING_RANGE),
IN_THE_DARKNESS_PAGE (6, GameDefinition.IN_THE_DARKNESS);
private int pageNumber;
private GameDefinition gameDefinition;
GameMenuPageDefinition(int pageNumber, GameDefinition gameDefinition) {
this.pageNumber = pageNumber;
this.gameDefinition = gameDefinition;
}
public int getPageNumber() {
return pageNumber;
}
public static GameMenuPageDefinition getGameMenuPageForNumber (int gameMenuPageNumber) {
for (GameMenuPageDefinition gameMenuPageDefinition : GameMenuPageDefinition.values()){
if (gameMenuPageDefinition.getPageNumber() == gameMenuPageNumber) {
return gameMenuPageDefinition;
}
}
return null;
}
public static GameMenuPageDefinition getGameMenuPageForGameDefinition (GameDefinition gameDefinition) {
for (GameMenuPageDefinition gameMenuPageDefinition : GameMenuPageDefinition.values()){
if (gameMenuPageDefinition.gameDefinition != null && gameMenuPageDefinition.gameDefinition == gameDefinition) {
return gameMenuPageDefinition;
}
}
return null;
}
}
private ViewPager vp;
@Override
......@@ -51,8 +93,8 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> {
}
@Handler
public void handleShowStreet(OfficeMenuPage.ShowStreetEvent message) {
vp.scrollToPage(1);
public void handleShowGameMenuPageEvent(ShowGameMenuPageEvent showGameMenuPageEvent) {
vp.scrollToPage(showGameMenuPageEvent.getGameMenuPageDefinition().getPageNumber());
}
@Override
......
package cz.nic.tablexia.screen.gamemenu.event;
import cz.nic.tablexia.bus.ApplicationBus;
import cz.nic.tablexia.game.GameDefinition;
import cz.nic.tablexia.screen.gamemenu.GameMenuScreen;
/**
* Created by Matyáš Latner.
*/
public class ShowGameMenuPageEvent implements ApplicationBus.ApplicationEvent {
private GameMenuScreen.GameMenuPageDefinition gameMenuPageDefinition;
public ShowGameMenuPageEvent(GameDefinition gameDefinition) {
this(GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForGameDefinition(gameDefinition));
}
public ShowGameMenuPageEvent(GameMenuScreen.GameMenuPageDefinition gameMenuPageDefinition) {
this.gameMenuPageDefinition = gameMenuPageDefinition;
}
public GameMenuScreen.GameMenuPageDefinition getGameMenuPageDefinition() {
return gameMenuPageDefinition;
}
}
......@@ -18,6 +18,8 @@ import cz.nic.tablexia.loader.application.ApplicationAtlasManager;
import cz.nic.tablexia.screen.AbstractTablexiaScreen;
import cz.nic.tablexia.screen.encyclopedia.EncyclopediaScreen;
import cz.nic.tablexia.screen.gamemenu.GameMenuAssets;
import cz.nic.tablexia.screen.gamemenu.GameMenuScreen;
import cz.nic.tablexia.screen.gamemenu.event.ShowGameMenuPageEvent;
import cz.nic.tablexia.screen.halloffame.HallOfFameScreen;
import cz.nic.tablexia.screen.profile.ProfileScreen;
import cz.nic.tablexia.screen.statistics.StatisticsScreen;
......@@ -96,7 +98,7 @@ public class OfficeMenuPage extends MenuPage {
} else if (color.equals(HALLOFFAME_COLOR)) {
ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(HallOfFameScreen.class, TablexiaApplication.ScreenTransaction.FADE));
} else if (color.equals(STREET_COLOR)) {
ApplicationBus.getInstance().publishAsync(new ShowStreetEvent());
ApplicationBus.getInstance().publishAsync(new ShowGameMenuPageEvent(GameMenuScreen.GameMenuPageDefinition.getGameMenuPageForNumber(1)));
} else if (color.equals(PROFILE_COLOR)) {
ApplicationBus.getInstance().publishAsync(new Tablexia.ChangeScreenEvent(ProfileScreen.class, TablexiaApplication.ScreenTransaction.FADE));
}
......@@ -158,10 +160,4 @@ public class OfficeMenuPage extends MenuPage {
return new Color(getScreen().getData()[clickX][clickY]);
}
/**
* Event fired by clicking on door telling viewpager to page to first game
*/
public static class ShowStreetEvent implements ApplicationBus.ApplicationEvent {
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment