package mage.client.util.layout.impl; import java.awt.Dimension; import java.awt.Rectangle; import java.util.Map; import java.util.UUID; import javax.swing.JLayeredPane; import mage.cards.MagePermanent; import mage.client.game.BattlefieldPanel; import mage.client.plugins.impl.Plugins; import mage.client.util.layout.CardLayoutStrategy; import mage.view.PermanentView; /** * Card layout for client version 1.3.0 and earlier. * * Save it here for a while. * * @author noxx */ public class OldCardLayoutStrategy implements CardLayoutStrategy { /** * This offset is used once to shift all attachments */ private static final int ATTACHMENTS_MIN_DX_OFFSET = 12; /** * This offset is used for each attachment */ private static final int ATTACHMENT_MIN_DY_OFFSET = 12; @Override public void doLayout(BattlefieldPanel battlefieldPanel, int width) { Map<UUID, MagePermanent> permanents = battlefieldPanel.getPermanents(); JLayeredPane jPanel = battlefieldPanel.getMainPanel(); int height = Plugins.instance.sortPermanents(battlefieldPanel.getUiComponentsList(), permanents.values(), battlefieldPanel.isTopPanelBattlefield()); jPanel.setPreferredSize(new Dimension(width - 30, height)); for (PermanentView permanent : battlefieldPanel.getBattlefield().values()) { if (permanent.getAttachments() != null) { groupAttachments(battlefieldPanel, jPanel, permanents, permanent); } } } private void groupAttachments(JLayeredPane jLayeredPane, JLayeredPane jPanel, Map<UUID, MagePermanent> permanents, PermanentView permanent) { MagePermanent perm = permanents.get(permanent.getId()); if (perm == null) { return; } int position = jLayeredPane.getPosition(perm); perm.getLinks().clear(); Rectangle rectangleBaseCard = perm.getBounds(); if (!Plugins.instance.isCardPluginLoaded()) { for (UUID attachmentId : permanent.getAttachments()) { MagePermanent link = permanents.get(attachmentId); if (link != null) { perm.getLinks().add(link); rectangleBaseCard.translate(20, 20); link.setBounds(rectangleBaseCard); jLayeredPane.setPosition(link, ++position); } } } else { int index = permanent.getAttachments().size(); for (UUID attachmentId : permanent.getAttachments()) { MagePermanent link = permanents.get(attachmentId); if (link != null) { link.setBounds(rectangleBaseCard); perm.getLinks().add(link); int dyOffset = Math.max(perm.getHeight() / 10, ATTACHMENT_MIN_DY_OFFSET); if (index == 1) { rectangleBaseCard.translate(Math.max(perm.getWidth() / 10, ATTACHMENTS_MIN_DX_OFFSET), dyOffset); // do it once } else { rectangleBaseCard.translate(0, dyOffset); } perm.setBounds(rectangleBaseCard); jLayeredPane.moveToFront(link); jLayeredPane.moveToFront(perm); jPanel.setComponentZOrder(link, index); index--; } } jPanel.setComponentZOrder(perm, index); } } @Override public int getDefaultZOrder() { throw new UnsupportedOperationException("Not supported yet."); } @Override public void onAdd(BattlefieldPanel jLayeredPane) { throw new UnsupportedOperationException("Not supported yet."); } }