const fs = require('fs'); const path = require('path'); const TILED_DIR = path.join(__dirname, '../assets/tiled'); const ASSETS_ROOT = path.join(__dirname, '../assets'); // Configuration const TMX_FILENAME = 'Faza1_Nova.tmx'; const TSX_FILENAME = 'Buildings.tsx'; const MAP_WIDTH = 80; const MAP_HEIGHT = 80; // Gather all images const imageFiles = []; const sourceDirs = ['buildings', 'terrain', 'props']; let tileIdCounter = 0; let tilesXml = ''; sourceDirs.forEach(dirName => { const fullPath = path.join(ASSETS_ROOT, dirName); if (fs.existsSync(fullPath)) { const files = fs.readdirSync(fullPath); files.forEach(file => { if (file.toLowerCase().endsWith('.png')) { // Determine relative path from assets/tiled/ to assets/dir/file // assets/tiled -> assets/dir = ../dir const relativePath = `../${dirName}/${file}`; tilesXml += ` \n`; tilesXml += ` \n`; // Let Tiled detect size tilesXml += ` \n`; tileIdCounter++; } }); } }); // 1. Generate TSX (Tileset) const tsxContent = ` ${tilesXml} `; fs.writeFileSync(path.join(TILED_DIR, TSX_FILENAME), tsxContent); console.log(`✅ Created tileset: ${TSX_FILENAME} with ${tileIdCounter} tiles.`); // 2. Generate TMX (Map) // Create empty CSV data (all zeros) const csvData = new Array(MAP_WIDTH * MAP_HEIGHT).fill(0).join(','); const tmxContent = ` ${csvData} ${csvData} ${csvData} `; fs.writeFileSync(path.join(TILED_DIR, TMX_FILENAME), tmxContent); console.log(`✅ Created map: ${TMX_FILENAME} (${MAP_WIDTH}x${MAP_HEIGHT}) linked to ${TSX_FILENAME}.`);