Innital concept
Innital draft for diffrent shaped science packs.
9
.gitignore
vendored
Normal file
|
@ -0,0 +1,9 @@
|
|||
# Default build dir
|
||||
/dist/
|
||||
|
||||
# Node.js files
|
||||
/node_modules/
|
||||
package-lock.json
|
||||
|
||||
# Blender backup files
|
||||
*.blend[1-9]
|
77
build.js
Normal file
|
@ -0,0 +1,77 @@
|
|||
"use strict";
|
||||
const events = require("events");
|
||||
const fs = require("fs-extra");
|
||||
const JSZip = require("jszip");
|
||||
const klaw = require("klaw");
|
||||
const path = require("path");
|
||||
const yargs = require("yargs");
|
||||
|
||||
|
||||
async function main() {
|
||||
const args = yargs
|
||||
.scriptName("build")
|
||||
.options({
|
||||
'clean': { describe: "Remove previous builds", type: 'boolean', default: false },
|
||||
'build': { describe: "Build mod", type: 'boolean', default: true },
|
||||
'pack': { describe: "Pack into zip file", type: 'boolean', default: true },
|
||||
'source-dir': { describe: "Path to mod source directory", nargs: 1, type: 'string', default: "src" },
|
||||
'output-dir': { describe: "Path to output built mod", nargs: 1, type: 'string', default: "dist" },
|
||||
})
|
||||
.argv
|
||||
;
|
||||
|
||||
let info = JSON.parse(await fs.readFile(path.join(args.sourceDir, "info.json")));
|
||||
|
||||
if (args.clean) {
|
||||
let splitter = /^(.*)_(\d+\.\d+\.\d+)(\.zip)?$/
|
||||
for (let entry of await fs.readdir(args.outputDir)) {
|
||||
let match = splitter.exec(entry);
|
||||
if (match) {
|
||||
let [, name, version] = match;
|
||||
if (name === info.name) {
|
||||
let modPath = path.join(args.outputDir, entry);
|
||||
console.log(`Removing ${modPath}`);
|
||||
await fs.remove(modPath);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (args.build) {
|
||||
await fs.ensureDir(args.outputDir);
|
||||
let modName = `${info.name}_${info.version}`;
|
||||
|
||||
if (args.pack) {
|
||||
let zip = new JSZip();
|
||||
let walker = klaw(args.sourceDir)
|
||||
.on('data', item => {
|
||||
if (item.stats.isFile()) {
|
||||
// On Windows the path created uses backslashes as the directory sepparator
|
||||
// but the zip file needs to use forward slashes. We can't use the posix
|
||||
// version of relative here as it doesn't work with Windows style paths.
|
||||
let basePath = path.relative(args.sourceDir, item.path).replace(/\\/g, "/");
|
||||
zip.file(path.posix.join(modName, basePath), fs.createReadStream(item.path));
|
||||
}
|
||||
});
|
||||
await events.once(walker, 'end');
|
||||
|
||||
let modPath = path.join(args.outputDir, `${modName}.zip`);
|
||||
console.log(`Writing ${modPath}`);
|
||||
let writeStream = zip.generateNodeStream().pipe(fs.createWriteStream(modPath));
|
||||
await events.once(writeStream, 'finish');
|
||||
|
||||
} else {
|
||||
let modDir = path.join(args.outputDir, modName);
|
||||
if (await fs.exists(modDir)) {
|
||||
console.log(`Removing existing build ${modDir}`);
|
||||
await fs.remove(modDir);
|
||||
}
|
||||
console.log(`Building ${modDir}`);
|
||||
await fs.copy(args.sourceDir, modDir);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (module === require.main) {
|
||||
main().catch(err => { console.log(err) });
|
||||
}
|
BIN
model.blend
Normal file
14
package.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
"name": "clusterioMod",
|
||||
"repository": "https://github.com/Danielv123/factorioClusterioMod",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=10"
|
||||
},
|
||||
"dependencies": {
|
||||
"fs-extra": "^6.0.1",
|
||||
"jszip": "^3.2.2",
|
||||
"klaw": "^3.0.0",
|
||||
"yargs": "^14.2.2"
|
||||
}
|
||||
}
|
43
src/data.lua
Normal file
|
@ -0,0 +1,43 @@
|
|||
local items = {
|
||||
["automation-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/red.png",
|
||||
},
|
||||
["logistic-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/green.png",
|
||||
},
|
||||
["military-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/black.png",
|
||||
},
|
||||
["chemical-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/cyan.png",
|
||||
},
|
||||
["production-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/purple.png",
|
||||
},
|
||||
["utility-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/yellow.png",
|
||||
},
|
||||
["space-science-pack"] = {
|
||||
icon_size = 256,
|
||||
icon = "__cb-science__/graphics/white.png",
|
||||
},
|
||||
}
|
||||
|
||||
for name, definition in pairs(items) do
|
||||
print(name)
|
||||
for property, value in pairs(definition) do
|
||||
if data.raw.technology[name] then
|
||||
print("setting tech "..name.." property "..property)
|
||||
data.raw.technology[name][property] = value
|
||||
end
|
||||
if data.raw.tool[name] then
|
||||
data.raw.tool[name][property] = value
|
||||
end
|
||||
end
|
||||
end
|
BIN
src/graphics/black.png
Normal file
After Width: | Height: | Size: 69 KiB |
BIN
src/graphics/cyan.png
Normal file
After Width: | Height: | Size: 68 KiB |
BIN
src/graphics/green.png
Normal file
After Width: | Height: | Size: 78 KiB |
BIN
src/graphics/purple.png
Normal file
After Width: | Height: | Size: 93 KiB |
BIN
src/graphics/red.png
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
src/graphics/white.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
src/graphics/yellow.png
Normal file
After Width: | Height: | Size: 87 KiB |
9
src/info.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name": "cb-science",
|
||||
"version": "0.1.0",
|
||||
"title": "Colour Blind Science",
|
||||
"author": "Hornwitser",
|
||||
"contact": "Hornwitser#6431 on Discord",
|
||||
"description": "Alternative icons for science packs",
|
||||
"factorio_version": "0.17"
|
||||
}
|
BIN
src/thumbnail.png
Normal file
After Width: | Height: | Size: 306 KiB |