* UI: added new skill level column with star icons instead text;

This commit is contained in:
Oleg Agafonov 2018-11-17 02:48:50 +04:00
parent ed7c32f9e8
commit 92d1b5c51a
6 changed files with 1817 additions and 1750 deletions

File diff suppressed because it is too large Load diff

View file

@ -1,8 +1,3 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package org.mage.card.arcane; package org.mage.card.arcane;
import java.awt.*; import java.awt.*;
@ -63,26 +58,26 @@ public final class CardRendererUtils {
int plus_b = (int) ((255 - b) / 2); int plus_b = (int) ((255 - b) / 2);
return new Color(r + plus_r, return new Color(r + plus_r,
g + plus_g, g + plus_g,
b + plus_b, b + plus_b,
alpha); alpha);
} }
public static Color abitdarker(Color c) { public static Color abitdarker(Color c) {
int r = c.getRed(); int r = c.getRed();
int g = c.getGreen(); int g = c.getGreen();
int b = c.getBlue(); int b = c.getBlue();
int alpha = c.getAlpha(); int alpha = c.getAlpha();
int plus_r = (int) (Math.min (255 - r, r) / 2); int plus_r = (int) (Math.min(255 - r, r) / 2);
int plus_g = (int) (Math.min (255 - g, g) / 2); int plus_g = (int) (Math.min(255 - g, g) / 2);
int plus_b = (int) (Math.min (255 - b, b) / 2); int plus_b = (int) (Math.min(255 - b, b) / 2);
return new Color(r - plus_r, return new Color(r - plus_r,
g - plus_g, g - plus_g,
b - plus_b, b - plus_b,
alpha); alpha);
} }
// Draw a rounded box with a 2-pixel border // Draw a rounded box with a 2-pixel border
// Used on various card parts. // Used on various card parts.
@ -192,4 +187,12 @@ public final class CardRendererUtils {
.replaceAll("<i>", "") .replaceAll("<i>", "")
.replaceAll("</i>", ""); .replaceAll("</i>", "");
} }
public static Color copyColor(Color color) {
if (color != null) {
return new Color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha());
} else {
return null;
}
}
} }

View file

@ -9,10 +9,13 @@ import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.StringTokenizer; import java.util.StringTokenizer;
/**
* @author JayDi85
*/
public final class ManaSymbolsCellRenderer extends DefaultTableCellRenderer { public final class ManaSymbolsCellRenderer extends DefaultTableCellRenderer {
// base panel to render // base panel to render
private JPanel manaPanel = new JPanel(); private JPanel renderPanel = new JPanel();
@Override @Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
@ -20,47 +23,47 @@ public final class ManaSymbolsCellRenderer extends DefaultTableCellRenderer {
// get table text cell settings // get table text cell settings
DefaultTableCellRenderer baseRenderer = (DefaultTableCellRenderer) table.getDefaultRenderer(String.class); DefaultTableCellRenderer baseRenderer = (DefaultTableCellRenderer) table.getDefaultRenderer(String.class);
JLabel baseLabel = (JLabel)baseRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); JLabel baseComp = (JLabel) baseRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
// apply settings to mana panel from parent // apply settings to mana panel from parent
manaPanel.setOpaque(baseLabel.isOpaque()); renderPanel.setOpaque(baseComp.isOpaque());
manaPanel.setForeground(baseLabel.getForeground()); renderPanel.setForeground(CardRendererUtils.copyColor(baseComp.getForeground()));
manaPanel.setBackground(baseLabel.getBackground()); renderPanel.setBackground(CardRendererUtils.copyColor(baseComp.getBackground()));
renderPanel.setBorder(baseComp.getBorder());
// icons size with margin // icons size with margin
int symbolWidth = GUISizeHelper.symbolTableSize; int symbolWidth = GUISizeHelper.symbolTableSize;
int symbolHorizontalMargin = 2; int symbolHorizontalMargin = 2;
// create each mana symbol as child label // create each mana symbol as child label
String manaCost = (String)value; String manaCost = (String) value;
manaPanel.removeAll(); renderPanel.removeAll();
manaPanel.setLayout(new BoxLayout(manaPanel, BoxLayout.X_AXIS)); renderPanel.setLayout(new BoxLayout(renderPanel, BoxLayout.X_AXIS));
if(manaCost != null){ if (manaCost != null) {
StringTokenizer tok = new StringTokenizer(manaCost, " "); StringTokenizer tok = new StringTokenizer(manaCost, " ");
while (tok.hasMoreTokens()) { while (tok.hasMoreTokens()) {
String symbol = tok.nextToken(); String symbol = tok.nextToken();
JLabel symbolLabel = new JLabel(); JLabel symbolLabel = new JLabel();
//symbolLabel.setBorder(new LineBorder(new Color(150, 150, 150))); // debug //symbolLabel.setBorder(new LineBorder(new Color(150, 150, 150))); // debug
symbolLabel.setBorder(new EmptyBorder(0, symbolHorizontalMargin,0, 0)); symbolLabel.setBorder(new EmptyBorder(0, symbolHorizontalMargin, 0, 0));
BufferedImage image = ManaSymbols.getSizedManaSymbol(symbol, symbolWidth); BufferedImage image = ManaSymbols.getSizedManaSymbol(symbol, symbolWidth);
if (image != null){ if (image != null) {
// icon // icon
symbolLabel.setIcon(new ImageIcon(image)); symbolLabel.setIcon(new ImageIcon(image));
}else } else {
{
// text // text
symbolLabel.setText("{" + symbol + "}"); symbolLabel.setText("{" + symbol + "}");
symbolLabel.setOpaque(baseLabel.isOpaque()); symbolLabel.setOpaque(baseComp.isOpaque());
symbolLabel.setForeground(baseLabel.getForeground()); symbolLabel.setForeground(baseComp.getForeground());
symbolLabel.setBackground(baseLabel.getBackground()); symbolLabel.setBackground(baseComp.getBackground());
} }
manaPanel.add(symbolLabel); renderPanel.add(symbolLabel);
} }
} }
return manaPanel; return renderPanel;
} }
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 658 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 931 B