diff --git a/src/converters/furniture/FurnitureConverter.ts b/src/converters/furniture/FurnitureConverter.ts index de4e1aa..ad931ff 100644 --- a/src/converters/furniture/FurnitureConverter.ts +++ b/src/converters/furniture/FurnitureConverter.ts @@ -36,7 +36,7 @@ export class FurnitureConverter extends SWFConverter { await this._furniDownloader.download(directory, async (habboAssetSwf: HabboAssetSWF) => { - spinner.text = 'Parsing Furniture: ' + habboAssetSwf.getDocumentClass(); + spinner.text = (`Parsing Furniture: ${ habboAssetSwf.getDocumentClass() } (${ this._furniDownloader.totalFinished } / ${ this._furniDownloader.totalItems })`); spinner.render(); diff --git a/src/converters/furniture/FurnitureDownloader.ts b/src/converters/furniture/FurnitureDownloader.ts index 6a339b5..b52470c 100644 --- a/src/converters/furniture/FurnitureDownloader.ts +++ b/src/converters/furniture/FurnitureDownloader.ts @@ -10,6 +10,9 @@ import { FurnitureDataConverter } from '../furnituredata/FurnitureDataConverter' @singleton() export class FurnitureDownloader { + private _totalItems: number = 0; + private _totalFinished: number = 0; + constructor( private readonly _furnitureDataConverter: FurnitureDataConverter, private readonly _configuration: Configuration, @@ -25,6 +28,7 @@ export class FurnitureDownloader if(!furniData) throw new Error('invalid_furnidata'); const classNames: string[] = []; + const revisions: number[] = []; if(furniData.roomitemtypes !== undefined) { @@ -42,17 +46,7 @@ export class FurnitureDownloader if(classNames.indexOf(className) >= 0) continue; classNames.push(className); - - try - { - await this.extractFurniture(revision, className, callback); - } - - catch (error) - { - console.log(); - console.error(`Error parsing ${ className }: ` + error.message); - } + revisions.push(revision); } } } @@ -73,22 +67,35 @@ export class FurnitureDownloader if(classNames.indexOf(className) >= 0) continue; classNames.push(className); - - try - { - await this.extractFurniture(revision, className, callback); - } - - catch (error) - { - console.log(); - console.error(`Error parsing ${ className }: ` + error.message); - - this._logger.logError(`Error parsing ${ className }: ` + error.message); - } + revisions.push(revision); } } } + + this._totalItems = classNames.length; + + this._totalFinished = 0; + + while(this._totalFinished < this._totalItems) + { + const className = classNames[this._totalFinished]; + const revision = revisions[this._totalFinished]; + + try + { + await this.extractFurniture(revision, className, callback); + } + + catch (error) + { + console.log(); + console.error(`Error parsing ${ className }: ` + error.message); + + this._logger.logError(`Error parsing ${ className }: ` + error.message); + } + + this._totalFinished++; + } } public async parseFurniData(): Promise @@ -123,4 +130,14 @@ export class FurnitureDownloader await callback(newHabboAssetSWF, className); } + + public get totalItems(): number + { + return this._totalItems; + } + + public get totalFinished(): number + { + return this._totalFinished; + } }