better color sorting, colorless decks icon is properly centered

This commit is contained in:
Maxmtg
2014-01-13 19:30:07 +00:00
parent b8ea837204
commit 870ffe3437
2 changed files with 12 additions and 6 deletions

View File

@@ -38,7 +38,7 @@ import forge.util.BinaryUtil;
public final class ColorSet implements Comparable<ColorSet>, Iterable<Byte> { public final class ColorSet implements Comparable<ColorSet>, Iterable<Byte> {
private final byte myColor; private final byte myColor;
private final int orderWeight; private final float orderWeight;
private static ColorSet[] allColors = new ColorSet[32]; private static ColorSet[] allColors = new ColorSet[32];
private static final ColorSet noColor = new ColorSet(); private static final ColorSet noColor = new ColorSet();
@@ -137,8 +137,14 @@ public final class ColorSet implements Comparable<ColorSet>, Iterable<Byte> {
* *
* @return the order weight * @return the order weight
*/ */
public int getOrderWeight() { public float getOrderWeight() {
return this.myColor == 0 ? 0x400 : (this.countColors() == 1 ? this.myColor : 0x200); float res = this.countColors();
if(hasWhite()) res += 0.0005f;
if(hasBlue()) res += 0.0020f;
if(hasBlack()) res += 0.0080f;
if(hasRed()) res += 0.0320f;
if(hasGreen()) res += 0.1280f;
return res;
} }
/** /**
@@ -186,7 +192,7 @@ public final class ColorSet implements Comparable<ColorSet>, Iterable<Byte> {
*/ */
@Override @Override
public int compareTo(final ColorSet other) { public int compareTo(final ColorSet other) {
return this.orderWeight - other.orderWeight; return Float.compare(this.orderWeight, other.orderWeight);
} }
// Presets // Presets

View File

@@ -57,7 +57,7 @@ public class ColorSetRenderer extends ItemCellRenderer {
final int offsetIfNoSpace = cntGlyphs > 1 ? (cellWidth - padding0 - elemtWidth) / (cntGlyphs - 1) : elemtWidth + elemtGap; final int offsetIfNoSpace = cntGlyphs > 1 ? (cellWidth - padding0 - elemtWidth) / (cntGlyphs - 1) : elemtWidth + elemtGap;
final int dx = Math.min(elemtWidth + elemtGap, offsetIfNoSpace); final int dx = Math.min(elemtWidth + elemtGap, offsetIfNoSpace);
int takenUpWidth = cntGlyphs * ( elemtWidth + elemtGap ) - elemtGap; int takenUpWidth = Math.max(1, cntGlyphs) * ( elemtWidth + elemtGap ) - elemtGap;
if( takenUpWidth < cellWidth - padding0) if( takenUpWidth < cellWidth - padding0)
x += (cellWidth - padding0 - takenUpWidth) / 2; x += (cellWidth - padding0 - takenUpWidth) / 2;