Spaces:
Sleeping
Sleeping
| import * as CONFIG from './leconfig.js' | |
| import * as UTIL from './eutils.js' | |
| import { g_ctx } from './lecontext.js' // global context | |
| function generate_preamble() { | |
| const mapfile_preamble = '' + | |
| '// Map generated by assettool.js [' + new Date() + ']\n' + | |
| '\n' + | |
| 'export const tilesetpath = "' + g_ctx.tilesetpath + '"\n' + | |
| 'export const tiledim = ' + g_ctx.tiledimx + '\n' + | |
| 'export const screenxtiles = ' + g_ctx.tilesettilew + '\n' + | |
| 'export const screenytiles = ' + g_ctx.tilesettileh + '\n' + | |
| 'export const tilesetpxw = ' + g_ctx.tilesetpxw + '\n' + | |
| 'export const tilesetpxh = ' + g_ctx.tilesetpxh + '\n\n' | |
| return mapfile_preamble; | |
| } | |
| const bgtile_string_start = '' + | |
| 'export const bgtiles = [\n' + | |
| ' [\n' | |
| function write_map_file(bg_tiles_0, bg_tiles_1, obj_tiles_1, obj_tiles_2, animated_tiles){ | |
| let text = generate_preamble(); | |
| text += bgtile_string_start; | |
| for(let row = 0; row < bg_tiles_0.length; row++) { | |
| text += '[ '; | |
| for(let column = 0; column < bg_tiles_0[row].length; column++) { | |
| text += bg_tiles_0[row][column]; | |
| if (column != bg_tiles_0.length - 1){ | |
| text += ' , '; | |
| } | |
| } | |
| text += '],\n'; | |
| } | |
| text += '],\n'; | |
| text += '[\n'; | |
| for(let row = 0; row < bg_tiles_1.length; row++) { | |
| text += '[ '; | |
| for(let column = 0; column < bg_tiles_1[row].length; column++) { | |
| text += bg_tiles_1[row][column]; | |
| if (column != bg_tiles_1.length - 1){ | |
| text += ' , '; | |
| } | |
| } | |
| text += '],\n'; | |
| } | |
| text += '],];\n\n'; | |
| text += ''+ | |
| 'export const objmap = [\n'+ | |
| '[\n'; | |
| for(let row = 0; row < obj_tiles_1.length; row++) { | |
| text += '[ '; | |
| for(let column = 0; column < obj_tiles_1[row].length; column++) { | |
| text += obj_tiles_1[row][column]; | |
| if (column != obj_tiles_1.length - 1){ | |
| text += ' , '; | |
| } | |
| } | |
| text += '],\n'; | |
| } | |
| text += '],\n'; | |
| text += '[\n'; | |
| for(let row = 0; row < obj_tiles_2.length; row++) { | |
| text += '[ '; | |
| for(let column = 0; column < obj_tiles_2[row].length; column++) { | |
| text += obj_tiles_2[row][column]; | |
| if (column != obj_tiles_2.length - 1){ | |
| text += ' , '; | |
| } | |
| } | |
| text += '],\n'; | |
| } | |
| text += '],];\n'; | |
| text += ''+ | |
| 'export const animatedsprites = [\n'; | |
| for(let x = 0 ; x < animated_tiles.length; x++){ | |
| let atile = animated_tiles[x]; | |
| text += '{ x: '+atile.x+", y: "+ atile.y+ ", w: "+ atile.width+ ", h: "+ atile.height ; | |
| text += ', layer: '+atile.layer; | |
| text += ', sheet: "'+ atile.spritesheetname+ '", animation: "'+ atile.animationname+'" },\n'; | |
| } | |
| text += '];\n\n'; | |
| text += 'export const mapwidth = bgtiles[0][0].length;\n'; | |
| text += 'export const mapheight = bgtiles[0].length;\n'; | |
| UTIL.download(text, "map.js", "text/plain"); | |
| } | |
| export function generate_level_file() { | |
| let layer0 = g_ctx.g_layers[0]; | |
| let layer1 = g_ctx.g_layers[1]; | |
| let layer2 = g_ctx.g_layers[2]; | |
| let layer3 = g_ctx.g_layers[3]; | |
| let animated_tiles = []; | |
| // level0 | |
| var tile_array0 = Array.from(Array(CONFIG.leveltilewidth), () => new Array(CONFIG.leveltileheight)); | |
| for (let x = 0; x < CONFIG.leveltilewidth; x++) { | |
| for (let y = 0; y < CONFIG.leveltileheight; y++) { | |
| tile_array0[x][y] = -1; | |
| } | |
| } | |
| for (var i = 0; i < layer0.container.children.length; i++) { | |
| var child = layer0.container.children[i]; | |
| // check if it's an animated sprite | |
| if(child.hasOwnProperty('animationSpeed')){ | |
| child.layer = 0; | |
| animated_tiles.push(child); | |
| continue; | |
| } | |
| if (!child.hasOwnProperty('index')) { | |
| continue; | |
| } | |
| let x_coord = child.x / g_ctx.tiledimx; | |
| let y_coord = child.y / g_ctx.tiledimy; | |
| if (typeof tile_array0[x_coord] == 'undefined'){ | |
| console.log("**Error xcoord undefined ", x_coord); | |
| } | |
| else if (typeof tile_array0[x_coord][y_coord] == 'undefined'){ | |
| console.log("**Error xcoord/ycoord undefined ", x_coord, y_coord); | |
| }else{ | |
| tile_array0[x_coord][y_coord] = child.index; | |
| } | |
| } | |
| // level1 | |
| var tile_array1 = Array.from(Array(CONFIG.leveltilewidth), () => new Array(CONFIG.leveltileheight)); | |
| for (let x = 0; x < CONFIG.leveltilewidth; x++) { | |
| for (let y = 0; y < CONFIG.leveltileheight; y++) { | |
| tile_array1[x][y] = -1; | |
| } | |
| } | |
| for (var i = 0; i < layer1.container.children.length; i++) { | |
| var child = layer1.container.children[i]; | |
| // check if it's an animated sprite | |
| if(child.hasOwnProperty('animationSpeed')){ | |
| child.layer = 1; | |
| animated_tiles.push(child); | |
| continue; | |
| } | |
| if (!child.hasOwnProperty('index')) { | |
| continue; | |
| } | |
| let x_coord = child.x / g_ctx.tiledimx; | |
| let y_coord = child.y / g_ctx.tiledimy; | |
| if (typeof tile_array1[x_coord] == 'undefined'){ | |
| console.log("**Error xcoord undefined ", x_coord); | |
| } | |
| else if (typeof tile_array1[x_coord][y_coord] == 'undefined'){ | |
| console.log("**Error xcoord/ycoord undefined ", x_coord, y_coord); | |
| }else{ | |
| tile_array1[x_coord][y_coord] = child.index; | |
| } | |
| } | |
| // object level | |
| var tile_array2 = Array.from(Array(CONFIG.leveltilewidth), () => new Array(CONFIG.leveltileheight)); | |
| for (let x = 0; x < CONFIG.leveltilewidth; x++) { | |
| for (let y = 0; y < CONFIG.leveltileheight; y++) { | |
| tile_array2[x][y] = -1; | |
| } | |
| } | |
| for (var i = 0; i < layer2.container.children.length; i++) { | |
| var child = layer2.container.children[i]; | |
| // check if it's an animated sprite | |
| if(child.hasOwnProperty('animationSpeed')){ | |
| child.layer = 2; | |
| animated_tiles.push(child); | |
| continue; | |
| } | |
| if (!child.hasOwnProperty('index')) { | |
| continue; | |
| } | |
| let x_coord = child.x / g_ctx.tiledimx; | |
| let y_coord = child.y / g_ctx.tiledimy; | |
| if (typeof tile_array2[x_coord] == 'undefined'){ | |
| console.log("**Error xcoord undefined ", x_coord); | |
| } | |
| else if (typeof tile_array2[x_coord][y_coord] == 'undefined'){ | |
| console.log("**Error xcoord/ycoord undefined ", x_coord, y_coord); | |
| }else{ | |
| tile_array2[x_coord][y_coord] = child.index; | |
| } | |
| } | |
| // object level | |
| var tile_array3 = Array.from(Array(CONFIG.leveltilewidth), () => new Array(CONFIG.leveltileheight)); | |
| for (let x = 0; x < CONFIG.leveltilewidth; x++) { | |
| for (let y = 0; y < CONFIG.leveltileheight; y++) { | |
| tile_array3[x][y] = -1; | |
| } | |
| } | |
| for (var i = 0; i < layer3.container.children.length; i++) { | |
| var child = layer3.container.children[i]; | |
| // check if it's an animated sprite | |
| if(child.hasOwnProperty('animationSpeed')){ | |
| child.layer = 3; | |
| animated_tiles.push(child); | |
| continue; | |
| } | |
| if (!child.hasOwnProperty('index')) { | |
| continue; | |
| } | |
| let x_coord = child.x / g_ctx.tiledimx; | |
| let y_coord = child.y / g_ctx.tiledimy; | |
| if (typeof tile_array3[x_coord] == 'undefined'){ | |
| console.log("**Error xcoord undefined ", x_coord); | |
| } | |
| else if (typeof tile_array3[x_coord][y_coord] == 'undefined'){ | |
| console.log("**Error xcoord/ycoord undefined ", x_coord, y_coord); | |
| }else{ | |
| tile_array3[x_coord][y_coord] = child.index; | |
| } | |
| } | |
| write_map_file(tile_array0, tile_array1, tile_array2, tile_array3, animated_tiles); | |
| } |