mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-14 15:24:52 +09:00
remoteMap don't error on broken image links
This commit is contained in:
1 parent
486890480d
commit
2ab163ab68
2 files changed
+24
-4
No files matched your search
+22
-2
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user