Reinstated automatic English translation on hover-over for tengwar, as an official feature now instead of an accident that stopped working.

This commit is contained in:
Christian 'ketura' McCarty
2025-03-23 21:10:32 -05:00
parent 6fd2daf4d7
commit 6b329bad11
3 changed files with 74 additions and 38 deletions

View File

@@ -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) {

View File

@@ -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)

View File

@@ -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) {