You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
3.6 KiB
105 lines
3.6 KiB
var fs = require('fs');
|
|
|
|
const profilePath = require('os').homedir();
|
|
exports.profilePath = profilePath;
|
|
|
|
var minetestPath = profilePath + "/minetest"; // TODO: differs from .minetest if not RUN_IN_PLACE
|
|
exports.minetestPath = function() {
|
|
return minetestPath;
|
|
}
|
|
|
|
const myName = "minetestinfo.js";
|
|
var skinsPath = "";
|
|
exports.skinsPath = function () {
|
|
return skinsPath;
|
|
}
|
|
|
|
var selectableSkinFileNames = [];
|
|
|
|
exports.selectableSkinFileNames = function() {
|
|
return selectableSkinFileNames;
|
|
}
|
|
|
|
exports.players = function(isLoggedIn) {
|
|
return []; // TODO: implement this
|
|
}
|
|
|
|
exports.setSkin = function(userName, skinFileName) {
|
|
var indirectName = "player_" + userName + ".skin";
|
|
var indirectPath = exports.skinsPath() + "/" + indirectName;
|
|
//if (skinName.endsWith('.png')) {
|
|
//console.log("WARNING: skinName should not specify extension--removing .png");
|
|
//skinName = skinName.substring(0, skinName.length-4);
|
|
//}
|
|
//var skinFileName = skinName + ".png";
|
|
fs.writeFile(indirectPath, skinFileName, function(err, data) {
|
|
if (err) {
|
|
msg = err.message;
|
|
console.log(err);
|
|
// res.write(msg + "<br/>")
|
|
}
|
|
else {
|
|
// res.write("Before the skin is applied, The minetestserver instance must be restarted.<br/>")
|
|
msg = "Successfully wrote " + skinFileName;
|
|
console.log(msg + " to " + indirectPath + ".");
|
|
// res.write(msg + "<br/>")
|
|
}
|
|
// res.end(ending);
|
|
});
|
|
}
|
|
|
|
exports.regeneratePaths = function () {
|
|
skinsPath = minetestPath + "/games/Bucket_Game/mods/codercore/coderskins/textures";
|
|
if (fs.existsSync( minetestPath + "/games/ENLIVEN")) {
|
|
skinsPath = minetestPath + "/games/ENLIVEN/mods/codercore/coderskins/textures";
|
|
}
|
|
console.log("[" + myName + "] skinsPath: \"" + skinsPath + "\"");
|
|
var publicPath = __dirname + "/public";
|
|
var publicSkinsPath = publicPath + "/skins";
|
|
if (!fs.existsSync(publicPath)) {
|
|
fs.mkdirSync(publicPath, 0744);
|
|
}
|
|
if (!fs.existsSync(publicSkinsPath)) {
|
|
fs.mkdirSync(publicSkinsPath, 0744);
|
|
fs.readdir(skinsPath, (err, files) => {
|
|
selectableSkinFileNames = [];
|
|
files.forEach(file => {
|
|
if (file.startsWith("skin_") && file.endsWith(".png")) {
|
|
var srcPath = skinsPath + '/' + file;
|
|
var dstPath = publicSkinsPath + '/' + file;
|
|
console.log("copying '" + srcPath + "' to '" + dstPath + "'");
|
|
fs.copyFile(srcPath, dstPath, fs.constants.COPYFILE_EXCL, (err) => {
|
|
if (err) throw err;
|
|
selectableSkinFileNames.push(file);
|
|
// console.log('source.txt was copied to destination.txt');
|
|
});
|
|
}
|
|
else {
|
|
console.log("not a skin: " + file)
|
|
}
|
|
// console.log(file);
|
|
});
|
|
});
|
|
}
|
|
else {
|
|
fs.readdir(publicSkinsPath, (err, files) => {
|
|
selectableSkinFileNames = [];
|
|
files.forEach(file => {
|
|
if (file.startsWith("skin_") && file.endsWith(".png")) {
|
|
selectableSkinFileNames.push(file);
|
|
// console.log("detected existing " + file);
|
|
}
|
|
else {
|
|
console.log("bad skin: " + file)
|
|
}
|
|
// console.log(file);
|
|
});
|
|
});
|
|
}
|
|
|
|
}
|
|
var thisMinetest = "/tank/local/owner/minetest";
|
|
if (fs.existsSync(thisMinetest)) {
|
|
minetestPath = thisMinetest;
|
|
}
|
|
exports.regeneratePaths();
|
|
|