refactor: clean code

This commit is contained in:
Oleg Agafonov 2024-06-24 06:15:08 +04:00
parent 8d603cea01
commit 3c8d70c64e
2 changed files with 85 additions and 80 deletions

View file

@ -15,7 +15,7 @@ import java.util.ArrayList;
import java.util.List;
/**
* GUI component. Image button with hover support and GUI scale support
* GUI component. Image button with mouse hover and GUI scale support
*
* @author nantuko, JayDi85
*/
@ -309,10 +309,16 @@ public class HoverButton extends JPanel implements MouseListener {
public void mouseReleased(MouseEvent e) {
}
/**
* Set on click action
*/
public void setObserver(Command observer) {
this.observer = observer;
}
/**
* Set on mouse entered action
*/
public void setOnHover(Command onHover) {
this.onHover = onHover;
}

View file

@ -61,7 +61,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
private static final int PANEL_WIDTH = 94;
private static final int PANEL_HEIGHT = 270; // full mode (with avatar image)
private static final int PANEL_HEIGHT_SMALL = 238; // small mode (with avatar button) // TODO: no need in small mode after GUI scale added
private static final int PANEL_HEIGHT_SMALL = 218; // small mode (with avatar button) // TODO: no need in small mode after GUI scale added
private static final int PANEL_HEIGHT_EXTRA_FOR_ME = 25; // hints button
private final Border GREEN_BORDER;
@ -510,10 +510,6 @@ public class PlayerPanelExt extends javax.swing.JPanel {
setTextForLabel(category, mana.getKey(), manaButtons.get(mana.getKey()), pool.getColorless(), false, activeValueColor);
break;
}
//HoverButton btn = manaButtons.get(mana.getKey());
//mana.getKey().setOpaque(true);
//mana.getKey().setBackground(Color.green);
}
}
@ -528,9 +524,6 @@ public class PlayerPanelExt extends javax.swing.JPanel {
panelBackground = new MageRoundPane();
panelBackground.setPreferredSize(new Dimension(sizeMod(PANEL_WIDTH - 2), sizeMod(PANEL_HEIGHT)));
Rectangle r = new Rectangle(sizeMod(80), sizeMod(80));
// avatarFlag = new JLabel();
// monarchIcon = new JLabel();
timerLabel = new JLabel();
lifeLabel = new JLabel();
handLabel = new JLabel();
@ -552,12 +545,11 @@ public class PlayerPanelExt extends javax.swing.JPanel {
panelBackground.setBorder(BorderFactory.createLineBorder(Color.yellow));
}
// Avatar
// avatar in normal mode (image)
Rectangle r = new Rectangle(sizeMod(80), sizeMod(80));
Image image = ImageHelper.getImageFromResources(DEFAULT_AVATAR_PATH);
BufferedImage resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
avatar = new HoverButton("", resized, resized, resized, r, this.guiScaleMod);
String showPlayerNamePermanently = MageFrame.getPreferences().get(PreferencesDialog.KEY_SHOW_PLAYER_NAMES_PERMANENTLY, "true");
if (showPlayerNamePermanently.equals("true")) {
avatar.setTextAlwaysVisible(true);
@ -565,12 +557,21 @@ public class PlayerPanelExt extends javax.swing.JPanel {
avatar.setTextOffsetButtonY(sizeMod(10));
avatar.setObserver(() -> SessionHandler.sendPlayerUUID(gameId, playerId));
// timer area /small layout)
// avatar in small mode (button)
btnPlayer = new JButton();
btnPlayer.setFont(this.getFont());
btnPlayer.setText("Player");
btnPlayer.setVisible(false);
btnPlayer.setToolTipText("Player");
btnPlayer.setPreferredSize(new Dimension(sizeMod(20), sizeMod(40)));
btnPlayer.addActionListener(e -> SessionHandler.sendPlayerUUID(gameId, playerId));
// timer area /small layout
timerLabel.setToolTipText("Time left");
timerLabel.setSize(sizeMod(80), sizeMod(12));
timerLabel.setHorizontalAlignment(SwingConstants.CENTER);
// life area
// life
r = new Rectangle(sizeMod(18), sizeMod(18));
lifeLabel.setToolTipText("Life");
lifeLabel.setHorizontalAlignment(SwingConstants.CENTER);
@ -580,7 +581,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
life.setToolTipText("Life");
life.setOpaque(false);
// hand area
// hand
r = new Rectangle(sizeMod(18), sizeMod(18));
handLabel.setToolTipText("Hand");
handLabel.setHorizontalAlignment(SwingConstants.CENTER);
@ -590,7 +591,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
hand.setToolTipText("Hand");
hand.setOpaque(false);
// Poison count
// poison
r = new Rectangle(sizeMod(18), sizeMod(18));
Image imagePoison = ImageHelper.getImageFromResources("/info/poison.png");
BufferedImage resizedPoison = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imagePoison, BufferedImage.TYPE_INT_ARGB), r);
@ -599,30 +600,59 @@ public class PlayerPanelExt extends javax.swing.JPanel {
setTextForLabel("poison", poisonLabel, poison, 0, false);
poisonLabel.setHorizontalAlignment(SwingConstants.CENTER);
// Library
// library
r = new Rectangle(sizeMod(19), sizeMod(19));
libraryLabel.setToolTipText("Library");
libraryLabel.setHorizontalAlignment(SwingConstants.CENTER);
Image imageLibrary = ImageHelper.getImageFromResources("/info/library.png");
BufferedImage resizedLibrary = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageLibrary, BufferedImage.TYPE_INT_ARGB), r);
library = new HoverButton(null, resizedLibrary, resizedLibrary, resizedLibrary, r, this.guiScaleMod);
library.setToolTipText("Library");
library.setOpaque(false);
library.setObserver(() -> btnLibraryActionPerformed(null));
// Grave count and open graveyard button
// energy
r = new Rectangle(sizeMod(18), sizeMod(18));
Image imageEnergy = ImageHelper.getImageFromResources("/info/energy.png");
BufferedImage resizedEnergy = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageEnergy, BufferedImage.TYPE_INT_ARGB), r);
energy = new ImagePanel(resizedEnergy, ImagePanelStyle.ACTUAL);
energy.setToolTipText("Energy");
energy.setOpaque(false);
setTextForLabel("energy", energyLabel, energy, 0, false);
energyLabel.setHorizontalAlignment(SwingConstants.CENTER);
// experience
r = new Rectangle(sizeMod(18), sizeMod(18));
Image imageExperience = ImageHelper.getImageFromResources("/info/experience.png");
BufferedImage resizedExperience = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageExperience, BufferedImage.TYPE_INT_ARGB), r);
experience = new ImagePanel(resizedExperience, ImagePanelStyle.ACTUAL);
experience.setToolTipText("Experience");
experience.setOpaque(false);
setTextForLabel("experience", experienceLabel, experience, 0, false);
experienceLabel.setHorizontalAlignment(SwingConstants.CENTER);
// rad
r = new Rectangle(sizeMod(16), sizeMod(16));
Image imageRad = ImageHelper.getImageFromResources("/info/rad.png");
BufferedImage resizedRad = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageRad, BufferedImage.TYPE_INT_ARGB), r);
rad = new ImagePanel(resizedRad, ImagePanelStyle.ACTUAL);
rad.setToolTipText("Rad");
rad.setOpaque(false);
setTextForLabel("rad", radLabel, rad, 0, false);
radLabel.setHorizontalAlignment(SwingConstants.CENTER);
// graveyard
r = new Rectangle(sizeMod(21), sizeMod(21));
graveLabel.setToolTipText("Card Types: 0");
graveLabel.setHorizontalAlignment(SwingConstants.CENTER);
Image imageGrave = ImageHelper.getImageFromResources("/info/grave.png");
BufferedImage resizedGrave = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageGrave, BufferedImage.TYPE_INT_ARGB), r);
grave = new HoverButton(null, resizedGrave, resizedGrave, resizedGrave, r, this.guiScaleMod);
grave.setToolTipText("Graveyard");
grave.setOpaque(false);
grave.setObserver(() -> btnGraveActionPerformed(null));
// exile
exileLabel = new JLabel();
exileLabel.setToolTipText("Exile");
exileLabel.setHorizontalAlignment(SwingConstants.CENTER);
@ -635,30 +665,24 @@ public class PlayerPanelExt extends javax.swing.JPanel {
exileZone.setObserver(() -> btnExileZoneActionPerformed(null));
exileZone.setBounds(sizeMod(25), 0, sizeMod(21), sizeMod(21));
// Cheat button
r = new Rectangle(sizeMod(25), sizeMod(21));
image = ImageHelper.getImageFromResources("/info/cheat.png");
resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
cheat = new JButton();
cheat.setIcon(new ImageIcon(resized));
cheat.setToolTipText("Cheat button (activate it on your priority only)");
cheat.addActionListener(e -> btnCheatActionPerformed(e));
// tools button like hints
toolHintsHelper = new JButton();
toolHintsHelper.setFont(this.getFont());
toolHintsHelper.setText("hints");
toolHintsHelper.setToolTipText("Open new card hints helper window");
toolHintsHelper.addActionListener(e -> btnToolHintsHelperActionPerformed(e));
zonesPanel = new JPanel();
zonesPanel.setPreferredSize(new Dimension(sizeMod(100), sizeMod(60)));
zonesPanel.setSize(sizeMod(100), sizeMod(60));
zonesPanel.setLayout(null);
zonesPanel.setOpaque(false);
image = ImageHelper.getImageFromResources("/info/command_zone.png");
// tools button like hints
toolHintsHelper = new JButton();
toolHintsHelper.setFont(this.getFont());
toolHintsHelper.setText("hints");
toolHintsHelper.setToolTipText("Open new card hints helper window");
toolHintsHelper.addActionListener(this::btnToolHintsHelperActionPerformed);
toolHintsHelper.setBounds(sizeMod(3), sizeMod(2 + 21 + 2), sizeMod(73), sizeMod(21));
zonesPanel.add(toolHintsHelper);
// command
r = new Rectangle(sizeMod(21), sizeMod(21));
image = ImageHelper.getImageFromResources("/info/command_zone.png");
resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
commandZone = new HoverButton(null, resized, resized, resized, r, this.guiScaleMod);
commandZone.setToolTipText("Command Zone (Commanders, Emblems and Planes)");
@ -666,55 +690,21 @@ public class PlayerPanelExt extends javax.swing.JPanel {
commandZone.setObserver(() -> btnCommandZoneActionPerformed(null));
commandZone.setBounds(sizeMod(3), 0, sizeMod(21), sizeMod(21));
zonesPanel.add(commandZone);
commandLabel.setToolTipText("Command zone");
commandLabel.setBounds(sizeMod(25), 0, sizeMod(21), sizeMod(21));
zonesPanel.add(commandLabel);
// cheat
r = new Rectangle(sizeMod(25), sizeMod(21));
image = ImageHelper.getImageFromResources("/info/cheat.png");
resized = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(image, BufferedImage.TYPE_INT_ARGB), r);
cheat = new JButton();
cheat.setIcon(new ImageIcon(resized));
cheat.setToolTipText("Cheat button (activate it on your priority only)");
cheat.addActionListener(this::btnCheatActionPerformed);
cheat.setBounds(sizeMod(40), sizeMod(2), sizeMod(25), sizeMod(21));
zonesPanel.add(cheat);
toolHintsHelper.setBounds(sizeMod(3), sizeMod(2 + 21 + 2), sizeMod(73), sizeMod(21));
zonesPanel.add(toolHintsHelper);
// Energy count
r = new Rectangle(sizeMod(18), sizeMod(18));
Image imageEnergy = ImageHelper.getImageFromResources("/info/energy.png");
BufferedImage resizedEnergy = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageEnergy, BufferedImage.TYPE_INT_ARGB), r);
energy = new ImagePanel(resizedEnergy, ImagePanelStyle.ACTUAL);
energy.setToolTipText("Energy");
energy.setOpaque(false);
setTextForLabel("energy", energyLabel, energy, 0, false);
energyLabel.setHorizontalAlignment(SwingConstants.CENTER);
// Experience count
r = new Rectangle(sizeMod(18), sizeMod(18));
Image imageExperience = ImageHelper.getImageFromResources("/info/experience.png");
BufferedImage resizedExperience = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageExperience, BufferedImage.TYPE_INT_ARGB), r);
experience = new ImagePanel(resizedExperience, ImagePanelStyle.ACTUAL);
experience.setToolTipText("Experience");
experience.setOpaque(false);
setTextForLabel("experience", experienceLabel, experience, 0, false);
experienceLabel.setHorizontalAlignment(SwingConstants.CENTER);
// Rad count
r = new Rectangle(sizeMod(16), sizeMod(16));
Image imageRad = ImageHelper.getImageFromResources("/info/rad.png");
BufferedImage resizedRad = ImageHelper.getResizedImage(BufferedImageBuilder.bufferImage(imageRad, BufferedImage.TYPE_INT_ARGB), r);
rad = new ImagePanel(resizedRad, ImagePanelStyle.ACTUAL);
rad.setToolTipText("Rad");
rad.setOpaque(false);
setTextForLabel("rad", radLabel, rad, 0, false);
radLabel.setHorizontalAlignment(SwingConstants.CENTER);
btnPlayer = new JButton();
btnPlayer.setFont(this.getFont());
btnPlayer.setText("Player");
btnPlayer.setVisible(false);
btnPlayer.setToolTipText("Player");
btnPlayer.setPreferredSize(new Dimension(sizeMod(20), sizeMod(40)));
btnPlayer.addActionListener(e -> SessionHandler.sendPlayerUUID(gameId, playerId));
// Add mana symbols
// TODO: replace "button + label" to label on rework
/*
@ -736,6 +726,8 @@ public class PlayerPanelExt extends javax.swing.JPanel {
manaLabels.put(manaCountLabelW, ManaType.WHITE);l
//*/
///*
// mana W
JLabel manaCountLabelW = new JLabel();
manaCountLabelW.setHorizontalAlignment(SwingConstants.CENTER);
manaLabels.put(manaCountLabelW, ManaType.WHITE);
@ -748,6 +740,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
setTextForLabel(ManaType.WHITE.toString() + " mana", manaCountLabelW, btnWhiteMana, 0, false);
//*/
// mana U
JLabel manaCountLabelU = new JLabel();
manaLabels.put(manaCountLabelU, ManaType.BLUE);
manaCountLabelU.setHorizontalAlignment(SwingConstants.CENTER);
@ -759,6 +752,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
manaButtons.put(manaCountLabelU, btnBlueMana);
setTextForLabel(ManaType.BLUE.toString() + " mana", manaCountLabelU, btnBlueMana, 0, false);
// mana B
JLabel manaCountLabelB = new JLabel();
manaLabels.put(manaCountLabelB, ManaType.BLACK);
manaCountLabelB.setHorizontalAlignment(SwingConstants.CENTER);
@ -770,6 +764,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
manaButtons.put(manaCountLabelB, btnBlackMana);
setTextForLabel(ManaType.BLACK.toString() + " mana", manaCountLabelB, btnBlackMana, 0, false);
// mana R
JLabel manaCountLabelR = new JLabel();
manaLabels.put(manaCountLabelR, ManaType.RED);
manaCountLabelR.setHorizontalAlignment(SwingConstants.CENTER);
@ -781,6 +776,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
manaButtons.put(manaCountLabelR, btnRedMana);
setTextForLabel(ManaType.RED.toString() + " mana", manaCountLabelR, btnRedMana, 0, false);
// mana G
JLabel manaCountLabelG = new JLabel();
manaLabels.put(manaCountLabelG, ManaType.GREEN);
manaCountLabelG.setHorizontalAlignment(SwingConstants.CENTER);
@ -792,6 +788,7 @@ public class PlayerPanelExt extends javax.swing.JPanel {
manaButtons.put(manaCountLabelG, btnGreenMana);
setTextForLabel(ManaType.GREEN.toString() + " mana", manaCountLabelG, btnGreenMana, 0, false);
// mana C
JLabel manaCountLabelX = new JLabel();
manaLabels.put(manaCountLabelX, ManaType.COLORLESS);
manaCountLabelX.setHorizontalAlignment(SwingConstants.CENTER);
@ -801,8 +798,10 @@ public class PlayerPanelExt extends javax.swing.JPanel {
btnColorlessMana.setOpaque(false);
btnColorlessMana.setObserver(() -> btnManaActionPerformed(ManaType.COLORLESS));
manaButtons.put(manaCountLabelX, btnColorlessMana);
setTextForLabel(ManaType.COLORLESS.toString() + " mana", manaCountLabelX, btnColorlessMana, 0, false);
setTextForLabel(ManaType.COLORLESS + " mana", manaCountLabelX, btnColorlessMana, 0, false);
// STRUCTURE
// TODO: rework to readable/editable layout logic
GroupLayout gl_panelBackground = new GroupLayout(panelBackground);
gl_panelBackground.setHorizontalGroup(
gl_panelBackground.createParallelGroup(Alignment.LEADING)