nitro-converter/src/Main.ts

123 lines
5.1 KiB
TypeScript
Raw Normal View History

2021-01-28 09:12:04 +01:00
import Configuration from "./config/Configuration";
import FigureDownloader from "./downloaders/FigureDownloader";
import HabboAssetSWF from "./swf/HabboAssetSWF";
import SpriteSheetConverter from "./converters/util/SpriteSheetConverter";
import FigureConverter from "./converters/figure/FigureConverter";
import File from "./utils/File";
import FurnitureDownloader from "./downloaders/FurnitureDownloader";
import FurnitureConverter from "./converters/furniture/FurnitureConverter";
2021-02-02 02:13:17 +01:00
import EffectConverter from "./converters/effect/EffectConverter";
import EffectDownloader from "./downloaders/EffectDownloader";
2021-02-02 04:43:38 +01:00
import PetDownloader from "./downloaders/PetDownloader";
import PetConverter from "./converters/pet/PetConverter";
2021-01-28 09:12:04 +01:00
(async () => {
const config = new Configuration();
await config.init();
const outputFolderFigure = new File(config.getValue("output.folder.figure"));
if (!outputFolderFigure.isDirectory()) {
outputFolderFigure.mkdirs();
}
const outputFolderFurniture = new File(config.getValue("output.folder.furniture"));
if (!outputFolderFurniture.isDirectory()) {
outputFolderFurniture.mkdirs();
}
2021-02-02 02:13:17 +01:00
const outputFolderEffect = new File(config.getValue("output.folder.effect"));
if (!outputFolderEffect.isDirectory()) {
outputFolderEffect.mkdirs();
}
2021-02-02 04:43:38 +01:00
const outputFolderPet = new File(config.getValue("output.folder.pet"));
if (!outputFolderPet.isDirectory()) {
outputFolderPet.mkdirs();
}
2021-01-28 09:12:04 +01:00
const spriteSheetConverter = new SpriteSheetConverter();
const figureConverter = new FigureConverter(config);
2021-02-02 02:13:17 +01:00
const furnitureConverter = new FurnitureConverter(config);
const effectConverter = new EffectConverter(config);
2021-02-02 04:43:38 +01:00
const petConverter = new PetConverter();
2021-01-28 09:12:04 +01:00
if (config.getBoolean("convert.figure")) {
const figureDownloader = new FigureDownloader(config);
await figureDownloader.download(async function (habboAssetSwf: HabboAssetSWF) {
console.log("Attempt parsing figure: " + habboAssetSwf.getDocumentClass());
try {
const spriteSheetType = await spriteSheetConverter.generateSpriteSheet(habboAssetSwf, outputFolderFigure.path, "figure");
if (spriteSheetType !== null)
await figureConverter.fromHabboAsset(habboAssetSwf, outputFolderFigure.path, "figure", spriteSheetType);
} catch (e) {
console.log("Figure error: " + habboAssetSwf.getDocumentClass());
2021-02-02 02:13:17 +01:00
console.log(e);
2021-01-28 09:12:04 +01:00
}
});
}
if (config.getBoolean("convert.furniture")) {
2021-02-02 02:13:17 +01:00
let count = 0;
2021-01-28 09:12:04 +01:00
const furnitureDownloader = new FurnitureDownloader(config);
await furnitureDownloader.download(async function (habboAssetSwf: HabboAssetSWF, className: string) {
2021-01-31 03:14:17 +01:00
console.log("Attempt parsing furniture: " + habboAssetSwf.getDocumentClass());
2021-01-28 09:12:04 +01:00
try {
2021-02-02 02:13:17 +01:00
const spriteSheetType = await spriteSheetConverter.generateSpriteSheet(habboAssetSwf, outputFolderFurniture.path, "furniture");
2021-01-28 09:12:04 +01:00
if (spriteSheetType !== null) {
2021-02-02 02:13:17 +01:00
await furnitureConverter.fromHabboAsset(habboAssetSwf, outputFolderFurniture.path, "furniture", spriteSheetType);
2021-01-28 09:12:04 +01:00
}
} catch (e) {
console.log("Furniture error: " + habboAssetSwf.getDocumentClass());
console.log(e);
}
});
2021-01-31 03:14:17 +01:00
console.log(`Parsed ${++count} furnitures`)
2021-01-28 09:12:04 +01:00
}
2021-02-02 02:13:17 +01:00
if (config.getBoolean("convert.effect")) {
const effectDownloader = new EffectDownloader(config);
await effectDownloader.download(async function (habboAssetSwf: HabboAssetSWF) {
2021-02-02 04:43:38 +01:00
console.log("Attempt parsing effect: " + habboAssetSwf.getDocumentClass());
2021-02-02 02:13:17 +01:00
try {
const spriteSheetType = await spriteSheetConverter.generateSpriteSheet(habboAssetSwf, outputFolderFurniture.path, "effect");
if (spriteSheetType !== null) {
await effectConverter.fromHabboAsset(habboAssetSwf, outputFolderEffect.path, "effect", spriteSheetType);
}
} catch (e) {
console.log(e);
2021-02-02 04:43:38 +01:00
console.log("Effect error: " + habboAssetSwf.getDocumentClass());
}
});
}
if (config.getBoolean("convert.pet")) {
const petDownloader = new PetDownloader(config);
await petDownloader.download(async function (habboAssetSwf: HabboAssetSWF) {
console.log("Attempt parsing pet: " + habboAssetSwf.getDocumentClass());
try {
const spriteSheetType = await spriteSheetConverter.generateSpriteSheet(habboAssetSwf, outputFolderPet.path, "pet");
if (spriteSheetType !== null) {
await petConverter.fromHabboAsset(habboAssetSwf, outputFolderPet.path, "pet", spriteSheetType);
}
} catch (e) {
console.log(e);
2021-02-03 04:02:14 +01:00
console.log("Pet error: " + habboAssetSwf.getDocumentClass());
2021-02-02 02:13:17 +01:00
}
});
}
2021-01-28 09:12:04 +01:00
console.log('finished!');
2021-01-31 03:14:17 +01:00
2021-02-03 04:02:14 +01:00
/*outputFolderEffect.rmdir({
2021-01-31 03:14:17 +01:00
recursive: true,
force: true
});*/
2021-01-28 09:12:04 +01:00
})()