diff --git a/gemp-lotr/gemp-lotr-web/pom.xml b/gemp-lotr/gemp-lotr-web/pom.xml index 24bd6a1d4..c09fea50d 100644 --- a/gemp-lotr/gemp-lotr-web/pom.xml +++ b/gemp-lotr/gemp-lotr-web/pom.xml @@ -14,4 +14,12 @@ gemp-lotr + + + com.gempukku.tcg + generic-tcg-web + 1.0-SNAPSHOT + war + + \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild2.html b/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild2.html index 2b6ca500c..eca098584 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild2.html +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/deckBuild2.html @@ -37,9 +37,9 @@ - - - + + + diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/AttachedCardsLayoutCardGroup.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/AttachedCardsLayoutCardGroup.js deleted file mode 100644 index 3a9e2de78..000000000 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/AttachedCardsLayoutCardGroup.js +++ /dev/null @@ -1,168 +0,0 @@ -var AttachedCardsLayoutCardGroup = RowCardLayoutCardGroup.extend({ - attachedGroupsLeft: null, - attachedGroupsTop: null, - attachedGroupsFinderFunc: null, - attachedGroupsRootRecognizeFunc: null, - - init: function (cardContainerDiv, cardContainFunc) { - this._super(cardContainerDiv, cardContainFunc); - this.attachedGroupsLeft = new Array(); - this.attachedGroupsTop = new Array(); - this.attachedGroupsFinderFunc = new Array(); - this.attachedGroupsRootRecognizeFunc = new Array(); - }, - - addAttachedGroup: function(left, top, rootRecognizeFunc, finderFunc) { - this.attachedGroupsLeft.push(left); - this.attachedGroupsTop.push(top); - this.attachedGroupsRootRecognizeFunc.push(rootRecognizeFunc); - this.attachedGroupsFinderFunc.push(finderFunc); - }, - - iterAttached: function(cardDiv, cardId, props, rootRecognizeFunc, finderFunc, func) { - if (!rootRecognizeFunc(cardDiv, cardId, props)) - return; - - $(".card", this.cardContainerDiv).each( - function() { - var cardDivAtt = $(this); - var cardIdAtt = cardDivAtt.data("id"); - var propsAtt = cardDivAtt.data("props"); - var layout = cardDivAtt.data("layout"); - var widthToHeightScaleFunc = cardDivAtt.data("widthToHeight"); - if (finderFunc(cardDiv, cardId, props, cardDivAtt, cardIdAtt, propsAtt)) - func(cardDivAtt, cardIdAtt, propsAtt, layout, widthToHeightScaleFunc); - }); - }, - - getCardHeightScale: function(cardDiv, cardId, props) { - var cardBox = this.getCardGroupBox(cardDiv, cardId, props); - return Math.min(1, 1 / (cardBox.bottom - cardBox.top)); - }, - - getCardBox: function(cardDiv, cardId, props) { - var cardRatio = cardDiv.data("widthToHeight")(cardId, props); - var result = {}; - result.left = 0; - result.top = 0; - result.right = Math.min(1, cardRatio); - result.bottom = Math.min(1, 1 / cardRatio); - return result; - }, - - getCardGroupBox: function(cardDiv, cardId, props) { - var that = this; - - var minLeft = 0; - var minTop = 0; - var maxRight = Math.min(1, cardDiv.data("widthToHeight")(cardId, props)); - var maxBottom = Math.min(1, 1 / cardDiv.data("widthToHeight")(cardId, props)); - var cardWidth = maxRight; - var cardHeight = maxBottom; - - for (var i = 0; i < this.attachedGroupsFinderFunc.length; i++) { - var attachFunc = this.attachedGroupsFinderFunc[i]; - var rootRecognizeFunc = this.attachedGroupsRootRecognizeFunc[i]; - var attachLeft = this.attachedGroupsLeft[i]; - var attachTop = this.attachedGroupsTop[i]; - - var attIndex = 0; - this.iterAttached(cardDiv, cardId, props, rootRecognizeFunc, attachFunc, - function(attCardDiv, attCardId, attProps, layout, attWidthToHeightRatioFunc) { - attIndex++; - var attBox = that.getCardBox(attCardDiv, attCardId, attProps); - var attWidth = attBox.right - attBox.left; - var attHeight = attBox.bottom - attBox.top; - if (attachLeft < 0) { - maxRight = Math.max(maxRight, attachLeft * attIndex + attWidth); - } else if (attachLeft > 0) { - minLeft = Math.min(minLeft, cardWidth + attachLeft*attIndex - attWidth); - } - - if (attachTop < 0) { - maxBottom = Math.max(maxBottom, attachTop * attIndex + attHeight); - } else if (attachTop > 0) { - minTop = Math.min(minTop, cardHeight + attachTop*attIndex - attHeight); - } - }); - - if (attachLeft < 0) - minLeft = Math.min(minLeft, attachLeft * attIndex); - else - maxRight = Math.max(maxRight, cardWidth + attachLeft * attIndex); - - if (attachTop < 0) - minTop = Math.min(minTop, attachTop * attIndex); - else - maxBottom = Math.max(maxBottom, cardHeight + attachTop * attIndex); - } - var result = {}; - result.left = minLeft; - result.top = minTop; - result.right = maxRight; - result.bottom = maxBottom; - return result; - }, - - getCardBoxRatio: function(cardDiv, cardId, props) { - var cardBox = this.getCardGroupBox(cardDiv, cardId, props); - var result = {}; - result.x = cardBox.right - cardBox.left; - result.y = cardBox.bottom - cardBox.top; - return result; - }, - - layoutCardGroup: function(cardDiv, cardId, props, layout, zIndex, cardBox, boxLeft, boxTop, boxWidth, boxHeight) { - var that = this; - var pixelSize = boxWidth / (cardBox.right - cardBox.left); - var cardGroupHeight = pixelSize * (cardBox.bottom - cardBox.top); - var cardGroupWidth = pixelSize * (cardBox.right - cardBox.left); - - var cardRatio = cardDiv.data("widthToHeight")(cardId, props); - var cardWidth = pixelSize * Math.min(1, cardRatio); - var cardHeight = cardWidth / cardRatio; - var cardLeft = boxLeft - cardBox.left * pixelSize; - var cardTop = boxTop - cardBox.top * pixelSize + (boxHeight - cardGroupHeight) / 2; - this.layoutOneCard(cardDiv, cardId, props, layout, zIndex, cardLeft, cardTop, cardWidth, cardHeight); - - zIndex--; - - for (var i = 0; i < this.attachedGroupsFinderFunc.length; i++) { - var attachFunc = this.attachedGroupsFinderFunc[i]; - var rootRecognizeFunc = this.attachedGroupsRootRecognizeFunc[i]; - var attachLeft = this.attachedGroupsLeft[i]; - var attachTop = this.attachedGroupsTop[i]; - - var index = 0; - this.iterAttached(cardDiv, cardId, props, rootRecognizeFunc, attachFunc, - function(attCardDiv, attCardId, attProps, layout, attWidthToHeightRatioFunc) { - index++; - var attCardBox = that.getCardBox(attCardDiv, attCardId, attProps); - var attWidth = pixelSize * (attCardBox.right - attCardBox.left); - var attHeight = pixelSize * (attCardBox.bottom - attCardBox.top); - - var attLeft; - if (attachLeft <= 0) - attLeft = cardLeft + index * pixelSize * attachLeft; - else - attLeft = cardLeft + cardWidth - attWidth + index * pixelSize * attachLeft; - var attTop; - if (attachTop <= 0) - attTop = cardTop + index * pixelSize * attachTop; - else - attTop = cardTop + cardHeight - attHeight + index * pixelSize * attachTop; - that.layoutOneCard(attCardDiv, attCardId, attProps, layout, zIndex, - attLeft, attTop, - attWidth, attHeight); - zIndex--; - }); - } - }, - - layoutCardBox: function(cardDiv, cardId, props, layout, boxLeft, boxTop, boxWidth, boxHeight, ratio) { - var that = this; - var zIndex = this.zIndexBase; - var cardBox = this.getCardGroupBox(cardDiv, cardId, props); - this.layoutCardGroup(cardDiv, cardId, props, layout, zIndex, cardBox, boxLeft, boxTop, boxWidth, boxHeight); - } -}); \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardContainer.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardContainer.js deleted file mode 100644 index 672f8474c..000000000 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardContainer.js +++ /dev/null @@ -1,38 +0,0 @@ -// This is a logical, and not a physical object. -// Its purpose is to maintain order and control over multiple card groups -var CardContainer = Class.extend({ - cardContainerDiv: null, - cardGroups: null, - layoutFunc: null, - - init: function(cardContainerDiv, layoutFunc) { - this.cardContainerDiv = cardContainerDiv; - this.cardGroups = {}; - this.layoutFunc = layoutFunc; - }, - - addCard: function(elem, cardId, props, layoutFunc, widthToHeightScaleFunc) { - var cardDiv = $("
"); - cardDiv.append(elem); - this.cardContainerDiv.append(cardDiv); - cardDiv.data("id", cardId); - cardDiv.data("props", props); - cardDiv.data("layout", layoutFunc); - cardDiv.data("widthToHeight", widthToHeightScaleFunc); - }, - - addCardGroup: function(name, cardGroup) { - this.cardGroups[name] = cardGroup; - }, - - setLayout: function(left, top, width, height) { - this.layoutFunc(this.cardGroups, left, top, width, height); - }, - - layoutCards: function() { - iterObj(this.cardGroups, - function (groupName, cardGroup) { - cardGroup.layoutCards(); - }); - } -}); \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardGroup.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardGroup.js deleted file mode 100644 index 8f3ca6f44..000000000 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/CardGroup.js +++ /dev/null @@ -1,52 +0,0 @@ -var CardGroup = Class.extend({ - cardContainerDiv: null, - cardContainFunc: null, - left: null, - top: null, - width: null, - height: null, - - init: function(cardContainerDiv, cardContainFunc) { - this.cardContainerDiv = cardContainerDiv; - this.cardContainFunc = cardContainFunc; - }, - - iterCards: function(func) { - var that = this; - $(".card", this.cardContainerDiv).each( - function() { - var cardDiv = $(this); - var cardId = cardDiv.data("id"); - var props = cardDiv.data("props"); - var layout = cardDiv.data("layout"); - if (that.cardContainFunc(cardDiv, cardId, props)) - func(cardDiv, cardId, props, layout); - }); - }, - - findCardPropsById: function(cardId) { - var result = null; - $(".card", this.cardContainerDiv).each( - function() { - var cardDiv = $(this); - var foundCardId = cardDiv.data("id"); - if (foundCardId == cardId) - result = cardDiv.data("props"); - }); - - return result; - }, - - setLayout: function(left, top, width, height) { - this.left = left; - this.top = top; - this.width = width; - this.height = height; - - this.layoutCards(); - }, - - layoutCards: function() { - log("CardGroup::layoutCards - This method should be overriden"); - } -}); \ No newline at end of file diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/RowCardLayoutCardGroup.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/RowCardLayoutCardGroup.js deleted file mode 100644 index d5a24c151..000000000 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-012/RowCardLayoutCardGroup.js +++ /dev/null @@ -1,185 +0,0 @@ -var RowCardLayoutCardGroup = CardGroup.extend({ - padding: 3, - zIndexBase: 0, - maxCardHeight: null, - - init: function (cardContainerDiv, cardContainFunc) { - this._super(cardContainerDiv, cardContainFunc); - }, - - setMaxCardHeight: function(maxCardHeight) { - this.maxCardHeight = maxCardHeight; - }, - - setZIndexBase: function(zIndexBase) { - this.zIndexBase = zIndexBase; - }, - - getCardHeightScale: function(cardDiv, cardId, props) { - return 1; - }, - - getCardBoxRatio: function(cardDiv, cardId, props) { - var result = {}; - result.x = Math.min(1, cardDiv.data("widthToHeight")(cardId, props)); - result.y = Math.min(1, 1 / cardDiv.data("widthToHeight")(cardId, props)); - return result; - }, - - layoutCards: function() { - var that = this; - var ratios = {}; - var scale = 1; - this.iterCards( - function(cardDiv, cardId, props, layout) { - ratios[cardId] = that.getCardBoxRatio(cardDiv, cardId, props); - scale = Math.min(scale, that.getCardHeightScale(cardDiv, cardId, props)); - }); - - if (!this.tryLayoutInOneRow(ratios, scale)) { - var rows = 2; - if (this.maxCardHeight != null) - rows = Math.max(rows, Math.ceil((this.height + this.padding) / (this.maxCardHeight + this.padding))); - while (true) { - if (this.canLayoutInRows(ratios, rows, scale)) { - this.layoutInRows(ratios, rows, scale); - return; - } - rows++; - } - } - }, - - canLayoutInRows: function(ratios, rows, scale) { - //log("Can layout in rows: "+rows); - var that = this; - var rowHeight = this.height / rows - this.padding * (rows - 1); - var ascentLeft = 0; - var cardRowCount = 0; - var row = 0; - this.iterCards( - function(cardDiv, cardId, props, layout) { - var cardWidth = ratios[cardId].x * rowHeight * scale; - cardRowCount++; - if (cardRowCount == 1) { - ascentLeft += that.padding + cardWidth; - } else { - if (ascentLeft + that.padding + cardWidth > that.width) { - ascentLeft = 0; - row++; - ascentLeft += that.padding + cardWidth; - cardRowCount = 1; - } else { - ascentLeft += that.padding + cardWidth; - } - } - }); - return row < rows; - }, - - layoutInRows: function(ratios, rows, scale) { - var that = this; - var rowHeight = this.height / rows - this.padding * (rows - 1); - var ascentLeft = 0; - var ascentTop = 0; - var cardRowCount = 0; - this.iterCards( - function(cardDiv, cardId, props, layout) { - var ratio = ratios[cardId]; - var boxWidth = ratio.x * rowHeight * scale; - cardRowCount++; - if (cardRowCount == 1) { - that.layoutCardBox(cardDiv, cardId, props, layout, that.left + ascentLeft, that.top + ascentTop, boxWidth, rowHeight, ratio); - ascentLeft += that.padding + boxWidth; - } else { - if (ascentLeft + that.padding + boxWidth > that.width) { - ascentLeft = 0; - ascentTop += that.padding + rowHeight; - that.layoutCardBox(cardDiv, cardId, props, layout, that.left + ascentLeft, that.top + ascentTop, boxWidth, rowHeight, ratio); - ascentLeft += that.padding + boxWidth; - cardRowCount = 1; - } else { - that.layoutCardBox(cardDiv, cardId, props, layout, that.left + ascentLeft, that.top + ascentTop, boxWidth, rowHeight, ratio); - ascentLeft += that.padding + boxWidth; - } - } - }); - }, - - tryLayoutInOneRow: function(ratios, scale) { - var totalRatio = 0; - var cardCount = 0; - this.iterCards( - function(cardDiv, cardId, props, layout) { - cardCount++; - totalRatio += ratios[cardId].x; - }); - - var availableCardsWidth = this.width - this.padding * (cardCount - 1); - var maxCardHeight = this.height; - if (this.maxCardHeight != null) - maxCardHeight = Math.min(this.maxCardHeight, maxCardHeight); - var oneRowCardWidths = maxCardHeight * totalRatio * scale; - if (oneRowCardWidths <= availableCardsWidth) { - this.layoutInOneFullRow(ratios, scale); - return true; - } else { - var cardHeightInTwoRows = this.height / 2 - this.padding; - var cardHeightToFitAll = availableCardsWidth / (totalRatio * scale) - if (cardHeightToFitAll >= cardHeightInTwoRows) { - this.layoutInOnePartialRow(ratios, cardHeightToFitAll, scale); - return true; - } - } - return false; - }, - - layoutInOnePartialRow: function(ratios, rowHeight, scale) { - var that = this; - var left = 0; - var index = 0; - this.iterCards( - function(cardDiv, cardId, props, layout) { - var ratio = ratios[cardId]; - var boxWidth = ratio.x * rowHeight * scale; - - that.layoutCardBox(cardDiv, cardId, props, layout, that.left + left, that.top, boxWidth, rowHeight, ratio); - - left += boxWidth + that.padding; - index++; - }); - }, - - layoutInOneFullRow: function(ratios, scale) { - var that = this; - var left = 0; - var index = 0; - this.iterCards( - function(cardDiv, cardId, props, layout) { - var ratio = ratios[cardId]; - var cardHeight = that.height; - if (that.maxCardHeight != null) - cardHeight = Math.min(cardHeight, that.maxCardHeight); - var boxWidth = ratio.x * cardHeight * scale; - - that.layoutCardBox(cardDiv, cardId, props, layout, that.left + left, that.top, boxWidth, cardHeight, ratio); - - left += boxWidth + that.padding; - index++; - }); - }, - - layoutOneCard: function(cardDiv, cardId, props, layout, zIndex, cardLeft, cardTop, cardWidth, cardHeight) { - //log("layout card "+cardId+": "+cardLeft+","+cardTop+" "+cardWidth+"x"+cardHeight); - cardDiv.css({"zIndex": zIndex,"left": cardLeft + "px", "top": cardTop + "px", "width": cardWidth, "height": cardHeight}); - layout(cardDiv, cardId, props, cardLeft, cardTop, cardWidth, cardHeight); - }, - - layoutCardBox: function(cardDiv, cardId, props, layout, boxLeft, boxTop, boxWidth, boxHeight, ratio) { - var cardLeft = boxLeft; - var cardWidth = boxWidth; - var cardHeight = cardWidth / cardDiv.data("widthToHeight")(cardId, props); - var cardTop = boxTop + (boxHeight - cardHeight) / 2; - this.layoutOneCard(cardDiv, cardId, props, layout, this.zIndexBase, cardLeft, cardTop, cardWidth, cardHeight); - } -}); \ No newline at end of file