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 f075df6c3..9be5bffda 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 @@ -2,6 +2,7 @@ 2 Jun. 2012 - The drop-downs for deck and format in Game Hall no longer reset periodically. - The formats for each week in League tab are now clickable to show the details for the format. +- Attached cards which have cars attached (like in case of "Whisper in the Dark") now should be displayed proparly. 30 May 2012 - "Pippin, Friend to Frodo" now prevents only Shadow player from discarding Tales, not the FP player, if a Shadow card diff --git a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-005/jCardGroup.js b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-005/jCardGroup.js index ad56931b9..45ba2b647 100644 --- a/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-005/jCardGroup.js +++ b/gemp-lotr/gemp-lotr-web/src/main/webapp/js/gemp-005/jCardGroup.js @@ -205,13 +205,22 @@ var NormalCardGroup = CardGroup.extend({ } while (!result); }, + getAttachedCardsWidth: function(maxDimension, cardData) { + var result = 0; + for (var i = 0; i < cardData.attachedCards.length; i++) { + var attachedCardData = cardData.attachedCards[i].data("card"); + result += attachedCardData.getWidthForMaxDimension(maxDimension); + result += this.getAttachedCardsWidth(maxDimension, attachedCardData); + } + return result; + }, + getCardsWithAttachmentWidthProportion: function(cardsToLayout) { var proportionsArray = new Array(); for (var cardIndex in cardsToLayout) { var cardData = cardsToLayout[cardIndex].data("card"); var cardWithAttachmentWidth = cardData.getWidthForMaxDimension(1000); - for (var i = 0; i < cardData.attachedCards.length; i++) - cardWithAttachmentWidth += cardData.attachedCards[i].data("card").getWidthForMaxDimension(1000) * 0.2; + cardWithAttachmentWidth += this.getAttachedCardsWidth(1000, cardData) * 0.2; proportionsArray.push(cardWithAttachmentWidth / 1000); } return proportionsArray; @@ -269,29 +278,35 @@ var NormalCardGroup = CardGroup.extend({ return true; }, + layoutAttached: function(cardData, y, height, layoutVars) { + for (var i = 0; i < cardData.attachedCards.length; i++) { + var attachedCardData = cardData.attachedCards[i].data("card"); + var attachedCardWidth = attachedCardData.getWidthForMaxDimension(height); + this.layoutAttached(attachedCardData, y, height, layoutVars); + this.layoutCard(cardData.attachedCards[i], this.x + layoutVars.x, this.y + y, attachedCardWidth, attachedCardData.getHeightForWidth(attachedCardWidth), layoutVars.index); + layoutVars.x += Math.floor(attachedCardWidth * 0.2); + layoutVars.index++; + } + }, + layoutInRow: function(cardsToLayout, height) { if (this.maxCardHeight != null) height = Math.min(this.maxCardHeight, height); - var x = 0; - var row = 0; + var layoutVars = {}; + layoutVars.x = 0; var y = Math.floor((this.height - height) / 2); for (var cardIndex in cardsToLayout) { - var index = 10; + layoutVars.index = 10; var cardElem = cardsToLayout[cardIndex]; var cardData = cardElem.data("card"); var cardWidth = cardData.getWidthForMaxDimension(height); - for (var i = 0; i < cardData.attachedCards.length; i++) { - var attachedCardData = cardData.attachedCards[i].data("card"); - var attachedCardWidth = attachedCardData.getWidthForMaxDimension(height); - this.layoutCard(cardData.attachedCards[i], this.x + x, this.y + y, attachedCardWidth, attachedCardData.getHeightForWidth(attachedCardWidth), index); - x += Math.floor(attachedCardWidth * 0.2); - index++; - } - this.layoutCard(cardElem, this.x + x, this.y + y, cardWidth, cardData.getHeightForWidth(cardWidth), index); - x += cardWidth; - x += this.padding; + this.layoutAttached(cardData, y, height, layoutVars) + + this.layoutCard(cardElem, this.x + layoutVars.x, this.y + y, cardWidth, cardData.getHeightForWidth(cardWidth), layoutVars.index); + layoutVars.x += cardWidth; + layoutVars.x += this.padding; } }, @@ -300,38 +315,31 @@ var NormalCardGroup = CardGroup.extend({ if (this.maxCardHeight != null) rowHeight = Math.min(this.maxCardHeight, rowHeight); var yBias = Math.floor((this.height - (rowHeight * rowCount) - (this.padding * (rowCount - 1))) / 2); - var x = 0; + var layoutVars = {}; + layoutVars.x = 0; var row = 0; var y = yBias; for (var cardIndex in cardsToLayout) { - var index = 10; + layoutVars.index = 10; var cardElem = cardsToLayout[cardIndex]; var cardData = cardElem.data("card"); var cardWidth = cardData.getWidthForMaxDimension(rowHeight); - var attachmentWidths = 0; - for (var i = 0; i < cardData.attachedCards.length; i++) - attachmentWidths += cardData.attachedCards[i].data("card").getWidthForMaxDimension(rowHeight) * 0.2; + var attachmentWidths = this.getAttachedCardsWidth(rowHeight, cardData) * 0.2; var cardWidthWithAttachments = cardWidth + attachmentWidths; - if (x + cardWidthWithAttachments > this.width) { + if (layoutVars.x + cardWidthWithAttachments > this.width) { row++; - x = 0; + layoutVars.x = 0; y = yBias + row * (rowHeight + this.padding); } - for (var i = 0; i < cardData.attachedCards.length; i++) { - var attachedCardData = cardData.attachedCards[i].data("card"); - var attachedCardWidth = attachedCardData.getWidthForMaxDimension(rowHeight); - this.layoutCard(cardData.attachedCards[i], this.x + x, this.y + y, attachedCardWidth, attachedCardData.getHeightForWidth(attachedCardWidth), index); - x += Math.floor(attachedCardWidth * 0.2); - index++; - } - this.layoutCard(cardElem, this.x + x, this.y + y, cardWidth, cardData.getHeightForWidth(cardWidth), index); - x += cardWidth; - if (x > this.width) + this.layoutAttached(cardData, y, rowHeight, layoutVars); + this.layoutCard(cardElem, this.x + layoutVars.x, this.y + y, cardWidth, cardData.getHeightForWidth(cardWidth), layoutVars.index); + layoutVars.x += cardWidth; + if (layoutVars.x > this.width) return false; - x += this.padding; + layoutVars.x += this.padding; } return true;