From da9d2c14dc68fb39691bfb1f4e76d0808de999c0 Mon Sep 17 00:00:00 2001 From: Danielv123 Date: Tue, 27 Sep 2016 11:24:39 +0200 Subject: [PATCH] Solved #14 and #10, preparing for prerelease --- client.js | 64 +++++++++++++++++++++++++------------------------------ master.js | 3 ++- 2 files changed, 31 insertions(+), 36 deletions(-) diff --git a/client.js b/client.js index 251a7e2a..ab6cf8e3 100644 --- a/client.js +++ b/client.js @@ -12,6 +12,10 @@ var client = new Rcon({ timeout: 0 }).connect(); +if (!fs.existsSync(config.factorioDirectory + "/script-output/")){ + fs.mkdirSync(config.factorioDirectory + "/script-output/"); +} +fs.writeFileSync(config.factorioDirectory + "/script-output/output.txt", "") fs.writeFileSync(config.factorioDirectory + "/script-output/orders.txt", "") client.on('authenticated', function() { @@ -48,60 +52,50 @@ fs.watch(config.factorioDirectory + "/script-output/output.txt", "utf8", functio } } }) + setInterval(function() { // get array of lines in file items = fs.readFileSync(config.factorioDirectory + "/script-output/orders.txt", "utf8").split("\n"); - // if you found anything, reset the file + // if we actually got anything from the file, proceed and reset file if(items[0]) { - fs.writeFileSync(config.factorioDirectory + "/script-output/orders.txt", "") - for(i = 0;i < items.length; i++) { + fs.writeFileSync(config.factorioDirectory + "/script-output/orders.txt", ""); + // prepare a package of all our requested items in a more tranfer friendly format + var preparedPackage = {}; + for(i = 2;i < items.length; i++) { (function(i){ if(items[i]) { items[i] = items[i].split(" "); items[i][0] = items[i][0].replace("\u0000", ""); items[i][0] = items[i][0].replace(",", ""); - // send our entity and count to the master for him to keep track of - needle.post(config.masterIP + ":" + config.masterPort + '/remove', {name:items[i][0], count:items[i][1]}, function(err, response, body){ - if(response && response.body && typeof response.body == "object") { - // buffer confirmed orders - confirmedOrders[confirmedOrders.length] = {[response.body.name]: response.body.count} + if(preparedPackage[items[i][0]]){ + if(typeof Number(preparedPackage[items[i][0]].count) == "number" && typeof Number(items[i][1]) == "number") { + preparedPackage[items[i][0]] = {"name":items[i][0], "count":Number(preparedPackage[items[i][0]].count) + Number(items[i][1])}; + } else if (typeof Number(items[i][1]) == "number") { + preparedPackage[items[i][0]] = {"name":items[i][0], "count":Number(items[i][1])}; } - /*if(response && response.body === "successier"){ - console.log(response.body + " : importing: " + JSON.stringify({[items[i][0]]: items[i][1]})); - // buffer confirmed orders - confirmedOrders[confirmedOrders.length] = {[items[i][0]]: items[i][1]} - //client.exec("/c remote.call('clusterio', 'importMany', '[" + JSON.stringify(jsonobject) + "]')") - } else { - console.log("ERROR: "+JSON.stringify({[items[i][0]]: items[i][1]})); - }*/ - }); + } else if (typeof Number(items[i][1]) == "number") { + preparedPackage[items[i][0]] = {"name":items[i][0], "count":Number(items[i][1])}; + } } })(i); } + // request our items, one item at a time + for(i = 0;i