From 6b329bad11255813e2c7ca014a8440776aa84ce9 Mon Sep 17 00:00:00 2001 From: Christian 'ketura' McCarty Date: Sun, 23 Mar 2025 21:10:32 -0500 Subject: [PATCH] Reinstated automatic English translation on hover-over for tengwar, as an official feature now instead of an accident that stopped working. --- .../main/web/js/gemp-022/autoZoomHandler.js | 6 +- .../src/main/web/js/gemp-022/cards/Card.js | 82 +++++++++++++------ .../main/web/js/gemp-022/cards/CardDisplay.js | 24 ++++-- 3 files changed, 74 insertions(+), 38 deletions(-) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/autoZoomHandler.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/autoZoomHandler.js index b3ff51e8d..cc4f62829 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/autoZoomHandler.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/autoZoomHandler.js @@ -114,10 +114,10 @@ class AutoZoom { var targetShort = Math.min(maxShortSide, CardDisplay.TargetShort); if(card.horizontal || card.effectivelyHorizontal()) { - this.cardDisplay.reloadFromCard(card, targetLong, targetShort); + this.cardDisplay.reloadFromCard(card, targetLong, targetShort, true); } else { - this.cardDisplay.reloadFromCard(card, targetShort, targetLong); + this.cardDisplay.reloadFromCard(card, targetShort, targetLong, true); } // get position and size of the reference image (or card hint): @@ -206,7 +206,7 @@ class AutoZoom { // However if shift IS held AND it's rotated, we act like it's not. // This is basically XOR; when they are the same they cancel out, // but when they are different they cause a rotation. - this.cardDisplay.setInvert(shiftHeld != invertShift); + //this.cardDisplay.setInvert(shiftHeld != invertShift); } setPreviewMessage(reversible) { diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/Card.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/Card.js index a81386469..8f260588d 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/Card.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/Card.js @@ -55,6 +55,49 @@ class Card { static GetAlternateImage(bpid) { return bpid.includes("^", 2); } + + static GetImageFromCache(blueprintid, tengwar) { + if(tengwar) + return Card.GetTengwarImageFromCache(blueprintid); + + return Card.GetBaseImageFromCache(blueprintid); + } + + static GetBaseImageFromCache(blueprintid) { + let cached = Card.CardCache[blueprintid]; + if(cached == null) { + cached = { + imageUrl:Card.getImageUrl(blueprintid), + backSideImageUrl:Card.getBackSideUrl(blueprintid), + incomplete:Card.isIncomplete(blueprintid), + errata:Card.isErrata(blueprintid) + }; + + Card.CardCache[blueprintid] = cached; + } + + + return cached; + } + + static GetTengwarImageFromCache(blueprintid) { + let tengwarid = blueprintid + "T"; + + let cached = Card.CardCache[tengwarid]; + if(cached == null) { + cached = { + imageUrl:Card.getImageUrl(tengwarid, true), + backSideImageUrl:Card.getBackSideUrl(tengwarid), + incomplete:Card.isIncomplete(tengwarid), + errata:Card.isErrata(tengwarid) + }; + + Card.CardCache[tengwarid] = cached; + } + + + return cached; + } //blueprintId, zone, cardId, owner, siteNumber constructor (blueprintId, testingText, backSideTestingText, zone, cardId, owner, siteNumber, upsideDown, onSide) { @@ -106,32 +149,11 @@ class Card { this.horizontal = Card.isHorizontal(this.bareBlueprint, this.zone); - if (this.bareBlueprint != "-1_1" && this.bareBlueprint != "-1_2" && Card.CardCache[this.bareBlueprint] != null) { - var cardFromCache = Card.CardCache[this.bareBlueprint]; - this.imageUrl = cardFromCache.imageUrl; - this.backSideImageUrl = cardFromCache.backSideImageUrl; - this.incomplete = cardFromCache.incomplete; - this.errata = cardFromCache.errata; - } else { - this.imageUrl = Card.getImageUrl(this.bareBlueprint, this.tengwar); - this.backSideImageUrl = Card.getBackSideUrl(this.bareBlueprint); - this.incomplete = Card.isIncomplete(this.bareBlueprint); - - var separator = this.bareBlueprint.indexOf("_"); - var setNo = parseInt(this.bareBlueprint.substr(0, separator)); - var cardNo = parseInt(this.bareBlueprint.substr(separator + 1)); - - this.errata = Card.getErrata(setNo, cardNo) != null; - - if (this.bareBlueprint != "-1_1" && this.bareBlueprint != "-1_2") { - Card.CardCache[this.bareBlueprint] = { - imageUrl:this.imageUrl, - backSideImageUrl:this.backSideImageUrl, - incomplete:this.incomplete, - errata:this.errata - }; - } - } + var cardFromCache = Card.GetImageFromCache(this.bareBlueprint, this.tengwar); + this.imageUrl = cardFromCache.imageUrl; + this.backSideImageUrl = cardFromCache.backSideImageUrl; + this.incomplete = cardFromCache.incomplete; + this.errata = cardFromCache.errata; } static getFixedImage (blueprintId) { @@ -328,6 +350,14 @@ class Card { return false; } + static isErrata(blueprintId) { + var separator = blueprintId.indexOf("_"); + var setNo = parseInt(blueprintId.substr(0, separator)); + var cardNo = parseInt(blueprintId.substr(separator + 1)); + + return Card.getErrata(setNo, cardNo) != null; + } + static getImageUrl(blueprintId, tengwar, ignoreErrata) { let image = Card.getFixedImage(blueprintId) if (image != null) diff --git a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/CardDisplay.js b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/CardDisplay.js index 2738e25e3..135165894 100644 --- a/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/CardDisplay.js +++ b/gemp-lotr/gemp-lotr-async/src/main/web/js/gemp-022/cards/CardDisplay.js @@ -117,13 +117,21 @@ class CardDisplay { this.backside = null; } - reloadFromCard(card, maxWidth, maxHeight, noborder) { + reloadFromCard(card, maxWidth, maxHeight, ignoreTengwar) { this.baseDiv.data("card", card); - this.currentBP = card.blueprintId; - this.frontside = card.imageUrl; - if(!this.frontside) { - this.frontside = Card.getImageUrl(this.currentBP); + if(ignoreTengwar && card.isTengwar()) { + this.currentBP = card.bareBlueprint; + this.frontside = Card.GetBaseImageFromCache(this.currentBP).imageUrl; } + else { + this.currentBP = card.blueprintId; + this.frontside = card.imageUrl; + } + + if(!this.frontside) { + this.frontside = Card.getImageUrl(this.currentBP); + } + let back = card.backSideImageUrl; if(back && !back.includes("darkcardback") && !back.includes("lightcardback")) { @@ -143,11 +151,9 @@ class CardDisplay { this.backside = null; } } - - - this.reload(maxWidth, maxHeight, card.imageUrl, - card.horizontal || card.effectivelyHorizontal(), card.foil, noborder, card.testingText); + this.reload(maxWidth, maxHeight, this.frontside, + card.horizontal || card.effectivelyHorizontal(), card.foil, false, card.testingText); } reload(maxWidth, maxHeight, image, horizontal, foil, noborder, testingText) {