Files
novafarma/tools/create_spritesheet.js
2025-12-11 19:36:08 +01:00

59 lines
2.9 KiB
JavaScript

// Spritesheet Creator - combines 6 individual frames into horizontal spritesheet
const { createCanvas, loadImage } = require('canvas');
const fs = require('fs');
const path = require('path');
async function createSpritesheet(frames, outputPath) {
const frameWidth = 64;
const frameHeight = 64;
const totalWidth = frameWidth * frames.length;
const canvas = createCanvas(totalWidth, frameHeight);
const ctx = canvas.getContext('2d');
console.log(`Creating spritesheet: ${totalWidth}x${frameHeight}`);
for (let i = 0; i < frames.length; i++) {
try {
const img = await loadImage(frames[i]);
ctx.drawImage(img, i * frameWidth, 0, frameWidth, frameHeight);
console.log(` Frame ${i + 1}: ${path.basename(frames[i])}`);
} catch (err) {
console.error(`Error loading frame ${i + 1}:`, err.message);
}
}
const buffer = canvas.toBuffer('image/png');
fs.writeFileSync(outputPath, buffer);
console.log(`✅ Spritesheet saved: ${outputPath}`);
}
// Define frame paths
const playerFrames = [
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_1_idle_1765466652332.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_2_left_1765466686157.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_3_mid_left_1765466722379.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_4_right_1765466767612.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_5_mid_right_1765466812029.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/player_frame_6_idle_return_1765466859078.png'
];
const zombieFrames = [
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_1_idle_1765466924235.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_2_left_1765466975297.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_3_mid_left_1765467026661.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_4_right_1765467064996.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_5_mid_right_1765467114381.png',
'C:/Users/hipod/.gemini/antigravity/brain/c3cb08b5-19b4-4254-a001-eeab1394eb46/zombie_frame_6_idle_return_1765467152088.png'
];
// Run
(async () => {
console.log('🎬 Creating spritesheets...\n');
await createSpritesheet(playerFrames, 'c:/novafarma/assets/player_dreadlocks.png');
await createSpritesheet(zombieFrames, 'c:/novafarma/assets/zombie_worker.png');
console.log('\n✅ ALL DONE!');
})();