/******************************************************************************* * Copyright (c) 2015 * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER * DEALINGS IN THE SOFTWARE. *******************************************************************************/ package jsettlers.graphics.map.controls.original; import jsettlers.common.images.EImageLinkType; import jsettlers.common.images.OriginalImageLink; public class ControlPanelLayoutProperties { public enum Resolution { HEIGHT480, HEIGHT600, HEIGHT768 } private static final ControlPanelLayoutProperties height480 = new ControlPanelLayoutProperties(Resolution.HEIGHT480); private static final ControlPanelLayoutProperties height600 = new ControlPanelLayoutProperties(Resolution.HEIGHT600); private static final ControlPanelLayoutProperties height768 = new ControlPanelLayoutProperties(Resolution.HEIGHT768); private static final int UI_BG_FILE = 4; private static final int UI_BG_SEQINDEX_MAIN = 2; private static final int UI_BG_SEQINDEX_RIGHT = 3; public final float ASPECT_RATIO; public final float MAIN_PANEL_TOP; public final MiniMapLayoutProperties miniMap; public final OriginalImageLink IMAGELINK_MAIN; public final OriginalImageLink IMAGELINK_DECORATION_RIGHT; // relative to main content public final float PRIMARY_TABS_TOP; public final float PRIMARY_TABS_BOTTOM; public final float PRIMARY_TABS_SIDEMARGIN; public final float PRIMARY_TABS_WIDTH; public final float PRIMARY_TABS_SPACING; public final float SECONDARY_TABS_TOP; public final float SECONDARY_TABS_BOTTOM; public final float SECONDARY_TABS_SIDEMARGIN; public final float SECONDARY_TABS_WIDTH; public final float SECONDARY_TABS_SPACING; public final float CONTENT_TOP; public final float CONTENT_BOTTOM; public final float CONTENT_LEFT; public final float CONTENT_RIGHT; public final float SYSTEM_BUTTON_TOP; public final float SYSTEM_BUTTON_BOTTOM; public final float SYSTEM_BUTTON_LEFT; public final float SYSTEM_BUTTON_RIGHT; public final float LOWER_TABS_TOP; public final float LOWER_TABS_BOTTOM; public final float LOWER_TABS_LEFT; public final float LOWER_TABS_WIDTH; public final float RIGHT_DECORATION_WIDTH; // Raw image dimensions. private final float PANEL_HEIGHT_PX; private final float PANEL_WIDTH_PX; private final float RIGHT_DECORATION_WIDTH_PX; private final float PRIMARY_TABS_BUTTON_PLACEHOLDER_WIDTH_PX; private final float PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX; private final float PRIMARY_TABS_INTER_BUTTON_SPACING_PX; private final float PRIMARY_TABS_TOP_PX; private final float PRIMARY_TABS_LEFT_PX; private final float SECONDARY_TABS_BUTTON_WIDTH_PX; private final float SECONDARY_TABS_BUTTON_HEIGHT_PX; private final float SECONDARY_TABS_INTER_BUTTON_SPACING_PX; private final float SECONDARY_TABS_TOP_PX; private final float SECONDARY_TABS_LEFT_PX; private final float CONTENT_PANE_WIDTH_PX; private final float CONTENT_PANE_HEIGHT_PX; private final float CONTENT_PANE_TOP_PX; private final float CONTENT_PANE_LEFT_PX; private final float SYSTEM_BUTTON_PLACEHOLDER_WIDTH_PX; private final float SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX; private final float SYSTEM_BUTTON_TOP_PX; private final float SYSTEM_BUTTON_LEFT_PX; private final float LOWER_TABS_BUTTON_WIDTH_PX; private final float LOWER_TABS_BUTTON_HEIGHT_PX; private final float LOWER_TABS_TOP_PX; private final float LOWER_TABS_LEFT_PX; public static ControlPanelLayoutProperties getLayoutPropertiesFor(float pixelHeight) { if (pixelHeight < 600) { return height480; } else if (pixelHeight < 768) { return height600; } else { return height768; } } public ControlPanelLayoutProperties() { this(Resolution.HEIGHT480); } private ControlPanelLayoutProperties(Resolution resolution) { int imageSequenceNumber; switch (resolution) { case HEIGHT480: miniMap = new MiniMapLayoutProperties(Resolution.HEIGHT480); PANEL_WIDTH_PX = 136; PANEL_HEIGHT_PX = 338; float PRIMARY_BUTTON_IMAGE_SIZE_PX_SMALL = 33; PRIMARY_TABS_BUTTON_PLACEHOLDER_WIDTH_PX = PRIMARY_BUTTON_IMAGE_SIZE_PX_SMALL - 1; // Image needs cropping 1 pixel to fit properly. PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX = PRIMARY_BUTTON_IMAGE_SIZE_PX_SMALL - 1; // Image needs cropping 1 pixel to fit properly. PRIMARY_TABS_INTER_BUTTON_SPACING_PX = 10; PRIMARY_TABS_TOP_PX = PANEL_HEIGHT_PX - 14; PRIMARY_TABS_LEFT_PX = 9; SECONDARY_TABS_BUTTON_WIDTH_PX = 27; SECONDARY_TABS_BUTTON_HEIGHT_PX = 24; SECONDARY_TABS_INTER_BUTTON_SPACING_PX = 2; SECONDARY_TABS_TOP_PX = PANEL_HEIGHT_PX - 46; SECONDARY_TABS_LEFT_PX = 10; CONTENT_PANE_WIDTH_PX = 118; CONTENT_PANE_HEIGHT_PX = 216; CONTENT_PANE_TOP_PX = PANEL_HEIGHT_PX - 77; CONTENT_PANE_LEFT_PX = 9; SYSTEM_BUTTON_PLACEHOLDER_WIDTH_PX = 18; SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX = 27; SYSTEM_BUTTON_TOP_PX = 9 + SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX; SYSTEM_BUTTON_LEFT_PX = 9; LOWER_TABS_BUTTON_WIDTH_PX = 24; LOWER_TABS_BUTTON_HEIGHT_PX = 24; LOWER_TABS_TOP_PX = 12 + LOWER_TABS_BUTTON_HEIGHT_PX; LOWER_TABS_LEFT_PX = 30; RIGHT_DECORATION_WIDTH_PX = 8; imageSequenceNumber = 0; break; case HEIGHT600: miniMap = new MiniMapLayoutProperties(Resolution.HEIGHT600); PANEL_WIDTH_PX = 176; PANEL_HEIGHT_PX = 430; float PRIMARY_BUTTON_IMAGE_SIZE_PX_MEDIUM = 44; PRIMARY_TABS_BUTTON_PLACEHOLDER_WIDTH_PX = PRIMARY_BUTTON_IMAGE_SIZE_PX_MEDIUM - 1; PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX = PRIMARY_BUTTON_IMAGE_SIZE_PX_MEDIUM; PRIMARY_TABS_INTER_BUTTON_SPACING_PX = 13; PRIMARY_TABS_TOP_PX = PANEL_HEIGHT_PX - 5; PRIMARY_TABS_LEFT_PX = 9; SECONDARY_TABS_BUTTON_WIDTH_PX = 36; SECONDARY_TABS_BUTTON_HEIGHT_PX = 32; SECONDARY_TABS_INTER_BUTTON_SPACING_PX = 4; SECONDARY_TABS_TOP_PX = PRIMARY_TABS_TOP_PX - PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX; SECONDARY_TABS_LEFT_PX = 9; CONTENT_PANE_WIDTH_PX = 157; CONTENT_PANE_HEIGHT_PX = 288; CONTENT_PANE_TOP_PX = PANEL_HEIGHT_PX - 91; CONTENT_PANE_LEFT_PX = 10; float SYSTEM_BUTTON_IMAGE_WIDTH_PX_MEDIUM = 24; float SYSTEM_BUTTON_IMAGE_HEIGHT_PX_MEDIUM = 36; SYSTEM_BUTTON_PLACEHOLDER_WIDTH_PX = SYSTEM_BUTTON_IMAGE_WIDTH_PX_MEDIUM + 2; SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX = SYSTEM_BUTTON_IMAGE_HEIGHT_PX_MEDIUM + 3; SYSTEM_BUTTON_TOP_PX = 42; SYSTEM_BUTTON_LEFT_PX = 8; LOWER_TABS_BUTTON_WIDTH_PX = 32; LOWER_TABS_BUTTON_HEIGHT_PX = 32; LOWER_TABS_TOP_PX = 7 + LOWER_TABS_BUTTON_HEIGHT_PX; LOWER_TABS_LEFT_PX = 38; RIGHT_DECORATION_WIDTH_PX = 8; imageSequenceNumber = 1; break; default: case HEIGHT768: miniMap = new MiniMapLayoutProperties(Resolution.HEIGHT768); PANEL_WIDTH_PX = 216; PANEL_HEIGHT_PX = 544; float PRIMARY_BUTTON_IMAGE_SIZE_PX_LARGE = 55; PRIMARY_TABS_BUTTON_PLACEHOLDER_WIDTH_PX = PRIMARY_BUTTON_IMAGE_SIZE_PX_LARGE - 2; // Button image needs cropping 2 pixels to fit properly PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX = 55; PRIMARY_TABS_INTER_BUTTON_SPACING_PX = 17; PRIMARY_TABS_TOP_PX = PANEL_HEIGHT_PX - 9; PRIMARY_TABS_LEFT_PX = 10; SECONDARY_TABS_BUTTON_WIDTH_PX = 45; SECONDARY_TABS_BUTTON_HEIGHT_PX = 40; SECONDARY_TABS_INTER_BUTTON_SPACING_PX = 4; SECONDARY_TABS_TOP_PX = PRIMARY_TABS_TOP_PX - PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX; SECONDARY_TABS_LEFT_PX = PRIMARY_TABS_LEFT_PX; CONTENT_PANE_WIDTH_PX = 197; CONTENT_PANE_HEIGHT_PX = 360; CONTENT_PANE_TOP_PX = PANEL_HEIGHT_PX - 116; CONTENT_PANE_LEFT_PX = 10; SYSTEM_BUTTON_PLACEHOLDER_WIDTH_PX = 30; SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX = 45; SYSTEM_BUTTON_TOP_PX = 8 + SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX; SYSTEM_BUTTON_LEFT_PX = PRIMARY_TABS_LEFT_PX; LOWER_TABS_BUTTON_WIDTH_PX = 40; LOWER_TABS_BUTTON_HEIGHT_PX = 40; LOWER_TABS_TOP_PX = 13 + LOWER_TABS_BUTTON_HEIGHT_PX; LOWER_TABS_LEFT_PX = 45; RIGHT_DECORATION_WIDTH_PX = 8; imageSequenceNumber = 2; } float MAIN_PANEL_ASPECT_RATIO = PANEL_WIDTH_PX / PANEL_HEIGHT_PX; float miniMapHeightRelativeToControlPanelWidth = 1f / miniMap.ASPECT_RATIO; float mainPanelHeightRelativeToControlPanelWidth = miniMap.RIGHT_DECORATION_LEFT / MAIN_PANEL_ASPECT_RATIO; ASPECT_RATIO = 1f / (miniMapHeightRelativeToControlPanelWidth + mainPanelHeightRelativeToControlPanelWidth); MAIN_PANEL_TOP = 1f - (miniMapHeightRelativeToControlPanelWidth / (miniMapHeightRelativeToControlPanelWidth + mainPanelHeightRelativeToControlPanelWidth)); RIGHT_DECORATION_WIDTH = (RIGHT_DECORATION_WIDTH_PX / PANEL_WIDTH_PX) * miniMap.RIGHT_DECORATION_LEFT; PRIMARY_TABS_TOP = PRIMARY_TABS_TOP_PX / PANEL_HEIGHT_PX; PRIMARY_TABS_BOTTOM = (PRIMARY_TABS_TOP_PX - PRIMARY_TABS_BUTTON_PLACEHOLDER_HEIGHT_PX) / PANEL_HEIGHT_PX; PRIMARY_TABS_SIDEMARGIN = PRIMARY_TABS_LEFT_PX / PANEL_WIDTH_PX; PRIMARY_TABS_WIDTH = PRIMARY_TABS_BUTTON_PLACEHOLDER_WIDTH_PX / PANEL_WIDTH_PX; PRIMARY_TABS_SPACING = PRIMARY_TABS_INTER_BUTTON_SPACING_PX / PANEL_WIDTH_PX; SECONDARY_TABS_TOP = SECONDARY_TABS_TOP_PX / PANEL_HEIGHT_PX; SECONDARY_TABS_BOTTOM = (SECONDARY_TABS_TOP_PX - SECONDARY_TABS_BUTTON_HEIGHT_PX) / PANEL_HEIGHT_PX; SECONDARY_TABS_SIDEMARGIN = SECONDARY_TABS_LEFT_PX / PANEL_WIDTH_PX; SECONDARY_TABS_WIDTH = SECONDARY_TABS_BUTTON_WIDTH_PX / PANEL_WIDTH_PX; SECONDARY_TABS_SPACING = SECONDARY_TABS_INTER_BUTTON_SPACING_PX / PANEL_WIDTH_PX; CONTENT_TOP = CONTENT_PANE_TOP_PX / PANEL_HEIGHT_PX; CONTENT_BOTTOM = (CONTENT_PANE_TOP_PX - CONTENT_PANE_HEIGHT_PX) / PANEL_HEIGHT_PX; CONTENT_LEFT = CONTENT_PANE_LEFT_PX / PANEL_WIDTH_PX; CONTENT_RIGHT = (CONTENT_PANE_LEFT_PX + CONTENT_PANE_WIDTH_PX) / PANEL_WIDTH_PX; SYSTEM_BUTTON_TOP = SYSTEM_BUTTON_TOP_PX / PANEL_HEIGHT_PX; SYSTEM_BUTTON_BOTTOM = (SYSTEM_BUTTON_TOP_PX - SYSTEM_BUTTON_PLACEHOLDER_HEIGHT_PX) / PANEL_HEIGHT_PX; SYSTEM_BUTTON_LEFT = SYSTEM_BUTTON_LEFT_PX / PANEL_WIDTH_PX; SYSTEM_BUTTON_RIGHT = (SYSTEM_BUTTON_LEFT_PX + SYSTEM_BUTTON_PLACEHOLDER_WIDTH_PX) / PANEL_WIDTH_PX; LOWER_TABS_TOP = LOWER_TABS_TOP_PX / PANEL_HEIGHT_PX; LOWER_TABS_BOTTOM = (LOWER_TABS_TOP_PX - LOWER_TABS_BUTTON_HEIGHT_PX) / PANEL_HEIGHT_PX; LOWER_TABS_LEFT = LOWER_TABS_LEFT_PX / PANEL_WIDTH_PX; LOWER_TABS_WIDTH = LOWER_TABS_BUTTON_WIDTH_PX / PANEL_WIDTH_PX; IMAGELINK_MAIN = new OriginalImageLink(EImageLinkType.SETTLER, UI_BG_FILE, UI_BG_SEQINDEX_MAIN, imageSequenceNumber); IMAGELINK_DECORATION_RIGHT = new OriginalImageLink(EImageLinkType.SETTLER, UI_BG_FILE, UI_BG_SEQINDEX_RIGHT, imageSequenceNumber); } }