diff --git a/static/lib/entityDrawRules.js b/static/lib/entityDrawRules.js index e14e3cf6..c2352deb 100644 --- a/static/lib/entityDrawRules.js +++ b/static/lib/entityDrawRules.js @@ -23,17 +23,6 @@ export var entityDrawRules = { y:-2, } }, - "radar": { - spritesheet: spritesheetJson.frames["images/factorio/entity/radar/radar.png.22"], - sizeInTiles: { - x:4, - y:4, - }, - positionOffset: { - x:-0.8, - y:-1.7, - }, - }, "centrifuge": { spritesheet: spritesheetJson.frames["images/factorio/entity/centrifuge/centrifuge-A.png.0"], sizeInTiles: { @@ -157,6 +146,20 @@ for(let i = 1; i <= 3; i++){ } // template3x3entity; }; +entityDrawRules["radar"] = { + spritesheet: spritesheetJson.frames["images/factorio/entity/radar/radar.png.22"], + sizeInTiles: { + x:4, + y:4, + }, + positionOffset: { + x:-0.8, + y:-1.7, + }, +} +for(let i = 0; i < 64; i++){ + // animate the radar +} ["beacon", "electric-furnace"].forEach(name => { entityDrawRules[name] = template3x3entity; }); @@ -232,7 +235,7 @@ entityDrawRules["chemical-plant"] = { ["transport-belt", "fast-transport-belt", "express-transport-belt"].forEach(name => { entityDrawRules[name] = { spritesheet: [{ - spritesheet: [ // vertical belts + spritesheet: [ // Up // spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png.0"], // 0 to 31 ], sizeInTiles: { @@ -242,18 +245,44 @@ entityDrawRules["chemical-plant"] = { x:-0.1,y:-0, } },{ - spritesheet: [ // horizontal belts + 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:-0.25, + 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 < 32; i++){ + // down + entityDrawRules[name].spritesheet[3].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); + // left + entityDrawRules[name].spritesheet[2].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+(i+32)]); // up entityDrawRules[name].spritesheet[1].spritesheet.push(spritesheetJson.frames["images/factorio/entity/"+name+"/"+name+".png."+i]); // right diff --git a/static/remoteMap.js b/static/remoteMap.js index 6a9d500a..0116de1e 100644 --- a/static/remoteMap.js +++ b/static/remoteMap.js @@ -472,11 +472,26 @@ function drawEntity(entity, dontCache){ } else { // correct for whether we have 4 or 8 directions let spriteSheetRotIndex = dir / (8 / rules.spritesheet.length); + if(rules.spritesheet[spriteSheetRotIndex].spritesheet.length){ + var animationStage = Math.floor(Date.now()/16) % rules.spritesheet[spriteSheetRotIndex].spritesheet.length; + var usesAnimation = true; + } else { + var usesAnimation = false; + } - sprWidth = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.w; - sprHeight = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.h; - offLeft = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.x; - offTop = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.y; + if(usesAnimation){ + try{ + sprWidth = rules.spritesheet[spriteSheetRotIndex].spritesheet[animationStage].frame.w; + sprHeight = rules.spritesheet[spriteSheetRotIndex].spritesheet[animationStage].frame.h; + offLeft = rules.spritesheet[spriteSheetRotIndex].spritesheet[animationStage].frame.x; + offTop = rules.spritesheet[spriteSheetRotIndex].spritesheet[animationStage].frame.y; + }catch(e){} // TODO throws error due to yellow belt rendering + } else { + sprWidth = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.w; + sprHeight = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.h; + offLeft = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.x; + offTop = rules.spritesheet[spriteSheetRotIndex].spritesheet.frame.y; + } image = global.spritesheet; if(rules.spritesheet[spriteSheetRotIndex].positionOffset){ @@ -489,6 +504,11 @@ function drawEntity(entity, dontCache){ y: remoteMapConfig.tileSize * rules.spritesheet[spriteSheetRotIndex].sizeInTiles.y, }; } + if(rules.spritesheet[spriteSheetRotIndex].flip){ + let flip = rules.spritesheet[spriteSheetRotIndex].flip; + if(flip == "x") flipX = true; + if(flip == "y") flipY = true; + } } } else if(rules.spritesheet){ sprWidth = rules.spritesheet.frame.w;