///
///
///
class SayImage implements PrintableElement {
public static imageNames : Array = [];
public static loadTimeCheck : boolean = false;
public static imageViewer : HTMLElement = document.getElementById("imageViewer");
private imgName : string;
private isImageDefined () {
try {
for(var i = 0; i < document.styleSheets.length; i++) {
var rules = document.styleSheets[i]['rules'] || document.styleSheets[i]['cssRules'];
for(var x in rules) {
if(typeof rules[x].selectorText == 'string' && rules[x].selectorText == "." + this.imgName) {
return true;
}
}
}
return false;
} catch (e) {
console.warn("Can't check for undefined images.");
return true;
}
}
public constructor (imgName : string) {
this.imgName = imgName;
if (!SayImage.loadTimeCheck && SayImage.imageNames.indexOf(this) == -1) {
SayImage.imageNames.push(this);
}
}
public getImageElement () : Element {
let img = document.createElement("div");
if (this.isImageDefined()) {
img.classList.add(this.imgName);
img.classList.add("contentImage");
} else {
img.classList.add("error");
img.appendChild(document.createTextNode("Image \"" + this.imgName + "\" not found."));
}
img.addEventListener("click", () => {
SayImage.showInViewer(this);
});
Controls.KeyHandler.applyCode(img, Controls.KeyHandler.imageKeyCode.getValue());
return img;
}
public getPrintedElement () {
return [this.getImageElement()];
}
public static doLoadTimeCheck() {
for (let i = 0; i < SayImage.imageNames.length; i++) {
let image = SayImage.imageNames[i];
if (!image.isImageDefined()) {
if (Settings.hardDebug) {
Elements.CurrentTurnHandler.printAsError("Image \"" + image.imgName + "\" was not found.");
}
console.error("Image \"" + image.imgName + "\" was not found.");
}
}
SayImage.loadTimeCheck = true;
}
public static showInViewer (image : SayImage) {
if (!(SayImage.imageViewer.style.display == 'block')) {
SayImage.imageViewer.addEventListener("click", () => {
SayImage.imageViewer.style.display = "none";
});
SayImage.imageViewer.className = image.imgName;
SayImage.imageViewer.style.display = "block";
} else {
SayImage.imageViewer.style.display = "none";
}
}
}
module MachineBegins {
export let ImageLoadTimeCheck = MachineBegins.rulebook.createAndAddRule({
firstPriority : Rule.PRIORITY_HIGHEST, // We want this to print to the top of the console
name : "Check for undefined images",
code : () => {
try {
SayImage.doLoadTimeCheck();
} catch (e) {
console.warn("Can't check for undefined images.");
}
}
});
}