From 2b4c28e68144795b97504bd190258a48ef8430aa Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Tue, 4 Oct 2011 19:59:39 +0000 Subject: [PATCH] Added Deck Builder filtering in collection by set and card type. Also cards in deck builder collection are sorted by name. --- .../lotro/game/DefaultCardCollection.java | 36 ++++++++++-- .../src/main/webapp/deckBuild.html | 10 +++- .../src/main/webapp/includes/changeLog.html | 2 + .../src/main/webapp/js/deckBuildingUi.js | 56 +++++++++++++++---- 4 files changed, 88 insertions(+), 16 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DefaultCardCollection.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DefaultCardCollection.java index 07b0020bc..bc58bd75c 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DefaultCardCollection.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/DefaultCardCollection.java @@ -34,6 +34,7 @@ public class DefaultCardCollection implements MutableCardCollection { filter = ""; String[] filterParams = filter.split(" "); + String set = getSetNumber(filterParams); List cardTypes = getEnumFilter(CardType.values(), CardType.class, "cardType", null, filterParams); List cultures = getEnumFilter(Culture.values(), Culture.class, "culture", null, filterParams); List keywords = getEnumFilter(Keyword.values(), Keyword.class, "keyword", Collections.emptyList(), filterParams); @@ -49,16 +50,41 @@ public class DefaultCardCollection implements MutableCardCollection { if (blueprint == null) result.add(new Item(Item.Type.PACK, count, blueprintId)); else { - if (cardTypes == null || cardTypes.contains(blueprint.getCardType())) - if (cultures == null || cultures.contains(blueprint.getCulture())) - if (containsAllKeywords(blueprint, keywords)) - if (siteNumber == null || blueprint.getSiteNumber() == siteNumber.intValue()) - result.add(new Item(Item.Type.CARD, count, blueprintId, blueprint)); + if (set == null || blueprintId.startsWith(set + "_")) + if (cardTypes == null || cardTypes.contains(blueprint.getCardType())) + if (cultures == null || cultures.contains(blueprint.getCulture())) + if (containsAllKeywords(blueprint, keywords)) + if (siteNumber == null || blueprint.getSiteNumber() == siteNumber.intValue()) + result.add(new Item(Item.Type.CARD, count, blueprintId, blueprint)); } } + Collections.sort(result, new Comparator() { + @Override + public int compare(Item o1, Item o2) { + if (o1.getType() == o2.getType()) { + if (o1.getType() == Item.Type.PACK) + return o1.getBlueprintId().compareTo(o2.getBlueprintId()); + else + return o1.getCardBlueprint().getName().compareTo(o2.getCardBlueprint().getName()); + } else { + if (o1.getType() == Item.Type.PACK) + return -1; + else + return 1; + } + } + }); return result; } + private String getSetNumber(String[] filterParams) { + for (String filterParam : filterParams) { + if (filterParam.startsWith("set:")) + return filterParam.substring("set:".length()); + } + return null; + } + private Integer getSiteNumber(String[] filterParams) { for (String filterParam : filterParams) { if (filterParam.startsWith("siteNumber:")) diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild.html index 5fa7f127c..022302b4c 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild.html @@ -38,7 +38,15 @@ .ui-button-text-only .ui-button-text { font-size: 70%; - padding: .1em .1em; + padding: .05em .05em; + } + + #set { + width: 150px; + } + + #cardType { + width: 120px; } diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html index 020d75af8..0fa015185 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/includes/changeLog.html @@ -1,5 +1,7 @@
 4 Oct. 2011
+- Added Deck Builder filtering in collection by set and card type. Also cards in deck builder collection are sorted
+by name.
 - Changed the rules system again.
 - Most of the cards should now have animations when they affect other cards.
 - Added cards from sets 02 and 03 ("Mines of Moria" and "Realm of the Elf Lords").
diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/deckBuildingUi.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/deckBuildingUi.js
index f97f6e576..6e9c22d93 100644
--- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/deckBuildingUi.js
+++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/deckBuildingUi.js
@@ -55,17 +55,42 @@ var GempLotrDeckBuildingUI = Class.extend({
                 + ""
                 + "");
 
+        var combos = $("
"); + + combos.append(""); + + combos.append(" "); + this.filterDiv.append(combos); + this.collectionDiv.append(this.filterDiv); $("#culture").buttonset(); - $("#labelDWARVEN,#labelELVEN,#labelGANDALF,#labelGONDOR,#labelSHIRE,#labelISENGARD,#labelMORIA,#labelSAURON,#labelWRAITH").click( - function() { - that.filter = that.calculateNormalFilter(); - that.start = 0; - that.getCollection(); - return true; - }); + var filterOut = function() { + that.filter = that.calculateNormalFilter(); + that.start = 0; + that.getCollection(); + return true; + }; + + $("#set").change(filterOut); + $("#cardType").change(filterOut); + + $("#labelDWARVEN,#labelELVEN,#labelGANDALF,#labelGONDOR,#labelSHIRE,#labelISENGARD,#labelMORIA,#labelSAURON,#labelWRAITH").click(filterOut); $("#countSlider").slider({ value:18, @@ -341,10 +366,21 @@ var GempLotrDeckBuildingUI = Class.extend({ if ($(this).hasClass("ui-state-active")) cultures.push($(this).prop("id").substring(5)); }); - if (cultures.length > 0) - return "cardType:-SITE,THE_ONE_RING culture:" + cultures; + + var setNo = $("#set option:selected").prop("value"); + if (setNo != "") + setNo = " set:" + setNo; + + var cardType = $("#cardType option:selected").prop("value"); + if (cardType == "") + cardType = "cardType:-SITE,THE_ONE_RING"; else - return "cardType:-SITE,THE_ONE_RING"; + cardType = "cardType:" + cardType; + + if (cultures.length > 0) + return cardType + setNo + " culture:" + cultures; + else + return cardType + setNo; }, addCardToDeck: function(blueprintId, side) {