From e384d8e6996305f3a2aa514db1028810057a1101 Mon Sep 17 00:00:00 2001 From: INeedBots Date: Tue, 15 Dec 2020 03:08:40 -0600 Subject: [PATCH] init node tools --- .gitignore | 1 + package-lock.json | 13 ++++++++++++ package.json | 15 ++++++++++++++ src/gscwptocsv.js | 50 +++++++++++++++++++++++++++++++++++++++++++++++ src/test.js | 44 +++++++++++++++++++++++++++++++++++++++++ 5 files changed, 123 insertions(+) create mode 100644 .gitignore create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 src/gscwptocsv.js create mode 100644 src/test.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..b26ad00 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,13 @@ +{ + "name": "node_weaponfile_tools", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..d99c0a9 --- /dev/null +++ b/package.json @@ -0,0 +1,15 @@ +{ + "name": "node_weaponfile_tools", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "gscwps": "node src/gscwptocsv.js" + }, + "keywords": [], + "author": "", + "license": "ISC", + "dependencies": { + "minimist": "^1.2.5" + } +} diff --git a/src/gscwptocsv.js b/src/gscwptocsv.js new file mode 100644 index 0000000..6662ec7 --- /dev/null +++ b/src/gscwptocsv.js @@ -0,0 +1,50 @@ +const {readFileSync, writeFileSync, appendFileSync} = require('fs') +const argv = require('minimist')(process.argv.slice(2)) + + +argv._.forEach(arg => { + level = {waypoints:[]} + function spawnstruct() { + return { + children: [] + } + } + + let gscWpStr = readFileSync(arg, 'utf-8') + + + gscWpStr = gscWpStr.split('(').join('[') + gscWpStr = gscWpStr.split(')').join(']') + gscWpStr = gscWpStr.split('[]').join('()') + + gscWpStr = gscWpStr.substr(gscWpStr.indexOf('level.waypoints[0]')) + gscWpStr = gscWpStr.substr(0, gscWpStr.indexOf('level.waypointCount')) + + eval(gscWpStr) + + writeFileSync(arg + ".csv", level.waypoints.length+"\n") + + level.waypoints.forEach(wp => { + let str = `${wp.origin[0]} ${wp.origin[1]} ${wp.origin[2]},` + + wp.children.forEach((c, i) => { + str += c + + if (i < wp.children.length - 1) + str += ' ' + }) + str += `,${wp.type},` + + if (wp.angles !== undefined) + str += `${wp.angles[0]} ${wp.angles[1]} ${wp.angles[2]},` + else + str += ',' + + if (wp.jav_point !== undefined) + str += `${wp.angles[0]} ${wp.angles[1]} ${wp.angles[2]},` + else + str += ',' + + appendFileSync(arg + ".csv", str + '\n') + }) +}) diff --git a/src/test.js b/src/test.js new file mode 100644 index 0000000..d87be00 --- /dev/null +++ b/src/test.js @@ -0,0 +1,44 @@ +const {readFileSync} = require('fs') + +const stringifyWeaponFile = (wfObj = {}) => { + let answer = 'WEAPONFILE' + + for (let key in wfObj) { + value = wfObj[key] + + answer += `\\${key}\\${value}` + } + + return answer +} + +const parseWeaponFile = (wfStr = '') => { + const answer = {} + + splitWFStr = wfStr.split('\\') + + // [0] should be WEAPONFILE + + for (let i = 1; i < splitWFStr.length; i++) { + // odds should be keys, evens should be values for those keys. + + const key = splitWFStr[i] + const value = splitWFStr[++i] + + answer[key] = value + } + + return answer +} + +const argv = require('minimist')(process.argv.slice(2)) + +const weaponFileStr1 = readFileSync(argv._[0], 'utf-8') +const weaponFileStr2 = readFileSync(argv._[1], 'utf-8') + +const wf1 = parseWeaponFile(weaponFileStr1) +const wf2 = parseWeaponFile(weaponFileStr2) + +const wfmerged = Object.assign(wf1, wf2) + +console.log(stringifyWeaponFile(wfmerged))