mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 21:12:04 -08:00
* Fixed sluggishness of player selection. Reworked flag display in avatar image.
This commit is contained in:
parent
48195629c9
commit
7a90db7995
3 changed files with 52 additions and 36 deletions
|
|
@ -20,6 +20,8 @@ import mage.client.util.Command;
|
|||
*/
|
||||
public class HoverButton extends JPanel implements MouseListener {
|
||||
|
||||
static final int TOP_TEXT_IMAGE_GAP = 3;
|
||||
|
||||
private Image image;
|
||||
private Image hoverImage;
|
||||
private Image disabledImage;
|
||||
|
|
@ -36,6 +38,7 @@ public class HoverButton extends JPanel implements MouseListener {
|
|||
private Dimension overlayImageSize;
|
||||
|
||||
private String topText;
|
||||
private Image topTextImage;
|
||||
|
||||
private boolean isHovered = false;
|
||||
private boolean isSelected = false;
|
||||
|
|
@ -45,7 +48,7 @@ public class HoverButton extends JPanel implements MouseListener {
|
|||
private Command observer = null;
|
||||
private Command onHover = null;
|
||||
private Color textColor = Color.white;
|
||||
private Color textBGColor = Color.black;
|
||||
private final Color textBGColor = Color.black;
|
||||
|
||||
static final Font textFont = new Font("Arial", Font.PLAIN, 12);
|
||||
static final Font textFontMini = new Font("Arial", Font.PLAIN, 11);
|
||||
|
|
@ -120,9 +123,12 @@ public class HoverButton extends JPanel implements MouseListener {
|
|||
}
|
||||
topTextOffsetX = calculateOffsetForTop(g2d, topText);
|
||||
g2d.setColor(textBGColor);
|
||||
g2d.drawString(topText, topTextOffsetX + 1, 13);
|
||||
g2d.drawString(topText, topTextOffsetX + 1, 14);
|
||||
g2d.setColor(textColor);
|
||||
g2d.drawString(topText, topTextOffsetX, 12);
|
||||
g2d.drawString(topText, topTextOffsetX, 13);
|
||||
}
|
||||
if (topTextImage != null) {
|
||||
g.drawImage(topTextImage, 4, 3, this);
|
||||
}
|
||||
if (overlayImage != null) {
|
||||
g.drawImage(overlayImage, (imageSize.width - overlayImageSize.width) / 2, 10, this);
|
||||
|
|
@ -168,7 +174,9 @@ public class HoverButton extends JPanel implements MouseListener {
|
|||
if (topTextOffsetX == -1) { // calculate once
|
||||
FontRenderContext frc = g2d.getFontRenderContext();
|
||||
int textWidth = (int) textFont.getStringBounds(text, frc).getWidth();
|
||||
topTextOffsetX = (imageSize.width - textWidth) / 2;
|
||||
int neededImageWidth = (topTextImage == null ? 0 : topTextImage.getWidth(this));
|
||||
int availableXWidth = imageSize.width - neededImageWidth;
|
||||
topTextOffsetX = (availableXWidth - textWidth) / 2 + neededImageWidth;
|
||||
}
|
||||
return topTextOffsetX;
|
||||
}
|
||||
|
|
@ -284,6 +292,11 @@ public class HoverButton extends JPanel implements MouseListener {
|
|||
this.topText = topText;
|
||||
}
|
||||
|
||||
public void setTopTextImage(Image topTextImage) {
|
||||
this.topTextImage = topTextImage;
|
||||
this.textOffsetX = -1; // rest for new clculation
|
||||
}
|
||||
|
||||
public void setTextAlwaysVisible(boolean textAlwaysVisible) {
|
||||
this.textAlwaysVisible = textAlwaysVisible;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,7 +36,6 @@ package mage.client.game;
|
|||
import java.awt.Color;
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Font;
|
||||
import java.awt.GridLayout;
|
||||
import java.awt.Image;
|
||||
import java.awt.Rectangle;
|
||||
import java.awt.event.ActionEvent;
|
||||
|
|
@ -105,7 +104,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
private static final Border emptyBorder = BorderFactory.createEmptyBorder(0, 0, 0, 0);
|
||||
|
||||
private int avatarId = -1;
|
||||
private String flagName = "";
|
||||
private String flagName;
|
||||
|
||||
private PriorityTimer timer;
|
||||
|
||||
|
|
@ -124,7 +123,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
session = MageFrame.getSession();
|
||||
cheat.setVisible(session.isTestMode());
|
||||
cheat.setFocusable(false);
|
||||
|
||||
flagName = null;
|
||||
if (priorityTime > 0) {
|
||||
long delay = 1000L;
|
||||
|
||||
|
|
@ -157,6 +156,25 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
|
||||
public void update(PlayerView player) {
|
||||
this.player = player;
|
||||
if (flagName == null) { // do only once
|
||||
avatar.setText(this.player.getName());
|
||||
if (!player.getUserData().getFlagName().equals(flagName)) {
|
||||
flagName = player.getUserData().getFlagName();
|
||||
this.avatar.setTopTextImage(CountryUtil.getCountryFlagIcon(flagName).getImage());
|
||||
}
|
||||
// TODO: Add the wins to the tooltiptext of the avatar
|
||||
String countryname = CountryUtil.getCountryName(flagName);
|
||||
if (countryname == null) {
|
||||
countryname = "Unknown";
|
||||
}
|
||||
String tooltip = "<HTML>Name: " + player.getName() + "<br/>Country: " + countryname;
|
||||
avatar.setToolTipText(tooltip);
|
||||
avatar.repaint();
|
||||
|
||||
// used if avatar image can't be used
|
||||
this.btnPlayer.setText(player.getName());
|
||||
this.btnPlayer.setToolTipText(tooltip);
|
||||
}
|
||||
int playerLife = player.getLife();
|
||||
if (playerLife > 99) {
|
||||
Font font = lifeLabel.getFont();
|
||||
|
|
@ -235,16 +253,9 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
Image image = ImageHelper.getImageFromResources(path);
|
||||
Rectangle r = new Rectangle(80, 80);
|
||||
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
|
||||
this.avatar.update("player", resized, resized, resized, resized, r);
|
||||
}
|
||||
if (!player.getUserData().getFlagName().equals(flagName)) {
|
||||
flagName = player.getUserData().getFlagName();
|
||||
this.avatarFlag.setIcon(CountryUtil.getCountryFlagIcon(flagName));
|
||||
this.avatarFlag.setToolTipText(CountryUtil.getCountryName(flagName));
|
||||
avatar.repaint();
|
||||
this.avatar.update(this.player.getName(), resized, resized, resized, resized, r);
|
||||
}
|
||||
}
|
||||
this.avatar.setText(player.getName());
|
||||
if (this.timer != null) {
|
||||
if (player.getPriorityTimeLeft() != Integer.MAX_VALUE) {
|
||||
String priorityTimeValue = getPriorityTimeLeftString(player);
|
||||
|
|
@ -259,8 +270,6 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
}
|
||||
}
|
||||
|
||||
this.btnPlayer.setText(player.getName());
|
||||
this.btnPlayer.setToolTipText("Life: " + player.getLife());
|
||||
if (player.isActive()) {
|
||||
this.avatar.setBorder(greenBorder);
|
||||
this.btnPlayer.setBorder(greenBorder);
|
||||
|
|
@ -324,15 +333,8 @@ public class PlayerPanelExt extends javax.swing.JPanel {
|
|||
Image image = ImageHelper.getImageFromResources(DEFAULT_AVATAR_PATH);
|
||||
|
||||
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
|
||||
avatar = new HoverButton("player", resized, resized, resized, r);
|
||||
avatar.setLayout(new GridLayout(4, 1, 0, 0));
|
||||
avatar.add(new JLabel());
|
||||
avatar.add(new JLabel());
|
||||
avatar.add(avatarFlag);
|
||||
avatar.setAlignTextLeft(true);
|
||||
avatarFlag.setHorizontalAlignment(JLabel.LEFT);
|
||||
avatarFlag.setVerticalAlignment(JLabel.BOTTOM);
|
||||
avatar.add(new JLabel());
|
||||
avatar = new HoverButton("", resized, resized, resized, r);
|
||||
|
||||
String showPlayerNamePermanently = MageFrame.getPreferences().get(PreferencesDialog.KEY_SHOW_PLAYER_NAMES_PERMANENTLY, "true");
|
||||
if (showPlayerNamePermanently.equals("true")) {
|
||||
avatar.setTextAlwaysVisible(true);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue