Skip to content

Commit

Permalink
find animation sprites
Browse files Browse the repository at this point in the history
  • Loading branch information
thomasballinger committed Mar 31, 2016
1 parent db428aa commit 30fb3e8
Show file tree
Hide file tree
Showing 5 changed files with 52 additions and 47 deletions.
5 changes: 5 additions & 0 deletions data/ships.txt
Expand Up @@ -21,6 +21,11 @@ ship "Triangle"
"maxDH" 200
engine -16 82
engine 16 82
explode "tiny explosion"

effect "tiny explosion"
sprite "effect/explosion/tiny"
"frame rate" 15

ship "Shuttle"
sprite "ship/shuttle"
Expand Down
26 changes: 21 additions & 5 deletions sprite-loader.js
Expand Up @@ -42,11 +42,27 @@ module.exports = function(source) {
var sprites = findSprites(data);
sprites.push.apply(sprites, engineSprites);

// uniquify
var unique = {};
for (var sprite of sprites){ unique[sprite] = true; }
sprites = Object.keys(unique);
spriteFiles = {};
var path = './esimages/';
var images = sprites.map(function(x){
filename = path + x + '.png';
if (fs.existsSync(filename)){
spriteFiles[x] = filename;
} else if (fs.existsSync(path+x+'~0.png')){
var frames = [];
var i = 0;
while (fs.existsSync(path+x+'~'+i+'.png')){
frames.push(path+x+'~'+i+'.png');
i++;
}
spriteFiles[x] = frames;
} else {
throw Error("referenced image does not exist: "+filename);
}
return filename;
});

return sprites;
console.log(spriteFiles);
return spriteFiles;
};

27 changes: 12 additions & 15 deletions sprite-outline-loader.js
Expand Up @@ -6,31 +6,28 @@ var imageprocess = require('./imageprocess');
module.exports = function(source) {
var callback = this.async();
this.cacheable();
var sprites = source;
var spriteFiles = source;

var images = sprites.map(function(x){
filename = './esimages/' + x + '.png';
if (!fs.existsSync(filename)){
throw Error("referenced image does not exist: "+filename);
}
return filename;
var outlines = {};

// skip animations with multiple frames
var spritesThatNeedOutlines = Object.keys(spriteFiles).filter(function(sprite){
return !Array.isArray(spriteFiles[sprite]);
});

var outlines = {};
for (var i=0; i < images.length; i++){
var sprite = sprites[i];
var filename = images[i];
for (var sprite of spritesThatNeedOutlines){
var filename = spriteFiles[sprite];

var thisCB = function(spriteName){
var thisCB = function(spriteName, filename){
return function(path){
outlines[spriteName] = path;
if (Object.keys(outlines).length === sprites.length){
if (Object.keys(outlines).length === spritesThatNeedOutlines.length){
callback(null, outlines);
} else {
console.log(Object.keys(outlines).length+'/'+sprites.length+' outlines complete');
console.log(Object.keys(outlines).length+'/'+spritesThatNeedOutlines.length+' outlines complete');
}
};
}(sprite);
}(sprite, spriteFiles[sprite]);

imageprocess.findOutline(filename, thisCB);
}
Expand Down
19 changes: 7 additions & 12 deletions sprite-size-loader.js
Expand Up @@ -4,20 +4,15 @@ var fs = require('fs');
/** source should be a list of sprites */
module.exports = function(source) {
this.cacheable();
var sprites = source;

var images = sprites.map(function(x){
filename = './esimages/' + x + '.png';
if (!fs.existsSync(filename)){
throw Error("referenced image does not exist: "+filename);
}
return filename;
});
var spriteFiles = source;

var dimensions = {};
for (var i=0; i < images.length; i++){
var sprite = sprites[i];
var filename = images[i];
for (var sprite of Object.keys(spriteFiles)){
var filename = spriteFiles[sprite];
// skip multiple frame animations
if (Array.isArray(filename)){
continue;
}
dimensions[sprite] = getDimsPNG(filename);
}

Expand Down
22 changes: 7 additions & 15 deletions sprite-src-loader.js
Expand Up @@ -4,26 +4,18 @@ var fs = require('fs');
/** source should be a list of sprites */
module.exports = function(source) {
this.cacheable();
var sprites = source;
var spriteFiles = source;

var images = sprites.map(function(x){
filename = '/esimages/' + x + '.png';
if (!fs.existsSync('.'+filename)){
throw Error("referenced image does not exist: "+filename);
}
return filename;
});

var ids = sprites.map(function(sprite){
function id(sprite){
return sprite.replace(/ /g, '_');
});
}

var output = '';

for (var i = 0; i<sprites.length; i++){
output += '<img src="'+images[i]+'" ' +
'id="'+ids[i]+'" '+
'alt="sprite for '+sprites[i]+'" >\n';
for (var sprite of Object.keys(spriteFiles)){
output += '<img src="'+spriteFiles[sprite]+'" ' +
'id="'+id(sprite)+'" '+
'alt="sprite for '+sprite+'" >\n';
}
return output;
};
Expand Down

0 comments on commit 30fb3e8

Please sign in to comment.