Files
factorio-clusterio/sharedPlugins/UPSdisplay/index.js
T
2017-06-07 07:26:14 +02:00

42 lines
1.4 KiB
JavaScript

const needle = require("needle");
console.log("/silent-command game.print('UPSdisplay enabled')");
setInterval(function(){
console.log("/silent-command game.write_file('UPSdisplay.txt', game.tick, true, 0)");
},1000);
var config = {};
process.stdin.setEncoding('utf8');
let historicalTicks = [];
process.stdin.on('readable', () => {
var chunk = process.stdin.read();
if (chunk !== null && !isNaN(chunk) && !chunk.includes("{")){
// console.log("Tick: " + chunk);
historicalTicks[historicalTicks.length] = {tick:Number(chunk), timestamp:Date.now()};
if(historicalTicks.length > 30){
historicalTicks.shift(); // delete last element in array (position 0);
}
} else {
config = JSON.parse(chunk);
}
});
process.stdin.on('end', () => {
process.stdout.write('end');
});
// Post average UPS
setInterval(function(){
if(historicalTicks && historicalTicks[0]){
let timePeriod = historicalTicks[historicalTicks.length-1].timestamp - historicalTicks[0].timestamp;
let ticksInPeriod = historicalTicks[historicalTicks.length-1].tick - historicalTicks[0].tick;
let UPS = Math.round(ticksInPeriod / (timePeriod/1000));
// console.log("UPS: " + UPS);
try{
needle.post(config.masterIP+':'+config.masterPort+'/api/editSlaveMeta', {slaveID: config.unique, password: config.clientPassword, meta: {UPS:UPS}}, function(err, resp) {
// success?
});
} catch (err){
console.log(err);
}
}
}, 10000);