From 870ffe3437be277861d8a05c9d70ad1b053d8f9b Mon Sep 17 00:00:00 2001 From: Maxmtg Date: Mon, 13 Jan 2014 19:30:07 +0000 Subject: [PATCH] better color sorting, colorless decks icon is properly centered --- forge-core/src/main/java/forge/card/ColorSet.java | 14 ++++++++++---- .../itemmanager/views/ColorSetRenderer.java | 4 ++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/forge-core/src/main/java/forge/card/ColorSet.java b/forge-core/src/main/java/forge/card/ColorSet.java index 33fee26671b..3e96a85734b 100644 --- a/forge-core/src/main/java/forge/card/ColorSet.java +++ b/forge-core/src/main/java/forge/card/ColorSet.java @@ -38,7 +38,7 @@ import forge.util.BinaryUtil; public final class ColorSet implements Comparable, Iterable { private final byte myColor; - private final int orderWeight; + private final float orderWeight; private static ColorSet[] allColors = new ColorSet[32]; private static final ColorSet noColor = new ColorSet(); @@ -137,8 +137,14 @@ public final class ColorSet implements Comparable, Iterable { * * @return the order weight */ - public int getOrderWeight() { - return this.myColor == 0 ? 0x400 : (this.countColors() == 1 ? this.myColor : 0x200); + public float getOrderWeight() { + 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, Iterable { */ @Override public int compareTo(final ColorSet other) { - return this.orderWeight - other.orderWeight; + return Float.compare(this.orderWeight, other.orderWeight); } // Presets diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColorSetRenderer.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColorSetRenderer.java index 591d09102c3..c0b50dba4e1 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColorSetRenderer.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/views/ColorSetRenderer.java @@ -56,8 +56,8 @@ public class ColorSetRenderer extends ItemCellRenderer { final int cntGlyphs = cs.countColors(); final int offsetIfNoSpace = cntGlyphs > 1 ? (cellWidth - padding0 - elemtWidth) / (cntGlyphs - 1) : elemtWidth + elemtGap; 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) x += (cellWidth - padding0 - takenUpWidth) / 2;