remoteMap don't error on broken image links

This commit is contained in:
Danielv123 committed 2018-03-26 16:09:15 +02:00
1 parent 486890480d
commit 2ab163ab68
2 files changed
+24 -4

No files matched your search

+22 -2
View File
@@ -23,11 +23,31 @@ export function drawImageWithRotation(ctx, image, x, y, w, h, degrees, sprWidth,
ctx.scale(1, -1);
}
if(sprWidth != undefined && sprHeight != undefined && offLeft != undefined && offTop != undefined){
if(isImageOk(image) && sprWidth != undefined && sprHeight != undefined && offLeft != undefined && offTop != undefined){
// console.log(sprWidth+" "+sprHeight+" "+offLeft+" "+offTop+" "+w+" "+h)
ctx.drawImage(image, offLeft, offTop, sprWidth, sprHeight, x, y, w, h);
} else {
} else if(isImageOk(image)){
ctx.drawImage(image, x, y, w, h);
} else {
// console.log("Image is not OK! "+image.src);
}
ctx.restore();
}
export function isImageOk(img) {
// During the onload event, IE correctly identifies any images that
// weren't downloaded as not complete. Others should too. Gecko-based
// browsers act like NS4 in that they report this incorrectly.
if (!img.complete) {
return false;
}
// However, they do have two very useful properties: naturalWidth and
// naturalHeight. These give the true size of the image. If it failed
// to load, either of these should be zero.
if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) {
return false;
}
// No other way of checking: assume it's ok.
return true;
}
+2 -2
View File
@@ -20,7 +20,7 @@ console.log(":)")
/// ES6 imports
// rules for how entities are drawn (sizes, offset etc)
import {entityDrawRules} from "./lib/entityDrawRules.js";
import {getParameterByName, drawImageWithRotation} from "./lib/utility.js";
import {getParameterByName, drawImageWithRotation, isImageOk} from "./lib/utility.js";
import spritesheetJson from "./pictures/spritesheet.js";
import {itemSelector} from "./remoteMap/itemSelection.js";
var global = {};
@@ -407,7 +407,7 @@ function renderLoop(){
for(let y = 0-dh; y < remoteMapConfig.tileSize * remoteMapConfig.mapSize + dh; y += dh){
let dx = x - playerPosition.x % dw;
let dy = y - playerPosition.y % dh;
backgroundCtx.drawImage(global.grassBackground, 0, 64, 1024, 64, dx, dy, dw, dh);
if(global.grassBackground && isImageOk(global.grassBackground)) backgroundCtx.drawImage(global.grassBackground, 0, 64, 1024, 64, dx, dy, dw, dh);
}
}
}