init node tools

This commit is contained in:
INeedBots 2020-12-15 03:08:40 -06:00
commit e384d8e699
5 changed files with 123 additions and 0 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules/

13
package-lock.json generated Normal file
View File

@ -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=="
}
}
}

15
package.json Normal file
View File

@ -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"
}
}

50
src/gscwptocsv.js Normal file
View File

@ -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')
})
})

44
src/test.js Normal file
View File

@ -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))