Files
factorio-clusterio/plugins/research_sync/info.js
T
Hornwitser bf5a4a8a9c Split up into multiple packages with Lerna
Split up codebase into the packages @clsterio/lib, @clusterio/master,
@clusterio/slave, and @clusterio/ctl using lerna to manage them.  This
will allow deployment to use only the parts needed reducing install
size, and better separate the code into shared library, master, slave
and control.
2020-09-21 18:00:07 +02:00

82 lines
1.9 KiB
JavaScript

"use strict";
const link = require("@clusterio/lib/link");
// schema used for syncing technologies to and from the master
const technologies = {
type: "array",
items: {
type: "array",
minItems: 4,
maxItems: 4,
items: [
{ type: "string" },
{ type: "integer" },
{ type: ["null", "number"] },
{ type: "boolean" },
],
},
};
module.exports = {
name: "research_sync",
title: "Research Sync",
description: "Synchronises technology research progress between instances.",
version: "2.0.0-alpha",
instanceEntrypoint: "instance",
masterEntrypoint: "master",
messages: {
contribution: new link.Event({
type: "research_sync:contribution",
links: ["instance-slave", "slave-master"],
forwardTo: "master",
eventProperties: {
"name": { type: "string" },
"level": { type: "integer" },
"contribution": { type: "number" },
},
}),
progress: new link.Event({
type: "research_sync:progress",
links: ["master-slave", "slave-instance"],
broadcastTo: "instance",
eventProperties: {
"technologies": {
type: "array",
items: {
additionalProperties: false,
required: ["name", "level", "progress"],
properties: {
"name": { type: "string" },
"level": { type: "integer" },
"progress": { type: "number" },
},
},
},
},
}),
finished: new link.Event({
type: "research_sync:finished",
links: ["instance-slave", "slave-master", "master-slave", "slave-instance"],
forwardTo: "master",
broadcastTo: "instance",
eventProperties: {
"name": { type: "string" },
"level": { type: "integer" },
},
}),
syncTechnologies: new link.Request({
type: "research_sync:sync_technologies",
links: ["instance-slave", "slave-master"],
forwardTo: "master",
requestProperties: {
"technologies": technologies,
},
responseProperties: {
"technologies": technologies,
},
}),
},
};