From 7a7d91328210199235d5ec2733cfe1a939636434 Mon Sep 17 00:00:00 2001 From: SpreedBLood Date: Thu, 4 Feb 2021 02:49:10 +0100 Subject: [PATCH] Further fixes --- config.ini | 18 -------------- package.json | 3 ++- src/config.json | 20 ++++++++++++++++ src/config/Configuration.ts | 26 ++++++++++----------- src/converters/furniture/FurniJsonMapper.ts | 6 +++-- src/converters/util/SpriteSheetConverter.ts | 4 ++-- src/downloaders/FigureDownloader.ts | 4 +++- src/downloaders/FurnitureDownloader.ts | 11 ++++++--- tsconfig.json | 6 ++++- 9 files changed, 56 insertions(+), 42 deletions(-) delete mode 100644 config.ini create mode 100644 src/config.json diff --git a/config.ini b/config.ini deleted file mode 100644 index 36c935e..0000000 --- a/config.ini +++ /dev/null @@ -1,18 +0,0 @@ -output.folder.furniture=/home/user/WebstormProjects/sites/assets.nitro.se/game/dcr/furniture-test/ -output.folder.figure=/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/figure-test/ -output.folder.effect=/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/effect-test/ -output.folder.pet=/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/pet-test/ -furnidata.url=http://assets.nitro.se/game/gamedata/furnidata-entry.xml -figuremap.url=http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/figuremap.xml -effectmap.url=http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/effectmap.xml -external_vars.url=http://assets.nitro.se/game/gamedata/external_variables.txt -dynamic.download.url.furniture=http://assets.nitro.se/game/dcr/endrit/hof_furni/%className%.swf -dynamic.download.url.figure=http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf -dynamic.download.url.effect=http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf -dynamic.download.url.pet=http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf -convert.furniture=0 -convert.figure=0 -convert.effect=1 -convert.pet=0 -figure.rotation.enabled=0 -figure.skip.non-existing.asset.images=0 \ No newline at end of file diff --git a/package.json b/package.json index 1767a6e..f00db86 100644 --- a/package.json +++ b/package.json @@ -21,5 +21,6 @@ "png-stream": "^1.0.5", "stream-to-array": "^2.3.0", "xml2js": "^0.4.23" - } + }, + "devDependencies": {} } diff --git a/src/config.json b/src/config.json new file mode 100644 index 0000000..b4a0061 --- /dev/null +++ b/src/config.json @@ -0,0 +1,20 @@ +{ + "output.folder.furniture": "/home/user/WebstormProjects/sites/assets.nitro.se/game/dcr/furniture-test/", + "output.folder.figure": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/figure-test/", + "output.folder.effect": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/effect-test/", + "output.folder.pet": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/pet-test/", + "furnidata.url": "http://assets.nitro.se/game/gamedata/furnidata-entry.xml", + "figuremap.url": "http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/figuremap.xml", + "effectmap.url": "http://assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/effectmap.xml", + "external_vars.url": "http://assets.nitro.se/game/gamedata/external_variables.txt", + "dynamic.download.url.furniture": "/home/user/WebstormProjects/sites/assets.nitro.se/game/dcr/endrit/hof_furni/%className%.swf", + "dynamic.download.url.figure": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf", + "dynamic.download.url.effect": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf", + "dynamic.download.url.pet": "/home/user/WebstormProjects/sites/assets.nitro.se/game/gordon/PRODUCTION-201701242205-837386173/%className%.swf", + "convert.furniture": "1", + "convert.figure": "0", + "convert.effect": "0", + "convert.pet": "0", + "figure.rotation.enabled": "0", + "figure.skip.non-existing.asset.images": "0" +} \ No newline at end of file diff --git a/src/config/Configuration.ts b/src/config/Configuration.ts index 879f855..29c45b3 100644 --- a/src/config/Configuration.ts +++ b/src/config/Configuration.ts @@ -1,6 +1,8 @@ const fs = require('fs/promises'); const fetch = require('node-fetch'); +const config = require('../config.json'); + export default class Configuration { private readonly _config: Map; @@ -10,19 +12,8 @@ export default class Configuration { } async init() { - const content = await fs.readFile("/home/user/git/nitro-asset-converter-node/config.ini"); - - this.parseContent(content.toString("utf-8")); - } - - private parseContent(content: string) { - const config: string[] = content.split("\n"); - for (const configEntry of config) { - const configEntrySplit = configEntry.split("="); - const configKey = configEntrySplit[0]; - const configValue = configEntrySplit[1]; - - this._config.set(configKey, configValue); + for (const key of Object.keys(config)) { + this._config.set(key, config[key]); } } @@ -44,6 +35,13 @@ export default class Configuration { const fetchData = await fetch(url); const textData = await fetchData.text(); - this.parseContent(textData); + const config: string[] = textData.split("\n"); + for (const configEntry of config) { + const configEntrySplit = configEntry.split("="); + const configKey = configEntrySplit[0]; + const configValue = configEntrySplit[1]; + + this._config.set(configKey, configValue); + } } } \ No newline at end of file diff --git a/src/converters/furniture/FurniJsonMapper.ts b/src/converters/furniture/FurniJsonMapper.ts index e7d0400..e1f4dbd 100644 --- a/src/converters/furniture/FurniJsonMapper.ts +++ b/src/converters/furniture/FurniJsonMapper.ts @@ -69,8 +69,10 @@ export default class FurniJsonMapper { furniAsset.source = SpriteSheetConverter.imageSource.get(asset.name) as string; } - furniAsset.x = parseInt(asset.x.toString()); - furniAsset.y = parseInt(asset.y.toString()); + if (asset.x !== undefined) + furniAsset.x = parseInt(asset.x.toString()); + if (asset.y !== undefined) + furniAsset.y = parseInt(asset.y.toString()); furniAsset.flipH = asset.flipH as any; assets[asset.name] = furniAsset; } diff --git a/src/converters/util/SpriteSheetConverter.ts b/src/converters/util/SpriteSheetConverter.ts index 51fda45..b858772 100644 --- a/src/converters/util/SpriteSheetConverter.ts +++ b/src/converters/util/SpriteSheetConverter.ts @@ -67,8 +67,8 @@ export default class SpriteSheetConverter { async packImages(documentClass: string, outputFolder: string, images: Array<{ path: string, contents: Buffer }>): Promise { let options = { textureName: documentClass, - width: 1024, - height: 1024, + width: 3072, + height: 2048, fixedSize: false, allowRotation: true, detectIdentical: true, diff --git a/src/downloaders/FigureDownloader.ts b/src/downloaders/FigureDownloader.ts index 7daf9f9..f09f851 100644 --- a/src/downloaders/FigureDownloader.ts +++ b/src/downloaders/FigureDownloader.ts @@ -26,7 +26,7 @@ export default class FigureDownloader { for (const lib of map.lib) { const info = lib['$']; const className: string = info.id.split("\\*")[0]; - if (className === "hh_human_fx") { + if (className === "hh_human_fx" || className === "hh_pets") { continue; } @@ -39,6 +39,8 @@ export default class FigureDownloader { if (className !== "jacket_U_snowwar4_team1" && className !== "jacket_U_snowwar4_team2") { //TODO: Figure out why snowstorm assets aren't converting... + if (className !== "hh_human_hats") continue; + const url = this._config.getValue("dynamic.download.url.figure").replace("%className%", className); let buffer: Buffer | null = null; diff --git a/src/downloaders/FurnitureDownloader.ts b/src/downloaders/FurnitureDownloader.ts index 2e90014..3b5c02c 100644 --- a/src/downloaders/FurnitureDownloader.ts +++ b/src/downloaders/FurnitureDownloader.ts @@ -104,9 +104,14 @@ export default class FurnitureDownloader { async parseFurniData() { const furniDataFetch = this._config.getValue("furnidata.url"); - const furniFetch = await fetch(furniDataFetch); - const furniData = await furniFetch.text(); + if (furniDataFetch.includes("http")) { + const furniFetch = await fetch(furniDataFetch); + const furniData = await furniFetch.text(); - return await parser.parseStringPromise(furniData); + return await parser.parseStringPromise(furniData); + } else { + const content = await readFile(furniDataFetch); + return await parser.parseStringPromise(content); + } } } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 310853b..81362a9 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,5 +10,9 @@ "noImplicitAny": true, "esModuleInterop": true, "resolveJsonModule": true - } + }, + "include": [ + "src/config.json", + "src/**/*.ts" + ] } \ No newline at end of file