Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var STEAM_APPS = 'F:/SteamLibrary/steamapps/';
- var fs = require('fs');
- //var derp = fs.readFileSync('gps.txt').toString();
- var parser = require('fast-xml-parser');
- var he = require('he');
- var options = {
- attributeNamePrefix : "@_",
- attrNodeName: "attr", //default is 'false'
- textNodeName : "#text",
- ignoreAttributes : true,
- ignoreNameSpace : false,
- allowBooleanAttributes : false,
- parseNodeValue : true,
- parseAttributeValue : false,
- trimValues: true,
- cdataTagName: "__cdata", //default is 'false'
- cdataPositionChar: "\\c",
- parseTrueNumberOnly: false,
- arrayMode: false, //"strict"
- attrValueProcessor: (val, attrName) => he.decode(val, {isAttributeValue: true}),//default is a=>a
- tagValueProcessor : (val, tagName) => he.decode(val), //default is a=>a
- stopNodes: ["parse-me-as-string"]
- };
- var PCUTable = {};
- var dbg = true;
- function scanFile(file)
- {
- if(file.indexOf('CubeBlocks') != -1 || file.indexOf('ExpansePatch_') != -1)
- {
- var xmldata = fs.readFileSync(file).toString();
- try
- {
- var json = parser.parse(xmldata,options, true);
- console.log('parsed '+file);
- /*if(dbg && file.indexOf('ExpansePatch_AryxLynxonEpsteinDrives_LargeCubeBlocks.sbc') != -1)
- {
- //var x = xml2json.toJson(xmldata);
- var result = convert.xml2js(xmldata, {compact:true,alwaysArray:true});
- dbg=false;
- fs.writeFileSync('test.json', ''+JSON.stringify(result, null, '\t'));
- }*/
- try
- {
- var defs = json.Definitions.CubeBlocks.Definition;
- for(var i =0; i < defs.length; i++)
- {
- var def = defs[i];
- if('Id' in def && 'PCU' in def)
- {
- var e = def.Id.TypeId+'/'+def.Id.SubtypeId;
- if(e in PCUTable)
- {
- if(PCUTable[e] < def.PCU)PCUTable[e] = def.PCU;
- }else PCUTable[e] = def.PCU;
- }
- }
- }catch(e){}
- }catch(error)
- {
- console.log(error.message);
- }
- }
- }
- function scanFolder(directory)
- {
- fs.readdirSync(directory).forEach(function(iter)
- {
- var e = directory+'/'+iter;
- var s = fs.statSync(e);
- if(s.isDirectory())scanFolder(e);
- else if(s.isFile())scanFile(e);
- });
- }
- scanFolder(STEAM_APPS+'common/SpaceEngineers/Content/Data/CubeBlocks');
- scanFolder(STEAM_APPS+'workshop/content/244850');
- var dict = 'Dictionary<string, int> PCUTable = new Dictionary<string, int>();\n\n';
- for(var key in PCUTable)
- {
- var pcu = PCUTable[key];
- if(pcu > 1)
- {
- console.log(key+' = '+pcu);
- dict += 'PCUTable["'+key+'"]='+pcu+';\n';
- }
- }
- fs.writeFileSync('pcutable.cs', dict);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement