From 248199184cd685bb852828e8867f0f5513723298 Mon Sep 17 00:00:00 2001 From: "marcins78@gmail.com" Date: Wed, 14 Mar 2012 00:13:34 +0000 Subject: [PATCH] Work on merchant. --- .../lotro/game/SortAndFilterCards.java | 2 +- .../lotro/server/MerchantResource.java | 13 +-- .../src/main/webapp/js/cardFilter.js | 8 +- .../src/main/webapp/js/jCards.js | 4 +- .../src/main/webapp/js/merchantUi.js | 85 ++++++++++++++++++- .../src/main/webapp/merchant.html | 40 ++------- 6 files changed, 103 insertions(+), 49 deletions(-) diff --git a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java index ce67375cd..fb874654c 100644 --- a/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java +++ b/gemp-lotr/gemp-lotr-server/src/main/java/com/gempukku/lotro/game/SortAndFilterCards.java @@ -8,7 +8,7 @@ import com.gempukku.lotro.common.Keyword; import java.util.*; public class SortAndFilterCards { - public List process(String filter, List items, LotroCardBlueprintLibrary library, Map rarities) { + public List process(String filter, Collection items, LotroCardBlueprintLibrary library, Map rarities) { if (filter == null) filter = ""; String[] filterParams = filter.split(" "); diff --git a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/MerchantResource.java b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/MerchantResource.java index 84e3e3ac3..dfad23e0c 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/MerchantResource.java +++ b/gemp-lotr/gemp-lotr-web/src/main/java/com/gempukku/lotro/server/MerchantResource.java @@ -18,10 +18,7 @@ import javax.ws.rs.core.MediaType; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; @Singleton @Path("/merchant") @@ -74,9 +71,13 @@ public class MerchantResource extends AbstractResource { CardCollection collection = _collectionsManager.getPlayerCollection(resourceOwner, "permanent"); - List cardItems = new ArrayList(); + Set cardItems = new HashSet(); cardItems.addAll(collection.getAllItems()); - cardItems.addAll(_merchantService.getSellableItems()); + Set items = _merchantService.getSellableItems(); + for (CardItem item : items) { + if (collection.getItemCount(item.getBlueprintId()) == 0) + cardItems.add(item); + } List filteredResult = _sortAndFilterCards.process(filter, cardItems, _library, _rarities); List pageToDisplay = new ArrayList(); diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/cardFilter.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/cardFilter.js index 123ef0fd2..93916491a 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/cardFilter.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/cardFilter.js @@ -29,7 +29,7 @@ var CardFilter = Class.extend({ this.addCardFunc = addCardFunc; this.finishCollectionFunc = finishCollectionFunc; - this.filter = "cardType:-THE_ONE_RING"; + this.filter = ""; this.buildUi(elem); }, @@ -303,9 +303,9 @@ var CardFilter = Class.extend({ var cardType = $("#cardType option:selected").prop("value"); if (cardType == "") - cardType = "cardType:-THE_ONE_RING"; + cardType = ""; else - cardType = "cardType:" + cardType; + cardType = "cardType:" + cardType + " "; var keyword = $("#keyword option:selected").prop("value"); if (keyword != "") @@ -349,7 +349,7 @@ var CardFilter = Class.extend({ getCollection: function() { var that = this; - this.getCollectionFunc(this.filter + this.calculateFullFilterPostfix(), this.start, this.count, function(xml) { + this.getCollectionFunc((this.filter + this.calculateFullFilterPostfix()).trim(), this.start, this.count, function(xml) { that.displayCollection(xml); }); }, diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/jCards.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/jCards.js index 2bd748bf0..72baff899 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/jCards.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/jCards.js @@ -83,11 +83,11 @@ var packBlueprints = { "RoS - Faramir Starter": "/gemp-lotr/images/boosters/eof_faramir_starter.png", "RoS - Witch-king Starter": "/gemp-lotr/images/boosters/eof_witch_king_starter.png", - "RoS - Booster": "/gemp-lotr/images/boosters/ros_booster.jpg", + "RoS - Booster": "/gemp-lotr/images/boosters/ros_booster.png", "TaD - Faramir Starter": "/gemp-lotr/images/boosters/eof_faramir_starter.png", "TaD - Witch-king Starter": "/gemp-lotr/images/boosters/eof_witch_king_starter.png", - "TaD - Booster": "/gemp-lotr/images/boosters/tad_booster.jpg" + "TaD - Booster": "/gemp-lotr/images/boosters/tad_booster.png" }; var Card = Class.extend({ diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/merchantUi.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/merchantUi.js index 11493896f..4610f601d 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/merchantUi.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/merchantUi.js @@ -56,6 +56,19 @@ var GempLotrMerchantUI = Class.extend({ }; this.infoDialog.swipe(swipeOptions); + $("body").click( + function (event) { + return that.clickCardFunction(event); + }); + $("body").mousedown( + function (event) { + return that.dragStartCardFunction(event); + }); + $("body").mouseup( + function (event) { + return that.dragStopCardFunction(event); + }); + this.cardFilter.getCollection(); }, @@ -96,6 +109,34 @@ var GempLotrMerchantUI = Class.extend({ return true; }, + clickCardFunction: function(event) { + var that = this; + + var tar = $(event.target); + if (!this.successfulDrag && this.infoDialog.dialog("isOpen")) { + this.infoDialog.dialog("close"); + event.stopPropagation(); + return false; + } + + if (tar.hasClass("actionArea")) { + tar = tar.parent(); + if (tar.hasClass("borderOverlay")) { + var selectedCardElem = tar.parent(); + if (event.which == 1) { + if (!this.successfulDrag) { + if (event.shiftKey) { + this.displayCardInfo(selectedCardElem.data("card")); + } + event.stopPropagation(); + } + } + return false; + } + } + return true; + }, + displayCardInfo: function(card) { this.infoDialog.html(""); this.infoDialog.html("
"); @@ -121,19 +162,55 @@ var GempLotrMerchantUI = Class.extend({ }, addCardToList: function(elem, type, blueprintId, count) { + var buyPrice = elem.getAttribute("buyPrice"); + var sellPrice = elem.getAttribute("sellPrice"); + var tradeFoil = elem.getAttribute("tradeFoil"); + + var sizeListeners = new Array(); + sizeListeners[0] = { + sizeChanged: function(cardElem, width, height) { + $(".owned", cardElem).css({position:"absolute", left:5, top: height - 60, width: 30, height: 30}); + $(".buyPrice", cardElem).css({position: "absolute", left: 40, top: height - 80, width: width - 45, height: 25}); + $(".sellPrice", cardElem).css({position: "absolute", left: 40, top: height - 50, width: width - 45, height: 25}); + $(".tradeFoil", cardElem).css({position: "absolute", left: 40, top: height - 20, width: width - 45, height: 15}); + } + }; + + var cardDiv = null; + if (type == "pack") { var card = new Card(blueprintId, "merchant", "collection", "player"); - card.tokens = {"count":count}; - var cardDiv = createCardDiv(card.imageUrl, null, false, true, true); + cardDiv = createCardDiv(card.imageUrl, null, false, true, true); cardDiv.data("card", card); + cardDiv.data("sizeListeners", sizeListeners); this.cardsDiv.append(cardDiv); } else if (type == "card") { var card = new Card(blueprintId, "merchant", "collection", "player"); - card.tokens = {"count":count}; - var cardDiv = createCardDiv(card.imageUrl, null, card.isFoil()); + cardDiv = createCardDiv(card.imageUrl, null, card.isFoil()); cardDiv.data("card", card); + cardDiv.data("sizeListeners", sizeListeners); this.cardsDiv.append(cardDiv); } + + if (cardDiv != null) { + cardDiv.append("
" + count + "
"); + if (buyPrice != null) { + var buyBut = $("
Buy price
" + this.formatPrice(buyPrice) + "
").button(); + cardDiv.append(buyBut); + } + if (sellPrice != null) { + var sellBut = $("
Sell price
" + this.formatPrice(sellPrice) + "
").button(); + cardDiv.append(sellBut); + } + if (tradeFoil == "true") { + var tradeFoilBut = $("
Trade 4 for foil
").button(); + cardDiv.append(tradeFoilBut); + } + } + }, + + formatPrice: function(price) { + return Math.floor(price / 100) + "G " + price % 100 + "S"; }, finishList: function() { diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/merchant.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/merchant.html index 2b5642ba4..7c5a9bb3f 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/merchant.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/merchant.html @@ -19,21 +19,11 @@ opacity: 0.2; } - .selectableCard > .borderOverlay { - border: 2px solid #00ff00; - cursor: pointer; - } - - .selectedCard > .borderOverlay { - border: 2px solid #00cccc; - } - - .cardCount { - width: 20px; - height: 18px; + .owned { background-color: #000000; + border: 1px solid #ffffff; color: #ffffff; - font-size: 120%; + font-size: 220%; font-weight: bolder; display: table-cell; text-align: center; @@ -41,22 +31,8 @@ opacity: 0.7; } - .ui-layout-east { - width: 350px; - } - - #manageDecks { - color: #ffffff; - font-size: 180%; - } - - #editingDeck { - vertical-align: top; - padding-left: 3px; - } - - #deckStats { - color: #ffffff; + .buyPrice, .sellPrice, .tradeFoil { + opacity: 0.9; } .ui-button-text-only .ui-button-text { @@ -72,15 +48,15 @@ } #fullFiltering select { - font-size: 80%; + font-size: 100%; } #fullFiltering input { - font-size: 80%; + font-size: 100%; } #filtering select { - font-size: 80%; + font-size: 100%; }