diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java index 9b199a11955fee7a3027c978c3634ad95ab68709..10b6ad395fd98e73330d46baf20dc43337f91607 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuAssets.java @@ -11,59 +11,10 @@ import cz.nic.tablexia.menu.game.GameMenuDefinition; * Edited by Drahomir Karchnak */ public final class GameMenuAssets { - private GameMenuAssets() { } - public enum GameMenuLayers { - FORE, - MID, - BACK, - TITLE, - STARTBUTTON, - STARTBUTTON_PRESSED - } - - public enum GameBasePaths { - GAME_ROBBERY(1, "bankovniloupez"), - GAME_PURSUIT(2, "pronasledovani"), - GAME_KIDNAPPING(3, "unos"), - GAME_NIGHT_WATCH(4, "nocnisledovani"), - GAME_SHOOTING_RANGE(5, "strelnice"), - GAME_IN_THE_DARKNESS(6, "potme"); - - private int id; - private String path; - - GameBasePaths(int id, String path) { - this.id = id; - this.path = path; - } - - public int getId() { - return id; - } - - public String getPath() { - return path; - } - - - /** - * Gets path to base assets according to game's id - * @param id - * @return path or null, if game with this id doesn't exist - */ - public static String getPathById(int id) { - for(GameBasePaths game : GameBasePaths.values()) { - if(game.getId() == id) - return game.getPath(); - } - return null; - } - } - - private static final String GFX_PATH = "gfx/"; + public static final String GFX_PATH = "gfx/"; public static final String OFFICE = GFX_PATH + "office"; public static final String OFFICE_HALLOFFAME = GFX_PATH + "office_halloffame"; @@ -89,48 +40,4 @@ public final class GameMenuAssets { public static final String WALL_MID = GFX_PATH + "wall_mid"; public static final String WALL_BACK = GFX_PATH + "wall_back"; - - public static List<String> textures = new ArrayList<String>(); - - static { - textures.add(OFFICE); - textures.add(OFFICE_CLICKMAP); - textures.add(DESK); - textures.add(OFFICE_HELP); - textures.add(VIGNETTE); - textures.add(OVERLAY); - - textures.add(DIFF_BAR); - textures.add(DIFF_THUMB); - textures.add(DIFF_THUMB_EASY); - textures.add(DIFF_THUMB_HARD); - textures.add(DIFF_THUMB_MEDIUM); - - textures.add(ENCYCLOPEDIA_PRESSED); - textures.add(HALLOFFAME_PRESSED); - textures.add(STATISTICS_PRESSED); - textures.add(DOOR_PRESSED); - textures.add(PROFILE_PRESSED); - - textures.add(HELP_BUTTON_PRESSED); - textures.add(HELP_BUTTON_RELEASE); - - textures.add(WALL_MID); - textures.add(WALL_BACK); - - for (GameMenuDefinition gd : GameMenuDefinition.values()) { - for (GameMenuLayers gml : GameMenuLayers.values()) { - textures.add(getResourcePath(gd.getGameDefinition(), gml)); - } - } - } - - public static String getResourcePath(GameDefinition game, GameMenuLayers layer) { - String gameBasePath = GameBasePaths.getPathById(game.getGameNumber()); - - if(gameBasePath == null) - throw new IllegalArgumentException("Couldn't find game base assets for ID: " + game.getGameNumber()); - else - return GFX_PATH + gameBasePath + "_" + layer.name().toLowerCase(); - } } \ No newline at end of file diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java index 3a58299fb697e452a943e02790d59e9072ce8738..0f2946f0c0b382c83550757971ed675010286a52 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/GameMenuScreen.java @@ -30,35 +30,62 @@ import cz.nic.tablexia.util.ui.PagedScrollPane; public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> { public static final String SCREEN_STATE_PAGE_NUMBER = "pageNumber"; + public enum GameMenuLayers { + FORE, + MID, + BACK, + TITLE, + STARTBUTTON, + STARTBUTTON_PRESSED + } + public enum GameMenuPageDefinition { + OFFICE_PAGE(0, null, null), + ROBBERY_PAGE(1, GameDefinition.ROBBERY, "bankovniloupez"), + PURSUIT_PAGE(2, GameDefinition.PURSUIT, "pronasledovani"), + KIDNAPPING_PAGE(3, GameDefinition.KIDNAPPING, "unos"), + NIGH_WATCH_PAGE(4, GameDefinition.NIGHT_WATCH, "nocnisledovani"), + SHOOTING_RANGE_PAGE(5, GameDefinition.SHOOTING_RANGE, "strelnice"), + IN_THE_DARKNESS_PAGE(6, GameDefinition.IN_THE_DARKNESS, "potme"); - 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; - private int pageNumber; - private GameDefinition gameDefinition; + //base path to assets without postfix(layer) like mid, back, title etc... + private String baseAssetsPath; - GameMenuPageDefinition(int pageNumber, GameDefinition gameDefinition) { + GameMenuPageDefinition(int pageNumber, GameDefinition gameDefinition, String baseAssetsPath) { this.pageNumber = pageNumber; this.gameDefinition = gameDefinition; + this.baseAssetsPath = baseAssetsPath; + } + + public String getBaseAssetsPath() { + return baseAssetsPath; } public int getPageNumber() { return pageNumber; } + public static String getResourcePath(GameDefinition gameDefinition, GameMenuLayers gameMenuLayer) { + for(GameMenuPageDefinition game : GameMenuPageDefinition.values()) { + if(gameDefinition.getGameNumber() == game.getPageNumber()) { + return GameMenuAssets.GFX_PATH + game.getBaseAssetsPath() + "_" + gameMenuLayer.name().toLowerCase(); + } + } + + throw new IllegalArgumentException("Couldn't find game base assets for game definition: " + gameDefinition.name()); + } + public static GameMenuPageDefinition getGameMenuPageForNumber(int gameMenuPageNumber) { for (GameMenuPageDefinition gameMenuPageDefinition : GameMenuPageDefinition.values()) { if (gameMenuPageDefinition.getPageNumber() == gameMenuPageNumber) { return gameMenuPageDefinition; } } - return null; + + throw new IllegalArgumentException("Couldn't find game definition for page number: " + gameMenuPageNumber); } public static GameMenuPageDefinition getGameMenuPageForGameDefinition(GameDefinition gameDefinition) { @@ -67,7 +94,7 @@ public class GameMenuScreen extends AbstractTablexiaScreen<int[][]> { return gameMenuPageDefinition; } } - return null; + throw new IllegalArgumentException("Couldn't find game page number for game definition: " + gameDefinition.name()); } } diff --git a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java index bf61a9723f081db370b5fd5392ca03eef157d4b2..4bcd8a47dc197f44290c070b1b39f8c3a9c5c531 100644 --- a/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java +++ b/core/src/cz/nic/tablexia/screen/gamemenu/pages/GameMenuPage.java @@ -104,7 +104,7 @@ public class GameMenuPage extends MenuPage { */ public void prepareTitle() { //Resources - TextureRegion title = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.TITLE)); + TextureRegion title = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.TITLE)); final Image titleImage = new Image(title); //Size @@ -127,7 +127,7 @@ public class GameMenuPage extends MenuPage { public void prepareStartButton() { // Prepare Start Button UP/Released // Resources - TextureRegion start = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.STARTBUTTON)); + TextureRegion start = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.STARTBUTTON)); final Image startButton = new Image(start); // Size @@ -149,7 +149,7 @@ public class GameMenuPage extends MenuPage { //Prepare Strat Button Down/Pressed // Resources - TextureRegion startDown = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.STARTBUTTON_PRESSED)); + TextureRegion startDown = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.STARTBUTTON_PRESSED)); final Image startDownButton = new Image(startDown); //Size @@ -375,7 +375,7 @@ public class GameMenuPage extends MenuPage { Color color = new Color(this.getColor().r, this.getColor().g, this.getColor().b, this.getColor().a * parentAlpha); batch.setColor(color); - TextureRegion back = getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.BACK)); + TextureRegion back = getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.BACK)); batch.disableBlending(); //Just adjusting sourceX coordinate to get animated background/sky @@ -395,7 +395,7 @@ public class GameMenuPage extends MenuPage { batch.enableBlending(); // Mid layer travels the same speed - batch.draw( getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.MID)), + batch.draw( getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.MID)), getScreen().getSceneLeftX() + getX(), getScreen().getSceneOuterBottomY() - pagedScrollPaneOffsetY, getScreen().getSceneWidth(), @@ -404,7 +404,7 @@ public class GameMenuPage extends MenuPage { batch.enableBlending(); // Foreground layer travels faster and could be wider than screen. Needs to be clipped - batch.draw( getScreen().getScreenTextureRegion(GameMenuAssets.getResourcePath(game, GameMenuAssets.GameMenuLayers.FORE)), + batch.draw( getScreen().getScreenTextureRegion(GameMenuScreen.GameMenuPageDefinition.getResourcePath(game, GameMenuScreen.GameMenuLayers.FORE)), getScreen().getSceneLeftX() + getX() + (scrollXOffset / 2), getScreen().getSceneOuterBottomY() - pagedScrollPaneOffsetY, getScreen().getSceneWidth(),