diff options
author | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-06-24 18:58:15 +0200 |
---|---|---|
committer | Eduardo Pedroni <e.pedroni91@gmail.com> | 2015-06-24 18:58:15 +0200 |
commit | bf29c3d96160eeaa64f60a512a0a9f4d7c85167a (patch) | |
tree | d748a0fa4016c188b3d4be5bdd719261b40655b0 /src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java | |
parent | 59174889aba82c64ae63e0a5622d6cbcab63dc39 (diff) |
Mulling over the generic comparator issue
Diffstat (limited to 'src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java')
-rw-r--r-- | src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java b/src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java new file mode 100644 index 0000000..5736381 --- /dev/null +++ b/src/eu/equalparts/cardbase/comparator/ComparatorDelegates.java @@ -0,0 +1,39 @@ +package eu.equalparts.cardbase.comparator; + + +abstract class ComparatorDelegates { + + private ComparatorDelegates() {} + + public static Integer compareManaCost(Comparable<String> field1, Comparable<String> field2) { + // avoid casting syntax nightmare + String mc1 = (String) field1, mc2 = (String) field2; + + // first by number of colours + int mc1count = 0, mc2count = 0; + if (mc1.contains("W")) mc1count++; + if (mc1.contains("U")) mc1count++; + if (mc1.contains("B")) mc1count++; + if (mc1.contains("R")) mc1count++; + if (mc1.contains("G")) mc1count++; + + if (mc2.contains("W")) mc2count++; + if (mc2.contains("U")) mc2count++; + if (mc2.contains("B")) mc2count++; + if (mc2.contains("R")) mc2count++; + if (mc2.contains("G")) mc2count++; + + if (mc1count != mc2count) + return (mc1count < mc2count) ? -1 : ((mc1count == mc2count) ? 0 : 1); + + // next by colour wheel + + return 0; + } + +} +/* + * first by number of colours + * next by colour wheel: white > blue > black > red > green + * next by cmc + */
\ No newline at end of file |