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