/** * Generate temporary placeholder images for all item types * Run this script with: node generate_assets.js */ const fs = require('fs'); const path = require('path'); // Create directories const directories = [ 'assets/images/ships', 'assets/images/weapons', 'assets/images/armors', 'assets/images/items/materials', 'assets/images/items/consumables', 'assets/images/items/cosmetics', 'assets/images/ui/icons' ]; directories.forEach(dir => { const fullPath = path.join(__dirname, dir); if (!fs.existsSync(fullPath)) { fs.mkdirSync(fullPath, { recursive: true }); console.log(`Created directory: ${dir}`); } }); // Generate simple SVG placeholder function generateSVG(width, height, color, text, filename) { const svg = ` ${text} `; return svg; } // Ships - Blue theme const ships = [ 'starter_cruiser_common', 'starter_cruiser_uncommon', 'starter_cruiser_rare', 'advanced_fighter_common', 'advanced_fighter_uncommon', 'advanced_fighter_rare', 'heavy_battleship_common', 'heavy_battleship_uncommon', 'heavy_battleship_rare', 'stealth_ship_common', 'stealth_ship_uncommon', 'stealth_ship_rare' ]; // Weapons - Red theme const weapons = [ 'laser_cannon_common', 'laser_cannon_uncommon', 'laser_cannon_rare', 'plasma_rifle_common', 'plasma_rifle_uncommon', 'plasma_rifle_rare', 'missile_launcher_common', 'missile_launcher_uncommon', 'missile_launcher_rare', 'railgun_common', 'railgun_uncommon', 'railgun_rare' ]; // Armors - Green theme const armors = [ 'light_armor_common', 'light_armor_uncommon', 'light_armor_rare', 'medium_armor_common', 'medium_armor_uncommon', 'medium_armor_rare', 'heavy_armor_common', 'heavy_armor_uncommon', 'heavy_armor_rare', 'energy_shield_common', 'energy_shield_uncommon', 'energy_shield_rare' ]; // Materials - Gray theme const materials = [ 'metal_scraps', 'energy_crystal', 'plastic_parts', 'electronic_components', 'rare_earth_metal', 'quantum_core', 'nanomaterials', 'dark_matter_fragment', 'solar_panel', 'cooling_system', 'power_cell', 'hull_plating' ]; // Consumables - Purple theme const consumables = [ 'health_pack', 'energy_boost', 'shield_recharge', 'speed_boost', 'repair_kit', 'ammo_pack', 'stealth_device', 'scanner_boost', 'experience_boost', 'credit_multiplier', 'lucky_charm', 'emergency_beacon' ]; // Cosmetics - Gold theme const cosmetics = [ 'cool_paint_job', 'neon_lights', 'custom_decal', 'golden_trim', 'carbon_fiber', 'chrome_finish', 'matte_black', 'camo_pattern', 'flame_design', 'electric_aura', 'ice_effect', 'rainbow_sparkle' ]; // Generate all images console.log('Generating ship images...'); ships.forEach(shipId => { const rarity = shipId.split('_').pop(); const color = rarity === 'common' ? '#3498db' : rarity === 'uncommon' ? '#2ecc71' : '#f39c12'; const svg = generateSVG(80, 80, color, shipId.replace(/_/g, ' ').toUpperCase(), shipId); fs.writeFileSync(path.join(__dirname, `assets/images/ships/${shipId}.png`), svg); console.log(`Created: ${shipId}.png`); }); console.log('Generating weapon images...'); weapons.forEach(weaponId => { const rarity = weaponId.split('_').pop(); const color = rarity === 'common' ? '#e74c3c' : rarity === 'uncommon' ? '#c0392b' : '#8e44ad'; const svg = generateSVG(64, 64, color, weaponId.replace(/_/g, ' ').toUpperCase(), weaponId); fs.writeFileSync(path.join(__dirname, `assets/images/weapons/${weaponId}.png`), svg); console.log(`Created: ${weaponId}.png`); }); console.log('Generating armor images...'); armors.forEach(armorId => { const rarity = armorId.split('_').pop(); const color = rarity === 'common' ? '#27ae60' : rarity === 'uncommon' ? '#16a085' : '#2c3e50'; const svg = generateSVG(64, 64, color, armorId.replace(/_/g, ' ').toUpperCase(), armorId); fs.writeFileSync(path.join(__dirname, `assets/images/armors/${armorId}.png`), svg); console.log(`Created: ${armorId}.png`); }); console.log('Generating material images...'); materials.forEach(materialId => { const svg = generateSVG(48, 48, '#7f8c8d', materialId.replace(/_/g, ' ').toUpperCase(), materialId); fs.writeFileSync(path.join(__dirname, `assets/images/items/materials/${materialId}.png`), svg); console.log(`Created: ${materialId}.png`); }); console.log('Generating consumable images...'); consumables.forEach(consumableId => { const svg = generateSVG(48, 48, '#9b59b6', consumableId.replace(/_/g, ' ').toUpperCase(), consumableId); fs.writeFileSync(path.join(__dirname, `assets/images/items/consumables/${consumableId}.png`), svg); console.log(`Created: ${consumableId}.png`); }); console.log('Generating cosmetic images...'); cosmetics.forEach(cosmeticId => { const svg = generateSVG(64, 64, '#f1c40f', cosmeticId.replace(/_/g, ' ').toUpperCase(), cosmeticId); fs.writeFileSync(path.join(__dirname, `assets/images/items/cosmetics/${cosmeticId}.png`), svg); console.log(`Created: ${cosmeticId}.png`); }); // Generate UI placeholder console.log('Generating UI placeholder...'); const placeholderSvg = generateSVG(80, 80, '#95a5a6', 'PLACEHOLDER', 'placeholder'); fs.writeFileSync(path.join(__dirname, 'assets/images/ui/placeholder.png'), placeholderSvg); // Generate some UI icons const icons = ['coin', 'gem', 'heart', 'shield', 'star', 'lock', 'unlock', 'settings']; icons.forEach(iconId => { const svg = generateSVG(32, 32, '#34495e', iconId.toUpperCase(), iconId); fs.writeFileSync(path.join(__dirname, `assets/images/ui/icons/${iconId}.png`), svg); console.log(`Created icon: ${iconId}.png`); }); console.log('\nšŸŽ‰ All placeholder images generated successfully!'); console.log('šŸ“ Total images created:'); console.log(` Ships: ${ships.length}`); console.log(` Weapons: ${weapons.length}`); console.log(` Armors: ${armors.length}`); console.log(` Materials: ${materials.length}`); console.log(` Consumables: ${consumables.length}`); console.log(` Cosmetics: ${cosmetics.length}`); console.log(` UI Icons: ${icons.length + 1} (including placeholder)`); console.log('\nšŸš€ Your shop should now display all items with placeholder images!');