package org.multiverseking.card.gui; import com.jme3.math.ColorRGBA; import com.jme3.math.Vector2f; import com.jme3.math.Vector4f; import org.multiverseking.card.attribut.Rarity; import org.multiverseking.loader.CardProperties; import org.multiverseking.render.AbstractRender.RenderType; import org.multiverseking.utility.ElementalAttribut; import tonegod.gui.controls.text.Label; import tonegod.gui.controls.windows.Window; import tonegod.gui.core.Element; import tonegod.gui.core.ElementManager; /** * @todo generate too much object have to be solved/reduce.) tonegodgui update * plan to implemented something of this order. * @todo The scale/position of Icon isn't correct when card is rescaled * @author roah */ public class Hover extends Window { /** * Generate a new Hover window to put on top of the card Artwork, Contain * the properties of the card. * * @param screen */ public Hover(ElementManager screen) { this(screen, new Vector2f(300f, 250f), new Vector2f()); } public Hover(ElementManager screen, Vector2f position, Vector2f dimension) { super(screen, "cardPropertiesHover", position, dimension, Vector4f.ZERO, "Textures/Cards/backgrounds/" + Rarity.COMMON.toString().toLowerCase() + ".png"); this.removeAllChildren(); this.setIgnoreMouse(true); } public void setProperties(CardProperties properties) { if (getElementsAsMap().isEmpty()) { initProperties(properties); } else { updateProperties(properties); } } private void initProperties(CardProperties properties) { /** * Label used to show the cost needed for the card. */ Label cost = new Label(screen, "playCostHover", new Vector2f(), new Vector2f(60, 45)); cost.setText("0"); cost.setFont("Interface/Fonts/Vemana2000.fnt"); cost.setFontColor(ColorRGBA.White); cost.setFontSize(30); addChild(cost); cost.setPosition(new Vector2f(getDimensions().x * 0.75f, getDimensions().y * 0.75f)); cost.setIgnoreMouse(true); /** * Window used to show the type of the card. */ setSubType(properties.getRenderType()); /** * Window used to show the Faction of the card. */ setEAttribut(properties.getElement()); /** * Label used to show the name of the card. */ Label cardNameLabel = new Label(screen, "cardNameLabelHover", new Vector2f(), new Vector2f(300, 45)); cardNameLabel.setText(properties.getName()); addChild(cardNameLabel); cardNameLabel.setFont("Interface/Fonts/Purisa.fnt"); cardNameLabel.setPosition(new Vector2f(getDimensions().x * 0.18f, -10)); cardNameLabel.setFontSize(17); cardNameLabel.setFontColor(ColorRGBA.White); cardNameLabel.setIgnoreMouse(true); } public void setEAttribut(ElementalAttribut eAttribut) { Element eWin; if (getElementsAsMap().containsKey("elementalIconHover")) { eWin = getElementsAsMap().get("elementalIconHover"); eWin.setColorMap("Textures/Icons/EAttributs/" + eAttribut.name() + ".png"); eWin.setIgnoreMouse(true); } else { eWin = new Window(this.screen, "elementalIconHover", new Vector2f(), new Vector2f(), Vector4f.ZERO, "Textures/Icons/EAttributs/" + eAttribut.name() + ".png"); eWin.removeAllChildren(); addChild(eWin); eWin.setIgnoreMouse(true); } eWin.setPosition(new Vector2f(getDimensions().x * 0.72f, getDimensions().y * 0.615f)); eWin.setDimensions(getDimensions().x * 0.2f, getDimensions().y * 0.15f); switch (eAttribut) { case EARTH: // eWin.setDimensions(getDimensions().x * 0.2f, getDimensions().y * 0.2f); break; case ICE: // eWin.setDimensions(getDimensions().x * 0.22f, getDimensions().y * 0.22f); break; case NATURE: // eWin.setDimensions(getDimensions().x * 0.2f, getDimensions().y * 0.2f); break; case VOLT: // eWin.setDimensions(getDimensions().x * 0.2f, getDimensions().y * 0.2f); break; case WATER: // eWin.setPosition(new Vector2f(getDimensions().x * 0.72f, getDimensions().y * 0.61f)); // eWin.setDimensions(getDimensions().x * 0.2f, getDimensions().x * 0.2f); break; default: throw new UnsupportedOperationException(eAttribut + " Is not a supported type."); } } public void setCardName(String name) { if (!getElementsAsMap().isEmpty() && getElementsAsMap().containsKey("cardNameLabelHover")) { Element nameLabel = getElementsAsMap().get("cardNameLabelHover"); if (name.length() < 9) { nameLabel.setFontSize(17); nameLabel.setPosition(new Vector2f(getDimensions().x * 0.18f, -10)); } else if (name.length() > 11) { nameLabel.setFontSize(14); nameLabel.setPosition(new Vector2f(getDimensions().x * 0.14f, -10)); } else { nameLabel.setFontSize(15); nameLabel.setPosition(new Vector2f(getDimensions().x * 0.16f, -10)); } nameLabel.setText(name); // nameLabel.setIgnoreMouse(true); } } public void setSubType(RenderType type) { Element icon; if (getElementsAsMap().containsKey("typeIconHover")) { icon = getElementsAsMap().get("typeIconHover"); icon.setColorMap("Textures/Icons/CardType/" + type.toString() + ".png"); } else { icon = new Window(this.screen, "typeIconHover", new Vector2f(), new Vector2f(), Vector4f.ZERO, "Textures/Icons/CardType/" + type.toString() + ".png"); icon.removeAllChildren(); addChild(icon); icon.setIgnoreMouse(true); } icon.setPosition(new Vector2f(getDimensions().x * 0.075f, getDimensions().y * 0.8f)); icon.setDimensions(getDimensions().x * 0.22f, getDimensions().y * 0.15f); switch (type) { case Core: break; case Debug: break; case Environment: break; case Titan: break; case Unit: icon.setPosition(new Vector2f(getDimensions().x * 0.079f, getDimensions().y * 0.8f)); icon.setDimensions(getDimensions().x * 0.21f, getDimensions().y * 0.15f); break; default: throw new UnsupportedOperationException(type + " is not a supported type."); } } public void setCastCost(int cost) { if (!getElementsAsMap().isEmpty() && getElementsAsMap().containsKey("playCostHover")) { Element costLabel = getElementsAsMap().get("playCostHover"); if (cost == 20) { costLabel.setPosition(new Vector2f(getDimensions().x * 0.75f - 6, getDimensions().y * 0.75f)); } else if (cost == 11) { costLabel.setPosition(new Vector2f(getDimensions().x * 0.75f, getDimensions().y * 0.75f)); } else if (cost > 9) { costLabel.setPosition(new Vector2f(getDimensions().x * 0.75f - 5, getDimensions().y * 0.75f)); } else { costLabel.setPosition(new Vector2f(getDimensions().x * 0.75f, getDimensions().y * 0.75f)); } costLabel.setText(Integer.toString(cost)); // costLabel.setIgnoreMouse(true); } } public void setRarity(Rarity rarity) { getMaterial().setTexture("ColorMap", app.getAssetManager().loadTexture("Textures/Cards/backgrounds/" + rarity.name().toLowerCase() + ".png")); } private void updateProperties(CardProperties properties) { // throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }