59 lines
2.9 KiB
JavaScript
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!');
|
|
})();
|