This is a NodeCG bundle.
This bundle manages the so-called "hype train" for subscriptions and/or donations. It does not automatically listen for donations and subscriptions, but rather relies on some other bundle's extension to inform it of these events. This may change in the future.
- Install to
nodecg/bundles/lfg-hypetrain
- (OPTIONAL) Create
nodecg/cfg/lfg-hypetrain.json
to configurelfg-hypetrain
{
"autoStartCooldown": false,
"resetAfterThreshold": false,
"disableThresholdEditing": false
}
lfg-hypetrain isn't very useful on its own. It is a helper bundle meant to be leveraged by other bundles.
lfg-hypetrain broadcasts the following events that you can listen to in your bundle:
nodecg.listenFor('cooldownStart', 'lfg-hypetrain', callback);
nodecg.listenFor('cooldownTick', 'lfg-hypetrain', callback); // ticks every second with the elapsedTime and remainingTime
nodecg.listenFor('cooldownEnd', 'lfg-hypetrain', callback);
... where callback
is the name of a function with the signature function callbackName(data)
lfg-hypetrain
can receive the following messages:
nodecg.sendMessageToBundle('getPassengers', 'lfg-hypetrain', callback);
nodecg.sendMessageToBundle('getDayTotal', 'lfg-hypetrain', callback);
nodecg.sendMessageToBundle('startCooldown', 'lfg-hypetrain');
nodecg.sendMessageToBundle('endCooldown', 'lfg-hypetrain');
nodecg.sendMessageToBundle('resetCooldown', 'lfg-hypetrain');
... where callback
is the name of a function with the signature function callbackName(data)
lfg-hypetrain makes extensive use of Replicants, all of which your bundle can access, either to listen to or modify directly.
// The number of 'passengers' on the train
nodecg.Replicant('passengers', 'lfg-hypetrain');
// How many passengers there have been today
nodecg.Replicant('dayTotal', 'lfg-hypetrain');
// Number of passengers needed to engage 'hype' status
nodecg.Replicant('threshold', 'lfg-hypetrain');
// Duration of the cooldown
nodecg.Replicant('duration', 'lfg-hypetrain');
// How much time has elapsed in the cooldown
nodecg.Replicant('elapsedTime', 'lfg-hypetrain');
// How much time is left in the cooldown
nodecg.Replicant('remainingTime', 'lfg-hypetrain');
// Is the countdown currently active and ticking
nodecg.Replicant('isCooldownActive', 'lfg-hypetrain');
To control the train, add lfg-hypetrain
to your bundle's bundleDependencies
. Then, add code like the following to your bundle's extension:
module.exports = function (nodecg) {
var train = nodecg.extensions['lfg-hypetrain'];
var sublistener = nodecg.extensions['lfg-sublistener'];
sublistener.on('subscription', function onSubscription(subscription) {
// train.addPassenger increments the passenger count and returns the current state of the train
subscription.train = train.addPassenger();
nodecg.sendMessage('subscription', subscription);
// You can also control the cooldown directly
// train.startCooldown();
// train.resetCooldown();
// train.endCooldown();
// All events/synced variables listed above can be used here
});
}
lfg-hypetrain is provided under the MIT license, which is available to read in the [LICENSE][] file. [license]: LICENSE