mirror of
https://github.com/ineedbots/bw_node_tools.git
synced 2025-04-19 10:42:52 +00:00
init node tools
This commit is contained in:
commit
e384d8e699
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
||||
node_modules/
|
13
package-lock.json
generated
Normal file
13
package-lock.json
generated
Normal 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
15
package.json
Normal 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
50
src/gscwptocsv.js
Normal 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
44
src/test.js
Normal 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))
|
Loading…
x
Reference in New Issue
Block a user