public TabButton(AbstractContentProvider content, int file, int image, int activeImage, String description) { this(content, new OriginalImageLink(EImageLinkType.GUI, file, image, 0), new OriginalImageLink(EImageLinkType.GUI, file, activeImage, 0), description); }
/** * Expects a valid sequence number. * * @param link * @param sequenceNumber * must be an integer from 0 to 2. * @return the image matching the specified indexes. */ private Image getSequencedImage(OriginalImageLink link, int sequenceNumber) { if (link.getType() == EImageLinkType.SETTLER) { return getSettlerSequence(link.getFile(), link.getSequence()).getImageSafe(link.getImage() + sequenceNumber, link::getHumanName); } else { return getGuiImage(link.getFile(), link.getSequence() + sequenceNumber, link::getHumanName); } }
/** * Gets the highest resolution image that fits the given size. * * @param link * The link that describes the image * @param width * The width the image should have (at least). * @param height * The height the image should have (at least). * @return The image or a null image. */ public Image getImage(ImageLink link, float width, float height) { if (link == null) { return NullImage.getInstance(); } else if (link instanceof DirectImageLink) { return getDirectImage((DirectImageLink) link); } else { OriginalImageLink olink = (OriginalImageLink) link; if (olink.getType() == EImageLinkType.LANDSCAPE) { return getLandscapeImage(olink.getFile(), olink.getSequence(), link::getHumanName); } else { return getDetailedImage(olink, width, height); } } }
/** * Returns a GUI or SETTLER type image and if available a higher resolution version. This is also based on whether the image's dimensions in pixels will fit into both the specified width and * height. This is so that an image is always scaled up as downsizing an image can introduce artifacts and it would be wasteful to be calculating the translation of excess pixels from a large * image to a smaller one. However should the smallest image be oversized it will still be returned. */ private Image getDetailedImage(OriginalImageLink link, float width, float height) { Image image = getSequencedImage(link, 0); if (!HIGHRES_IMAGE_FILE_NUMBERS.contains(link.getFile())) { // Higher resolution images are only available in some files. return image; } int sequenceNumber = 0; Image higherResImg = image; while (higherResImg.getWidth() < width && higherResImg.getHeight() < height) { image = higherResImg; if (++sequenceNumber > LAST_SEQUENCE_NUMBER) { break; } higherResImg = getSequencedImage(link, sequenceNumber); } return image; }
DotColor(int imageIndex) { image = new OriginalImageLink(EImageLinkType.SETTLER, 4, 6, imageIndex); }
EMaterialType(short stackIndex, int guiFile, int guiBase, boolean droppable, int defaultPrioIdx, boolean distributionConfigurable) { this.stackIndex = stackIndex; this.defaultPrioIdx = defaultPrioIdx; this.distributionConfigurable = distributionConfigurable; this.ordinal = (byte) super.ordinal(); this.droppable = droppable; imageLink = new OriginalImageLink(EImageLinkType.GUI, guiFile, guiBase, 0); }
public UpgradeButton(ESoldierType soldierType) { super(new SoldierAction(EActionType.UPGRADE_SOLDIERS, soldierType), null, null, ""); this.soldierType = soldierType; switch (soldierType) { case SWORDSMAN: imageLinksActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 396, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 402, 0) }; imageLinksInActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 399, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 405, 0) }; break; case BOWMAN: imageLinksActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 408, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 414, 0) }; imageLinksInActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 411, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 417, 0) }; break; default: imageLinksActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 420, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 426, 0) }; imageLinksInActive = new OriginalImageLink[] { new OriginalImageLink(EImageLinkType.GUI, 3, 423, 0), new OriginalImageLink(EImageLinkType.GUI, 3, 429, 0) }; break; } }
private static OriginalImageLink getIconFor(IMovable movable) { switch (movable.getMovableType()) { case SWORDSMAN_L1: return new OriginalImageLink(EImageLinkType.GUI, 14, 213, 0); case SWORDSMAN_L2: return new OriginalImageLink(EImageLinkType.GUI, 14, 222, 0); case SWORDSMAN_L3: return new OriginalImageLink(EImageLinkType.GUI, 14, 231, 0); case PIKEMAN_L1: return new OriginalImageLink(EImageLinkType.GUI, 14, 216, 0); case PIKEMAN_L2: return new OriginalImageLink(EImageLinkType.GUI, 14, 225, 0); case PIKEMAN_L3: return new OriginalImageLink(EImageLinkType.GUI, 14, 234, 0); case BOWMAN_L1: return new OriginalImageLink(EImageLinkType.GUI, 14, 219, 0); case BOWMAN_L2: return new OriginalImageLink(EImageLinkType.GUI, 14, 228, 0); case BOWMAN_L3: return new OriginalImageLink(EImageLinkType.GUI, 14, 237, 0); default: System.err.println("A unknown image was requested for gui. " + "Type=" + movable.getMovableType()); return new OriginalImageLink(EImageLinkType.GUI, 24, 213, 0); } }
private static OriginalImageLink getOriginalImageLink(Attributes attributes) { int file = Integer.parseInt(attributes.getValue("file")); int sequence = Integer.parseInt(attributes.getValue("sequence")); String imageStr = attributes.getValue("image"); int image = imageStr != null ? Integer.parseInt(imageStr) : 0; EImageLinkType type = EImageLinkType.valueOf(attributes.getValue("type")); return new OriginalImageLink(type, file, sequence, image); }
private void addThieves(float bottom) { OriginalImageLink imageLink = new OriginalImageLink(EImageLinkType.GUI, 14, 183, 0); drawButtongroup(bottom, imageLink, EMovableType.THIEF); }
private void addGeologists(float bottom) { OriginalImageLink imageLink = new OriginalImageLink(EImageLinkType.GUI, 14, 186, 0); drawButtongroup(bottom, imageLink, EMovableType.GEOLOGIST); }
public void setSelected(boolean selected) { this.selected.setBackground(selected ? new OriginalImageLink(EImageLinkType.GUI, 3, 339) : null); } }
private void addPioneers(float bottom) { OriginalImageLink imageLink = new OriginalImageLink(EImageLinkType.GUI, 14, 204, 0); drawButtongroup(bottom, imageLink, EMovableType.PIONEER); }
BUTTON_BUILDINGS_LEFT = BUTTON_BUILDINGS_LEFT_PX / LEFT_DECORATION_WIDTH_PX; LEFT_DECORATION = new OriginalImageLink(DECORATIONS_SUBFOLDER, DECORATIONS_FOLDER_INDEX, LEFT_DECORATION_IMAGE_INDEX, imageSequenceNumber); RIGHT_DECORATION = new OriginalImageLink(DECORATIONS_SUBFOLDER, DECORATIONS_FOLDER_INDEX, RIGHT_DECORATION_IMAGE_INDEX, imageSequenceNumber); IMAGELINK_BUTTON_CHAT_ACTIVE = new OriginalImageLink(BUTTONS_SUBFOLDER, BUTTONS_FOLDER_INDEX, 318, imageSequenceNumber); IMAGELINK_BUTTON_CHAT_INACTIVE = new OriginalImageLink(BUTTONS_SUBFOLDER, BUTTONS_FOLDER_INDEX, 321, imageSequenceNumber);
/** * Converts a given name to an image link. * <p> * Names can either be direct names of the png files or they can have the for "original_<file>_<type>_<sequence * * @param name * The name. * @param imageIndex * The index in the sequence. * @return The image link for that image, no matter if it exists or not. */ public static ImageLink fromName(String name, int imageIndex) { Matcher matcher = ORIGINAL_LINK.matcher(name); if (matcher.matches()) { EImageLinkType type = EImageLinkType.valueOf(matcher.group(ORIGINAL_LINK_TYPE)); int file = Integer.parseInt(matcher.group(ORIGINAL_LINK_FILE)); int sequence = Integer.parseInt(matcher.group(ORIGINAL_LINK_SEQUENCE)); return new OriginalImageLink(type, file, sequence, imageIndex); } else { return new DirectImageLink(name + "." + imageIndex); } }
private void drawShipLink(int imageFile, int sequence, EDirection direction, GLDrawContext gl, float viewX, float viewY, Color color, float shade) { ImageLink shipLink = new OriginalImageLink(EImageLinkType.SETTLER, imageFile, sequence, direction.ordinal); Image image = imageProvider.getImage(shipLink); image.drawAt(gl, viewX, viewY, 0, color, shade); }
private void drawDonkey(int x, int y, IMapObject object, float color) { int i = (getAnimationStep(x, y) / 20) % 6; Image image = imageProvider.getImage(new OriginalImageLink(EImageLinkType.SETTLER, 6, 17, 72 + i)); draw(image, x, y, 0, getColor(object), color); }
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);
public void drawDock(int x, int y, IMapObject object) { forceSetup(); byte fogStatus = context.getVisibleStatus(x, y); if (fogStatus == 0) { return; } float color = getColor(fogStatus); Image image = imageProvider.getImage(new OriginalImageLink(EImageLinkType.SETTLER, 1, 112, 0)); draw(image, x, y, 0, getColor(object), color); }
private void drawShipInConstruction(int x, int y, IShipInConstruction ship) { byte fogOfWarVisibleStatus = visibleGrid != null ? visibleGrid[x][y] : CommonConstants.FOG_OF_WAR_VISIBLE; EDirection direction = ship.getDirection(); EDirection shipImageDirection = direction.rotateRight(3); // ship images have a different direction numbering EMapObjectType shipType = ship.getObjectType(); float shade = getColor(fogOfWarVisibleStatus); float state = ship.getStateProgress(); int baseSequence = (shipType == EMapObjectType.FERRY) ? FERRY_BASE_SEQUENCE : CARGO_SHIP_BASE_SEQUENCE; ImageLink shipLink = new OriginalImageLink(EImageLinkType.SETTLER, SHIP_IMAGE_FILE, baseSequence + 3, shipImageDirection.ordinal); Image image = imageProvider.getImage(shipLink); drawWithConstructionMask(x, y, state, image, shade); }