From 045a81e66a8b744e2af2dfe4421f24a816d7ec02 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Fri, 11 Jul 2014 13:14:44 +0400 Subject: [PATCH] Fixed Issue#396: Display of stacking auras --- .../layout/impl/OldCardLayoutStrategy.java | 17 +++++++++++++++- .../org/mage/plugins/card/CardPluginImpl.java | 20 ++++++++++++++++++- 2 files changed, 35 insertions(+), 2 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/util/layout/impl/OldCardLayoutStrategy.java b/Mage.Client/src/main/java/mage/client/util/layout/impl/OldCardLayoutStrategy.java index 3b341e2832e..09dcc6ccfc6 100644 --- a/Mage.Client/src/main/java/mage/client/util/layout/impl/OldCardLayoutStrategy.java +++ b/Mage.Client/src/main/java/mage/client/util/layout/impl/OldCardLayoutStrategy.java @@ -20,6 +20,17 @@ import java.util.UUID; */ public class OldCardLayoutStrategy implements CardLayoutStrategy { + /** + * This offset is used once to shift all attachments + */ + private static final int ATTACHMENTS_DX_OFFSET = 8; + + /** + * This offset is used for each attachment + */ + private static final int ATTACHMENT_DX_OFFSET = 0; + private static final int ATTACHMENT_DY_OFFSET = 10; + @Override public void doLayout(JLayeredPane jLayeredPane, int width) { Map permanents = ((BattlefieldPanel)jLayeredPane).getPermanents(); @@ -60,7 +71,11 @@ public class OldCardLayoutStrategy implements CardLayoutStrategy { if (link != null) { link.setBounds(r); perm.getLinks().add(link); - r.translate(8, 10); + if (index == 1) { + r.translate(ATTACHMENTS_DX_OFFSET, ATTACHMENT_DY_OFFSET); // do it once + } else { + r.translate(ATTACHMENT_DX_OFFSET, ATTACHMENT_DY_OFFSET); + } perm.setBounds(r); jLayeredPane.moveToFront(link); jLayeredPane.moveToFront(perm); diff --git a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java index ec2840bd185..315610c6142 100644 --- a/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java +++ b/Mage.Client/src/main/java/org/mage/plugins/card/CardPluginImpl.java @@ -47,6 +47,8 @@ public class CardPluginImpl implements CardPlugin { private static final Logger log = Logger.getLogger(CardPluginImpl.class); + private static final int ATTACHMENT_DY_OFFSET = 10; + private static final int GUTTER_Y = 15; private static final int GUTTER_X = 5; static final float EXTRA_CARD_SPACING_X = 0.04f; @@ -373,6 +375,9 @@ public class CardPluginImpl implements CardPlugin { } Stack stack = new Stack(); stack.add(panel); + if (panel.getOriginalPermanent().getAttachments() != null) { + stack.setMaxAttachedCount(panel.getOriginalPermanent().getAttachments().size()); + } add(stack); } } @@ -410,6 +415,11 @@ public class CardPluginImpl implements CardPlugin { private class Stack extends ArrayList { private static final long serialVersionUID = 1L; + /** + * Max attached object count attached to single permanent in the stack. + */ + private int maxAttachedCount = 0; + public Stack() { super(8); } @@ -419,7 +429,15 @@ public class CardPluginImpl implements CardPlugin { } private int getHeight() { - return cardHeight + (size() - 1) * stackSpacingY + cardSpacingY; + return cardHeight + (size() - 1) * stackSpacingY + cardSpacingY + ATTACHMENT_DY_OFFSET*maxAttachedCount; + } + + public int getMaxAttachedCount() { + return maxAttachedCount; + } + + public void setMaxAttachedCount(int maxAttachedCount) { + this.maxAttachedCount = maxAttachedCount; } }