mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-16 18:58:00 +00:00
- Attempting to remedy high CPU use when dragging around card panels.
This commit is contained in:
@@ -492,10 +492,13 @@ public class TargetingOverlay {
|
|||||||
// An "initialized"-type variable is needed since we can't initialize on construction
|
// An "initialized"-type variable is needed since we can't initialize on construction
|
||||||
// (because CardPanelContainers aren't ready at that point)
|
// (because CardPanelContainers aren't ready at that point)
|
||||||
private boolean isListening = false;
|
private boolean isListening = false;
|
||||||
|
private boolean isDragged = false;
|
||||||
public boolean getIsListening() { return isListening; }
|
public boolean getIsListening() { return isListening; }
|
||||||
public void setIsListening(boolean listening) { isListening = listening; }
|
public void setIsListening(boolean listening) { isListening = listening; }
|
||||||
|
|
||||||
private void assembleAndRepaint() {
|
private void assembleAndRepaint() {
|
||||||
|
if (isDragged) { return; }
|
||||||
|
|
||||||
final GameView gameView = matchUI.getGameView();
|
final GameView gameView = matchUI.getGameView();
|
||||||
if (gameView != null) {
|
if (gameView != null) {
|
||||||
assembleArcs(gameView.getCombat(), true); // Force update despite timer
|
assembleArcs(gameView.getCombat(), true); // Force update despite timer
|
||||||
@@ -514,16 +517,19 @@ public class TargetingOverlay {
|
|||||||
public void mouseOut(CardPanel panel, MouseEvent evt) {
|
public void mouseOut(CardPanel panel, MouseEvent evt) {
|
||||||
assembleAndRepaint();
|
assembleAndRepaint();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Do not aggressively assemble/repaint when dragging around card panels
|
||||||
|
@Override
|
||||||
|
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) { isDragged = true; }
|
||||||
|
@Override
|
||||||
|
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) { isDragged = false; }
|
||||||
|
|
||||||
// We don't need the other mouse events the interface provides; stub them out
|
// We don't need the other mouse events the interface provides; stub them out
|
||||||
@Override
|
@Override
|
||||||
public void mouseLeftClicked(CardPanel panel, MouseEvent evt) {}
|
public void mouseLeftClicked(CardPanel panel, MouseEvent evt) {}
|
||||||
@Override
|
@Override
|
||||||
public void mouseRightClicked(CardPanel panel, MouseEvent evt) {}
|
public void mouseRightClicked(CardPanel panel, MouseEvent evt) {}
|
||||||
@Override
|
@Override
|
||||||
public void mouseDragStart(CardPanel dragPanel, MouseEvent evt) {}
|
|
||||||
@Override
|
|
||||||
public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {}
|
public void mouseDragged(CardPanel dragPanel, int dragOffsetX, int dragOffsetY, MouseEvent evt) {}
|
||||||
@Override
|
|
||||||
public void mouseDragEnd(CardPanel dragPanel, MouseEvent evt) {}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
private int actualCardsPerRow;
|
private int actualCardsPerRow;
|
||||||
private int mouseDragStartX;
|
private int mouseDragStartX;
|
||||||
private int mouseDragStartY;
|
private int mouseDragStartY;
|
||||||
|
private boolean isDragged;
|
||||||
private boolean isVertical;
|
private boolean isVertical;
|
||||||
private boolean hasScrollbars;
|
private boolean hasScrollbars;
|
||||||
|
|
||||||
@@ -222,8 +223,10 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
this.getParent().validate();
|
this.getParent().validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!isDragged) {
|
||||||
super.doLayout();
|
super.doLayout();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void paint(final Graphics g) {
|
public final void paint(final Graphics g) {
|
||||||
@@ -237,6 +240,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void mouseDragStart(final CardPanel dragPanel, final MouseEvent evt) {
|
public final void mouseDragStart(final CardPanel dragPanel, final MouseEvent evt) {
|
||||||
|
this.isDragged = true;
|
||||||
|
super.setDragged(true);
|
||||||
|
|
||||||
super.mouseDragStart(dragPanel, evt);
|
super.mouseDragStart(dragPanel, evt);
|
||||||
|
|
||||||
this.mouseDragStartX = dragPanel.getCardX();
|
this.mouseDragStartX = dragPanel.getCardX();
|
||||||
@@ -284,6 +290,9 @@ public class CardArea extends CardPanelContainer implements CardPanelMouseListen
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final void mouseDragEnd(final CardPanel dragPanel, final MouseEvent evt) {
|
public final void mouseDragEnd(final CardPanel dragPanel, final MouseEvent evt) {
|
||||||
|
this.isDragged = false;
|
||||||
|
super.setDragged(false);
|
||||||
|
|
||||||
super.mouseDragEnd(dragPanel, evt);
|
super.mouseDragEnd(dragPanel, evt);
|
||||||
this.doLayout();
|
this.doLayout();
|
||||||
final JLayeredPane layeredPane = SwingUtilities.getRootPane(CardPanel.getDragAnimationPanel()).getLayeredPane();
|
final JLayeredPane layeredPane = SwingUtilities.getRootPane(CardPanel.getDragAnimationPanel()).getLayeredPane();
|
||||||
|
|||||||
@@ -63,6 +63,7 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
|||||||
private int mouseDragOffsetX, mouseDragOffsetY;
|
private int mouseDragOffsetX, mouseDragOffsetY;
|
||||||
private int intialMouseDragX = -1, intialMouseDragY;
|
private int intialMouseDragX = -1, intialMouseDragY;
|
||||||
private boolean dragEnabled;
|
private boolean dragEnabled;
|
||||||
|
private boolean isDragged;
|
||||||
|
|
||||||
private final List<LayoutEventListener> layoutListeners = new ArrayList<>(1);
|
private final List<LayoutEventListener> layoutListeners = new ArrayList<>(1);
|
||||||
|
|
||||||
@@ -364,6 +365,14 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
|||||||
this.dragEnabled = dragEnabled;
|
this.dragEnabled = dragEnabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final boolean isDragged() {
|
||||||
|
return this.isDragged;
|
||||||
|
}
|
||||||
|
|
||||||
|
public final void setDragged(boolean isDragged) {
|
||||||
|
this.isDragged = isDragged;
|
||||||
|
}
|
||||||
|
|
||||||
public final void addCardPanelMouseListener(final CardPanelMouseListener listener) {
|
public final void addCardPanelMouseListener(final CardPanelMouseListener listener) {
|
||||||
this.listeners.add(listener);
|
this.listeners.add(listener);
|
||||||
}
|
}
|
||||||
@@ -429,10 +438,12 @@ public abstract class CardPanelContainer extends SkinnedPanel {
|
|||||||
|
|
||||||
private void doingLayout() {
|
private void doingLayout() {
|
||||||
// Inform listeners we're doing layout
|
// Inform listeners we're doing layout
|
||||||
|
if (!this.isDragged) {
|
||||||
for (LayoutEventListener listener : layoutListeners) {
|
for (LayoutEventListener listener : layoutListeners) {
|
||||||
listener.doingLayout();
|
listener.doingLayout();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static interface LayoutEventListener {
|
public static interface LayoutEventListener {
|
||||||
void doingLayout();
|
void doingLayout();
|
||||||
|
|||||||
Reference in New Issue
Block a user