56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| const fs = require('fs');
 | |
| const path = require('path');
 | |
| 
 | |
| // Constants
 | |
| const WORLD_LOAD_TOKEN = ";";
 | |
| const TILE_FLAG_DYNAMIC = 1;
 | |
| 
 | |
| // Method.
 | |
| const saveWorld = (world) => {
 | |
|   const pathWorld = path.join(__dirname, '..', '..', 'assets', world.name);
 | |
|   if(!fs.existsSync(pathWorld)) fs.mkdirSync(pathWorld);
 | |
| 
 | |
|   // World string buffer (file data).
 | |
|   let strBuffer = "";
 | |
| 
 | |
|   // Header
 | |
|   strBuffer += [
 | |
|     world.version,
 | |
|     world.tileset,
 | |
|     ""// Seal
 | |
|   ].join(WORLD_LOAD_TOKEN);
 | |
| 
 | |
|   // Tilemap Definition
 | |
|   let buffer = [];
 | |
|   for(let i = 0; i < world.tilemap.length; i++) {
 | |
|     let tileDef = world.tilemap[i];
 | |
|     buffer.push(tileDef.verticeCount+'');
 | |
|     buffer.push(tileDef.indiceCount+'');
 | |
|     buffer.push(tileDef.flags+'');
 | |
|   }
 | |
|   strBuffer += buffer.join(WORLD_LOAD_TOKEN);
 | |
|   
 | |
|   fs.writeFileSync(path.join(pathWorld, 'world.txt'), strBuffer);
 | |
| }
 | |
| 
 | |
| // Worlds.
 | |
| const TILEMAP_WIDTH = 8;
 | |
| const TILEMAP_HEIGHT = 298;
 | |
| 
 | |
| let world = {
 | |
|   version: '1.00',
 | |
|   tileset: 'tileset.png',
 | |
|   name: 'testworld',
 | |
|   tilemap: [ ]
 | |
| };
 | |
| 
 | |
| for(let i = 0; i < TILEMAP_WIDTH * TILEMAP_HEIGHT; i++) {
 | |
|   world.tilemap[i] = {
 | |
|     indiceCount: 6,
 | |
|     verticeCount: 4,
 | |
|     flags: 0
 | |
|   };
 | |
| }
 | |
| 
 | |
| console.log('bruh', world);
 | |
| saveWorld(world); |