diff --git a/static/lib/entityDrawRules.js b/static/lib/entityDrawRules.js deleted file mode 100644 index 903bc722..00000000 --- a/static/lib/entityDrawRules.js +++ /dev/null @@ -1,345 +0,0 @@ - -import spritesheetJson from "./../pictures/spritesheet.js"; - -export var entityDrawRules = { - "accumulator": { - spritesheet: spritesheetJson.frames["images/factorio/entity/accumulator/accumulator.png"], - sizeInTiles: { - x:3.5, - y:3.5, - }, - positionOffset: { - x:-1, - y:-2, - } - }, - "centrifuge": { - spritesheet: spritesheetJson.frames["images/factorio/entity/centrifuge/centrifuge-A.png.0"], - sizeInTiles: { - x:4, - y:4, - }, - positionOffset: { - x:-1.5, - y:-1, - }, - }, - "stone-furnace": { - spritesheet: spritesheetJson.frames["images/factorio/entity/stone-furnace/stone-furnace.png"], - sizeInTiles: { - x:3, - y:2.2, - }, - positionOffset: { - x:-0.9, - y:-1, - }, - }, - "steel-furnace": { - spritesheet: spritesheetJson.frames["images/factorio/entity/steel-furnace/steel-furnace.png"], - sizeInTiles: { - x:2.5, - y:2.5, - }, - positionOffset: { - x:-1.2, - y:-1.1, - }, - }, - "roboport": { - spritesheet: spritesheetJson.frames["images/factorio/entity/roboport/roboport-base.png"], - sizeInTiles: { - x:5, - y:4.5, - }, - positionOffset: { - x:-2, - y:-2.2, - }, - }, - "substation": { - spritesheet: spritesheetJson.frames["images/factorio/entity/substation/substation.png.0"], - sizeInTiles: { - x:3, - y:3, - }, - positionOffset: { - x:-1, - y:-1.8, - }, - }, - "big-electric-pole": { - spritesheet: spritesheetJson.frames["images/factorio/entity/big-electric-pole/big-electric-pole.png.0"], - sizeInTiles: { - x:5, - y:5, - }, - positionOffset: { - x:-1, - y:-3.5, - }, - }, - "electric-mining-drill": { - spritesheet: [{ - spritesheet: spritesheetJson.frames["images/factorio/entity/electric-mining-drill/electric-mining-drill-N.png.0"], - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/electric-mining-drill/electric-mining-drill-E.png.0"], - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/electric-mining-drill/electric-mining-drill-S.png.0"], - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/electric-mining-drill/electric-mining-drill-W.png.0"], - }, - ], - sizeInTiles: { - x:3, - y:3, - }, - positionOffset: { - x:-1, - y:-1, - }, - }, - "straight-rail": { - sizeInTiles: { - x:2, - y:2, - }, - positionOffset: { - x:-1, - y:-1, - } - }, -}; -let template3x3entity = { - sizeInTiles: { - x:3, - y:3, - }, - positionOffset: { - x:-1, - y:-1, - }, -}; -for(let i = 1; i <= 3; i++){ - let name = "assembling-machine-"+i; - // entityDrawRules[name] = - entityDrawRules[name] = { - spritesheet: spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.0"], - sizeInTiles: { - x:3.9, - y:3.9, - }, - positionOffset: { - x:-1.4, - y:-1.2, - }, - } - // template3x3entity; -}; -entityDrawRules["radar"] = { - spritesheet: [], - sizeInTiles: { - x:4, - y:4, - }, - positionOffset: { - x:-0.8, - y:-1.7, - }, -} -for(let i = 0; i < 64; i++){ - // animate the radar - entityDrawRules.radar.spritesheet.push({spritesheet: spritesheetJson.frames["images/factorio/entity/radar/radar.png."+i]}); -} -["beacon", "electric-furnace"].forEach(name => { - entityDrawRules[name] = template3x3entity; -}); -entityDrawRules["lab"] = { - spritesheet: spritesheetJson.frames["images/factorio/entity/lab/lab.png.0"], - sizeInTiles: { - x:3.5, - y:3, - }, - positionOffset: { - x:-1, - y:-0.9, - }, -} -entityDrawRules["chemical-plant"] = { - spritesheet: [{ - spritesheet: spritesheetJson.frames["images/factorio/entity/chemical-plant/chemical-plant.png.0"], - sizeInTiles: { - x:3.5, - y:3.5, - }, - positionOffset: { - x:-1.3, - y:-1, - }, - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/chemical-plant/chemical-plant.png.1"], - sizeInTiles: { - x:3.7, - y:4, - }, - positionOffset: { - x:-1.3, - y:-1.5, - }, - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/chemical-plant/chemical-plant.png.2"], - sizeInTiles: { - x:3.5, - y:3.2, - }, - positionOffset: { - x:-1.3, - y:-1, - }, - },{ - spritesheet: spritesheetJson.frames["images/factorio/entity/chemical-plant/chemical-plant.png.3"], - sizeInTiles: { - x:3.7, - y:3.6, - }, - positionOffset: { - x:-1.45, - y:-1.3, - }, - }, - ], -}; -[{name: "solar-panel", ref:"images/factorio/entity/solar-panel/solar-panel.png"}].forEach(ent => { - entityDrawRules[ent.name] = { - spritesheet: spritesheetJson.frames[ent.ref], - sizeInTiles: { - x:3, - y:3, - }, - positionOffset: { - x:-1, - y:-1, - }, - } -}); - -["transport-belt", "fast-transport-belt", "express-transport-belt"].forEach(name => { - entityDrawRules[name] = { - spritesheet: [{ - spritesheet: [ // Up - // spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.0"], // 0 to 31 - ], - sizeInTiles: { - x:1.2,y:1.4, - }, - positionOffset: { - x:-0.1,y:-0, - } - },{ - spritesheet: [ // Right - // spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.0"], // 0 to 31 - ], - sizeInTiles: { - x:1.2,y:1.4, - }, - positionOffset: { - x:-0.1,y:-0.2, - } - },{ - spritesheet: [ // Down - // spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.27"], // 32 to 63 - ], - flip: "y", - sizeInTiles: { - x:1.3,y:1.6, - }, - positionOffset: { - x:-0.15,y:-1.6, - } - },{ - spritesheet: [ // Left - // spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.27"], // 32 to 63 - ], - flip: "x", - sizeInTiles: { - x:1.3,y:1.6, - }, - positionOffset: { - x:-1.35,y:-0.25, - } - }], - } - for(let i = 0; i < 16; i++){ - if(name == "transport-belt"){ - entityDrawRules[name].spritesheet[3].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); - entityDrawRules[name].spritesheet[2].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+(i+16)]); - entityDrawRules[name].spritesheet[1].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); - entityDrawRules[name].spritesheet[0].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+(i+16)]); - - } else { - entityDrawRules[name].spritesheet[3].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); - entityDrawRules[name].spritesheet[2].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+(i+32)]); - entityDrawRules[name].spritesheet[1].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); - entityDrawRules[name].spritesheet[0].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+(i+32)]); - } - } -}); -["splitter", "fast-splitter", "express-splitter"].forEach(splitter => { - entityDrawRules[splitter] = { - rotOffset:180, - } -}); -["underground-belt", "fast-underground-belt", "express-underground-belt"].forEach(underneathie => { - entityDrawRules[underneathie] = { - rotOffset: 270, - } -}); -["inserter", "fast-inserter", "stack-inserter", "filter-inserter", "burner-inserter", 'long-handed-inserter', 'stack-filter-inserter'].forEach(inserter => { - entityDrawRules[inserter] = { - rotOffset:90, - } -}); -entityDrawRules["oil-refinery"] = { - spritesheet: [ - { - spritesheet: spritesheetJson.frames["images/factorio/entity/oil-refinery/oil-refinery.png.0"], - }, { - spritesheet: spritesheetJson.frames["images/factorio/entity/oil-refinery/oil-refinery.png.1"], - }, { - spritesheet: spritesheetJson.frames["images/factorio/entity/oil-refinery/oil-refinery.png.2"], - }, { - spritesheet: spritesheetJson.frames["images/factorio/entity/oil-refinery/oil-refinery.png.3"], - }], -} -// correct image size for the oil refinery frames (same for all of them on this one) -entityDrawRules["oil-refinery"].spritesheet.forEach(object => { - object.sizeInTiles = { - x:10, - y:7.5, - } - object.positionOffset = { - x:-2, - y:-2.7, - } -}); -// tree sizes -["tree-02", -"tree-02-red", -"tree-03", -"tree-04", -"tree-05", -"tree-07", -"tree-09", -"tree-09-brown", -"tree-09-red"].forEach(tree => { - entityDrawRules[tree] = { - sizeInTiles: { - x: 3, - y: 4, - }, - positionOffset: { - x: -0.6, - y: -2.6, - } - } -}); diff --git a/static/lib/utility.js b/static/lib/utility.js index 930f9653..f9f909ba 100644 --- a/static/lib/utility.js +++ b/static/lib/utility.js @@ -7,47 +7,3 @@ export function getParameterByName(name, url) { if(!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } - -// ctx, entityImages[name].img, xPos, yPos, size.x, size.y, rotation, sprWidth, sprHeight, offLeft, offTop -export function drawImageWithRotation(ctx, image, x, y, w, h, degrees, sprWidth, sprHeight, offLeft, offTop, flipX, flipY){ - ctx.save(); - ctx.translate(x+w/2, y+h/2); - ctx.rotate(degrees*Math.PI/180.0); - ctx.translate(-x-w/2, -y-h/2); - if(flipX) { - x -= x*2+sprWidth; - ctx.scale(-1, 1); - } - if(flipY){ - y -= y*2+sprHeight; - ctx.scale(1, -1); - } - - 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 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; -} \ No newline at end of file