mirror of
				https://github.com/ineedbots/bw_node_tools.git
				synced 2025-10-31 00:16:57 +00:00 
			
		
		
		
	init node tools
This commit is contained in:
		
							
								
								
									
										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)) | ||||
		Reference in New Issue
	
	Block a user