Performance upgrade on avatar labels.

This commit is contained in:
Doublestrike
2012-02-15 11:10:22 +00:00
parent b70fd7175c
commit 55c6e8136c

View File

@@ -250,7 +250,7 @@ public class ViewSettings extends JPanel {
avatarHuman = lstAvatars.get(humanIndex);
avatarHuman.setOwner(PlayerType.HUMAN);
avatarHuman.repaint();
avatarHuman.repaintOnlyThisLabel();
if (humanIndex == aiIndex || aiIndex >= lstAvatars.size()) {
aiIndex = humanIndex;
@@ -261,18 +261,18 @@ public class ViewSettings extends JPanel {
avatarAI = lstAvatars.get(aiIndex);
avatarAI.setOwner(PlayerType.COMPUTER);
avatarAI.repaint();
avatarAI.repaintOnlyThisLabel();
}
/** Surprisingly complicated - be careful when modifying! */
private void cycleOwner(final AvatarLabel lbl0) {
if (lbl0.getOwner() == null) {
lbl0.setOwner(PlayerType.HUMAN);
lbl0.repaint();
lbl0.repaintOnlyThisLabel();
if (avatarHuman != null) {
avatarHuman.setOwner(null);
avatarHuman.repaint();
avatarHuman.repaintOnlyThisLabel();
}
avatarHuman = lbl0;
@@ -280,41 +280,41 @@ public class ViewSettings extends JPanel {
else if (lbl0.getOwner() == PlayerType.HUMAN) {
// Re-assign avatar to human
avatarHuman.setOwner(null);
avatarHuman.repaint();
avatarHuman.repaintOnlyThisLabel();
for (int i = 0; i < lstAvatars.size(); i++) {
if (lstAvatars.get(i) != lbl0) {
avatarHuman = lstAvatars.get(i);
avatarHuman.setOwner(PlayerType.HUMAN);
avatarHuman.repaint();
avatarHuman.repaintOnlyThisLabel();
break;
}
}
// Assign computer
lbl0.setOwner(PlayerType.COMPUTER);
lbl0.repaint();
lbl0.repaintOnlyThisLabel();
if (avatarAI != null) {
avatarAI.setOwner(null);
avatarAI.repaint();
avatarAI.repaintOnlyThisLabel();
}
avatarAI = lbl0;
}
else {
lbl0.setOwner(null);
lbl0.repaint();
lbl0.repaintOnlyThisLabel();
// Re-assign avatar to computer
avatarAI.setOwner(null);
avatarAI.repaint();
avatarAI.repaintOnlyThisLabel();
for (int i = 0; i < lstAvatars.size(); i++) {
if (lstAvatars.get(i) != avatarHuman) {
avatarAI = lstAvatars.get(i);
avatarAI.setOwner(PlayerType.COMPUTER);
avatarAI.repaint();
avatarAI.repaintOnlyThisLabel();
break;
}
}
@@ -385,13 +385,13 @@ public class ViewSettings extends JPanel {
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseEntered(final MouseEvent evt) { hovered = true; repaint(); }
public void mouseEntered(final MouseEvent evt) { hovered = true; repaintOnlyThisLabel(); }
@Override
public void mouseExited(final MouseEvent evt) { hovered = false; repaint(); }
public void mouseExited(final MouseEvent evt) { hovered = false; repaintOnlyThisLabel(); }
@Override
public void mouseClicked(final MouseEvent evt) { cycleOwner(AvatarLabel.this); repaint(); }
public void mouseClicked(final MouseEvent evt) { cycleOwner(AvatarLabel.this); repaintOnlyThisLabel(); }
});
}
@@ -407,6 +407,11 @@ public class ViewSettings extends JPanel {
return this.index;
}
public void repaintOnlyThisLabel() {
final Dimension d = AvatarLabel.this.getSize();
repaint(0, 0, d.width, d.height);
}
protected void paintComponent(final Graphics graphics0) {
if (hovered) {
graphics0.setColor(FSkin.getColor(FSkin.Colors.CLR_HOVER));