Multithreaded createMap, improved isValidInstance reliablity

This commit is contained in:
Danielv123 committed 2018-03-30 14:39:39 +02:00
1 parent 507c0afa98
commit f697d2a74c
2 files changed
+94 -32

No files matched your search

+45 -22
View File
@@ -75,7 +75,7 @@ module.exports = class factorioServer {
"/instanceMods/",
];
mkdirp.sync(path);
folders.forEach(folder => fs.mkdirSync(path + folder));
folders.forEach(folder => mkdirp.sync(path + folder));
// create files
let files = [
@@ -116,30 +116,53 @@ module.exports = class factorioServer {
// console.log(err)
resolve(false);
} else {
// console.log(stat)
resolve(true);
// the instance folder exists, do some more checks
fs.readdir(path, (err, files) => {
if(files && Array.isArray(files)){
let foldersThatShouldBeThere = [
"script-output",
"saves",
"mods",
"instanceMods",
];
let instanceValidity = true;
foldersThatShouldBeThere.forEach(folder => {
if(!files.includes(folder)){
instanceValidity = false;
}
});
resolve(instanceValidity);
}
});
}
});
});
}
async createMap(name = "map.zip"){
if(!await this.isValidInstance()){
await createInstance();
}
this.onProgress("log", "Starting map creation");
console.log(this.factorioDirectory + '/bin/x64/factorio')
let code = child_process.spawnSync(
path.join(this.factorioDirectory, 'bin', 'x64', 'factorio'), [
'-c', path.join(this.instanceDirectory,'config.ini'),
'--create', path.join(this.instanceDirectory, 'saves',name),
'--server-settings', path.join(this.instanceDirectory, 'server-settings.json'),
],{
cwd:process.cwd(),
}
);
console.log(code.stdout.toString("utf8"))
console.log(code)
this.onProgress("log", "Map created");
return true;
createMap(name = "map.zip"){
return new Promise((resolve, reject) => {
this.isValidInstance().then(isValid => {
if(!isValid){
return createInstance();
}
}).then(()=>{
this.onProgress("log", "Starting map creation");
// console.log(this.factorioDirectory + '/bin/x64/factorio')
let proc = child_process.spawn(
path.join(this.factorioDirectory, 'bin', 'x64', 'factorio'), [
'-c', path.join(this.instanceDirectory,'config.ini'),
'--create', path.join(this.instanceDirectory, 'saves',name),
'--server-settings', path.join(this.instanceDirectory, 'server-settings.json'),
],{
cwd:process.cwd(),
}
);
// console.log(proc.stdout.toString("utf8"));
proc.stdout.on("data", data => this.onProgress("log", data.toString("utf8")));
proc.on("close", code => {
this.onProgress("log", "Map created! "+code);
resolve();
});
});
});
}
}