Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Программирование на js

) Ученик (108), на голосовании 2 месяца назад
Оно не работает, а мне надо чтобы работало
const fs = require('fs');
const path = require('path');
const { PNG } = require('pngjs');

// Define the root directory of the game
const rootDir = '/path/to/mindustry'; // Replace with the actual path to the Mindustry root directory

// List of valid image extensions
const imageExtensions = ['.png'];

// Array to store found textures
let textures = [];

// Function to search for textures recursively
function searchTextures(directory) {
const files = fs.readdirSync(directory);

files.forEach(file => {
const filePath = path.join(directory, file);
const stat = fs.statSync(filePath);

if (stat.isDirectory()) {
// Recursively search in subdirectories
searchTextures(filePath);
} else {
const ext = path.extname(file).toLowerCase();
if (imageExtensions.includes(ext)) {
textures.push(filePath);
}
}
});
}

// RLE Compression Function
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}

// Process and compress each texture
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
// Combine RGBA values into a single integer
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}
и ещё
function rleCompress(data) {
const compressed = [];
let count = 1;
for (let i = 1; i < data.length; i++) {
if (data[i] === data[i - 1]) {
count++;
} else {
compressed.push([data[i - 1], count]);
count = 1;
}
}
compressed.push([data[data.length - 1], count]);
return compressed;
}
function processTextures() {
textures.forEach(texturePath => {
fs.createReadStream(texturePath)
.pipe(new PNG())
.on('parsed', function () {
const rgbaArray = [];
for (let i = 0; i < this.data.length; i += 4) {
const rgba = (this.data[i] << 24) | (this.data[i + 1] << 16) | (this.data[i + 2] << 8) | this.data[i + 3];
rgbaArray.push(rgba);
}

const compressedData = rleCompress(rgbaArray);

const outputFilePath = texturePath.replace(rootDir, 'rle_textures').replace('.png', '.rle.json');
fs.mkdirSync(path.dirname(outputFilePath), { recursive: true });
fs.writeFileSync(outputFilePath, JSON.stringify(compressedData));
});
});
}

// Search and process all textures in the root and mods directories
searchTextures(rootDir);
searchTextures(path.join(rootDir, 'mods'));
processTextures();
Голосование за лучший ответ
Граф Таранов Гуру (2951) 3 месяца назад
..-..-..-..-..-..-...-..-..-..-..
Оракул (50099) 3 месяца назад
 он
сконвертирует
js в css
Петр Алексеевич Оракул (82071) 3 месяца назад
Эту простыню лучше чат-боту кидать.
Здесь это нечитаемо и слишком много кода, в чем твоя проблема, ты не описал
Похожие вопросы