Files
archived-andors-trail/AndorsTrailEdit/js/tilesets.js
2013-03-17 14:28:16 +01:00

166 lines
6.0 KiB
JavaScript

var ATEditor = (function(ATEditor, utils) {
function TilesetImage(options) {
var defaultOptions = {
numTiles: { x: 1, y: 1 }
,tileSize: { x: 32, y: 32 }
,usedFor: []
};
_.defaults(options, defaultOptions);
this._name = options.name;
this._numTiles = options.numTiles;
this._tileSize = options.tileSize;
this._usedFor = options.usedFor;
this.localIDToCoords = function(localID) {
return {
x: (localID % this._numTiles.x) * this._tileSize.x,
y: Math.floor(localID / this._numTiles.x) * this._tileSize.y
}
}
this.coordsToLocalID = function(x, y) {
return Math.floor(x / this._tileSize.x)
+ this._numTiles.x * Math.floor(y / this._tileSize.y)
}
}
var defaultImagePath = utils.getUrlRelativeToBaseSrcDir("AndorsTrail/res/drawable/");
var defaultimage = {
tilesetName: 'defaultimage',
localID: 0,
path: ''
};
var defaultTileset = new TilesetImage({name: defaultimage.tilesetName });
var _tilesets = {};
_tilesets[defaultimage.tilesetName] = defaultTileset;
var getTileset = function(name) {
var result = _tilesets[name];
if (!result) { return defaultTileset; }
return result;
}
var parseImageID = function(str) {
if (!str || str == "") return defaultimage;
var v = str.split(":");
if (v.length < 1) return defaultimage;
return {
tilesetName: v[0],
localID: v[1],
path: defaultImagePath
};
}
var createImageID = function(tilesetName, localID) {
if (!tilesetName) return "";
return tilesetName + ":" + localID;
}
var add = function(tilesetName, numTiles, usedFor, tileSize) {
_tilesets[tilesetName] = new TilesetImage({
name: tilesetName
,numTiles: numTiles
,tileSize: tileSize
,usedFor: usedFor
});
}
var getTilesetsForSection = function(section) {
return _.filter(_tilesets, function(tileset) {
return _.contains(tileset._usedFor, section);
});
}
var getIconIDsForSection = function(section) {
var result = [];
_.each(getTilesetsForSection(section), function(tileset) {
for(var i = 0; i < tileset._numTiles.y * tileset._numTiles.x; i++) {
result.push(createImageID(tileset._name, i));
}
});
return result;
}
add("actorconditions_1", {x:14, y:8}, [ 'actorcondition' ] );
add("actorconditions_2", {x:3, y:1}, [ 'actorcondition' ] );
add("items_armours", {x:14, y:3}, [ 'item' ] );
add("items_armours_3", {x:10, y:4}, [ 'item' ] );
add("items_armours_2", {x:7, y:1}, [ 'item' ] );
add("items_weapons", {x:14, y:6}, [ 'item' ] );
add("items_weapons_3", {x:13, y:5}, [ 'item' ] );
add("items_weapons_2", {x:7, y:1}, [ 'item' ] );
add("items_jewelry", {x:14, y:1}, [ 'item' ] );
add("items_rings_1", {x:10, y:3}, [ 'item' ] );
add("items_necklaces_1", {x:10, y:3}, [ 'item' ] );
add("items_consumables", {x:14, y:5}, [ 'item' ] );
add("items_books", {x:11, y:1}, [ 'item' ] );
add("items_misc", {x:14, y:4}, [ 'item' ] );
add("items_misc_2", {x:20, y:12}, [ 'item' ] );
add("items_misc_3", {x:20, y:12}, [ 'item' ] );
add("items_misc_4", {x:20, y:4}, [ 'item' ] );
add("items_misc_5", {x:9, y:5}, [ 'item' ] );
add("items_misc_6", {x:9, y:4}, [ 'item' ] );
add("items_reterski_1", {x:3, y:10}, [ 'item' ] );
add("items_tometik1", {x:6, y:10}, [ 'item' ] );
add("items_tometik2", {x:10, y:10}, [ 'item' ] );
add("items_tometik3", {x:8, y:6}, [ 'item' ] );
add("monsters_armor1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_dogs", {x: 7, y:1}, [ 'monster' ] );
add("monsters_eye1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_eye2", {x: 1, y:1}, [ 'monster' ] );
add("monsters_eye3", {x: 1, y:1}, [ 'monster' ] );
add("monsters_eye4", {x: 1, y:1}, [ 'monster' ] );
add("monsters_ghost1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_hydra1", {x: 1, y:1}, [ 'monster' ], {x:64, y:64} );
add("monsters_insects", {x: 6, y:1}, [ 'monster' ] );
add("monsters_liches", {x: 4, y:1}, [ 'monster' ] );
add("monsters_mage", {x: 1, y:1}, [ 'monster' ] );
add("monsters_mage2", {x: 1, y:1}, [ 'monster' ] );
add("monsters_man1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_men", {x: 9, y:1}, [ 'monster' ] );
add("monsters_men2", {x: 10, y:1}, [ 'monster' ] );
add("monsters_misc", {x: 12, y:1}, [ 'monster' ] );
add("monsters_rats", {x: 5, y:1}, [ 'monster' ] );
add("monsters_rogue1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_skeleton1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_skeleton2", {x: 1, y:1}, [ 'monster' ] );
add("monsters_snakes", {x: 6, y:1}, [ 'monster' ] );
add("monsters_warrior1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_wraiths", {x: 3, y:1}, [ 'monster' ] );
add("monsters_zombie1", {x: 1, y:1}, [ 'monster' ] );
add("monsters_zombie2", {x: 1, y:1}, [ 'monster' ] );
add("monsters_karvis1", {x: 2, y:1}, [ 'monster' ] );
add("monsters_karvis2", {x: 9, y:1}, [ 'monster' ] );
add("monsters_rltiles1", {x:20, y:8}, [ 'monster' ] );
add("monsters_rltiles2", {x:20, y:9}, [ 'monster' ] );
add("monsters_rltiles3", {x:10, y:3}, [ 'monster' ] );
add("monsters_rltiles4", {x:12, y:4}, [ 'monster' ] );
add("monsters_redshrike1", {x:7, y:1}, [ 'monster' ] );
add("monsters_ld1", {x:20, y:12}, [ 'monster' ] );
add("monsters_ld2", {x:20, y:12}, [ 'monster' ] );
add("monsters_tometik1", {x:10, y:9}, [ 'monster' ] );
add("monsters_tometik2", {x:8, y:10}, [ 'monster' ] );
add("monsters_tometik3", {x:6, y:13}, [ 'monster' ] );
add("monsters_tometik4", {x:6, y:13}, [ 'monster' ] );
add("monsters_tometik5", {x:6, y:16}, [ 'monster' ] );
add("monsters_tometik6", {x:7, y:6}, [ 'monster' ] );
add("monsters_tometik7", {x:8, y:11}, [ 'monster' ] );
add("monsters_tometik8", {x:7, y:9}, [ 'monster' ] );
add("monsters_tometik9", {x:8, y:8}, [ 'monster' ] );
add("monsters_tometik10", {x:6, y:13}, [ 'monster' ] );
add("monsters_demon1", {x:1, y:1}, [ 'monster' ], {x:64, y:64} );
add("monsters_demon2", {x:1, y:1}, [ 'monster' ], {x:64, y:64} );
add("monsters_cyclops", {x:1, y:1}, [ 'monster' ], {x:64, y:96} );
ATEditor.tilesets = {
getTileset: getTileset
,parseImageID: parseImageID
,createImageID: createImageID
,getIconIDsForSection: getIconIDsForSection
};
return ATEditor;
})(ATEditor, ATEditor.utils);