mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-14 17:58:01 +00:00
Update targeting overlay to draw target arrow for stack top when "On" (no initial mouse over required).
Prevent identical target arrows from being added to the arc lists which was causing a minor graphics glitch.
This commit is contained in:
@@ -79,6 +79,13 @@ public class TargetingOverlay {
|
||||
x2 = end.x;
|
||||
y2 = end.y;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj)
|
||||
{
|
||||
Arc arc = (Arc)obj;
|
||||
return ((arc.x1 == x1) && (arc.x2 == x2) && (arc.y1 == y1) && (arc.y2 == y2));
|
||||
}
|
||||
}
|
||||
|
||||
private final Set<CardView> cardsVisualized = new HashSet<CardView>();
|
||||
@@ -331,13 +338,24 @@ public class TargetingOverlay {
|
||||
activeStackItem.addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(final MouseEvent e) {
|
||||
assembleStackArrows();
|
||||
FView.SINGLETON_INSTANCE.getFrame().repaint();
|
||||
if (matchUI.getCDock().getArcState() == ArcState.MOUSEOVER) {
|
||||
assembleStackArrows();
|
||||
FView.SINGLETON_INSTANCE.getFrame().repaint();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void mouseExited(final MouseEvent e) {
|
||||
assembleStackArrows();
|
||||
FView.SINGLETON_INSTANCE.getFrame().repaint();
|
||||
if (matchUI.getCDock().getArcState() == ArcState.MOUSEOVER) {
|
||||
assembleStackArrows();
|
||||
FView.SINGLETON_INSTANCE.getFrame().repaint();
|
||||
}
|
||||
}
|
||||
@Override
|
||||
public void mouseClicked(final MouseEvent e) {
|
||||
if (matchUI.getCDock().getArcState() == ArcState.ON) {
|
||||
assembleStackArrows();
|
||||
FView.SINGLETON_INSTANCE.getFrame().repaint();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -385,17 +403,26 @@ public class TargetingOverlay {
|
||||
return;
|
||||
}
|
||||
|
||||
Arc newArc = new Arc(end,start);
|
||||
|
||||
switch (connects) {
|
||||
case Friends:
|
||||
case FriendsStackTargeting:
|
||||
arcsFriend.add(new Arc(end, start));
|
||||
if (!arcsFriend.contains(newArc)) {
|
||||
arcsFriend.add(newArc);
|
||||
}
|
||||
break;
|
||||
case FoesAttacking:
|
||||
arcsFoeAtk.add(new Arc(end, start));
|
||||
if (!arcsFoeAtk.contains(newArc)) {
|
||||
arcsFoeAtk.add(newArc);
|
||||
}
|
||||
break;
|
||||
case FoesBlocking:
|
||||
case FoesStackTargeting:
|
||||
arcsFoeDef.add(new Arc(end, start));
|
||||
if (!arcsFoeDef.contains(newArc)) {
|
||||
arcsFoeDef.add(newArc);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,7 @@ import forge.gui.framework.DragTab;
|
||||
import forge.gui.framework.EDocID;
|
||||
import forge.gui.framework.IVDoc;
|
||||
import forge.screens.match.controllers.CStack;
|
||||
import forge.screens.match.controllers.CDock.ArcState;
|
||||
import forge.toolbox.FMouseAdapter;
|
||||
import forge.toolbox.FScrollPanel;
|
||||
import forge.toolbox.FSkin;
|
||||
@@ -195,18 +196,44 @@ public class VStack implements IVDoc<CStack> {
|
||||
setWrapStyleWord(true);
|
||||
setMinimumSize(new Dimension(CARD_WIDTH + 2 * PADDING, CARD_HEIGHT + 2 * PADDING));
|
||||
|
||||
// if the top of the stack is not assigned yet...
|
||||
if (hoveredItem == null)
|
||||
{
|
||||
// set things up to draw an arc from it...
|
||||
hoveredItem = StackInstanceTextArea.this;
|
||||
controller.getMatchUI().setCard(item.getSourceCard());
|
||||
}
|
||||
|
||||
addMouseListener(new MouseAdapter() {
|
||||
@Override
|
||||
public void mouseEntered(final MouseEvent e) {
|
||||
hoveredItem = StackInstanceTextArea.this;
|
||||
controller.getMatchUI().setCard(item.getSourceCard());
|
||||
if (controller.getMatchUI().getCDock().getArcState() == ArcState.MOUSEOVER) {
|
||||
hoveredItem = StackInstanceTextArea.this;
|
||||
controller.getMatchUI().setCard(item.getSourceCard());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseExited(final MouseEvent e) {
|
||||
if (hoveredItem == StackInstanceTextArea.this) {
|
||||
hoveredItem = null;
|
||||
}
|
||||
if (controller.getMatchUI().getCDock().getArcState() == ArcState.MOUSEOVER) {
|
||||
if (hoveredItem == StackInstanceTextArea.this) {
|
||||
hoveredItem = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseClicked(final MouseEvent e) {
|
||||
if (controller.getMatchUI().getCDock().getArcState() == ArcState.ON) {
|
||||
if (hoveredItem == StackInstanceTextArea.this) {
|
||||
hoveredItem = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
hoveredItem = StackInstanceTextArea.this;
|
||||
controller.getMatchUI().setCard(item.getSourceCard());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user