camelot-unchained
Version:
Camelot Unchained Client Library
113 lines (110 loc) • 5.7 kB
JavaScript
/**
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
"use strict";
var _listeners;
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
var EventEmitter_1 = require('./EventEmitter');
var defaultTopics_1 = require('./defaultTopics');
var Init_1 = require('./listeners/Init');
var Announcements_1 = require('./listeners/Announcements');
var BeginChat_1 = require('./listeners/BeginChat');
var Chat_1 = require('./listeners/Chat');
var Character_1 = require('./listeners/Character');
var EnemyTarget_1 = require('./listeners/EnemyTarget');
var FriendlyTarget_1 = require('./listeners/FriendlyTarget');
var ControlGame_1 = require('./listeners/ControlGame');
var ControlGameScore_1 = require('./listeners/ControlGameScore');
var Inventory_1 = require('./listeners/Inventory');
var EquippedGear_1 = require('./listeners/EquippedGear');
var Console_1 = require('./listeners/Console');
var Logging_1 = require('./listeners/Logging');
var Plot_1 = require('./listeners/Plot');
// Listeners
var listeners = (_listeners = {}, _defineProperty(_listeners, defaultTopics_1.clientEventTopics.initialize, new Init_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesAnnouncements, new Announcements_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesBeginChat, new BeginChat_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesChat, new Chat_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesCharacter, new Character_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesEnemyTarget, new EnemyTarget_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesFriendlyTarget, new FriendlyTarget_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesControlGame, new ControlGame_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesControlGameScore, new ControlGameScore_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesInventory, new Inventory_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesEquippedGear, new EquippedGear_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesConsole, new Console_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesLogging, new Logging_1.default()), _defineProperty(_listeners, defaultTopics_1.clientEventTopics.handlesPlot, new Plot_1.default()), _listeners);
// Event Emitter. A single instance of event emitter handles all cu-events events
var emitter = new EventEmitter_1.default();
/**
* Register a callback for specified topic.
* @method on
* @param topic {string} The topic name of the event
* @param callback {function} The handler to be called when the event is triggered.
* Passed the event data as the first argumnt
* @return {any} an event handler id (can be used to stop listening for the event)
*/
function on(topic, callback) {
var listener = listeners[topic];
if (listener) {
var handle = emitter.addListener(topic, listener.once, callback);
listener.start(emitter);
return handle;
}
return emitter.addListener(topic, false, callback);
}
exports.on = on;
/**
* Register a callback for specified topic, once only. Automatically unregisters
* from the event one triggered.
* @method once
* @param topic {string} The topic name of the event
* @param callback {function} The handler to be called when the event is triggered.
* Passed the event data as the first argument
* @return {any} an event handler id (can be used to stop listening for the event)
*/
function once(topic, callback) {
var listener = listeners[topic];
if (listener) {
var handle = emitter.addListener(topic, true, callback);
listener.start(emitter);
return handle;
}
return emitter.addListener(topic, true, callback);
}
exports.once = once;
// Unregister from events
/**
* Register a callback for specified topic, once only. Automatically unregisters
* from the event one triggered.
* @method off
* @param listener {any} ID returned from a call to on() once() or addEventListener()
*/
function off(listener) {
emitter.removeListener(listener);
}
exports.off = off;
// Fire events
/**
* Trigger an event for a topic, passing the event data (by reference) to any registered
* handlers. If passing by reference is an issue, the caller is responsible for cloning.
* @method fire
* @param topic {string} The topic name of the event
* @param data {any} Data to be passed to registered handlers
*/
function fire(topic, data) {
emitter.emit(topic, data);
}
exports.fire = fire;
function diagnostics() {
emitter.diagnostics();
}
function addListener(topic, callback) {
on(topic, callback);
}
exports.addListener = addListener;
function removeListener(listener) {
off(listener);
}
exports.removeListener = removeListener;
Object.defineProperty(exports, "__esModule", { value: true });
exports.default = {
clientEventTopics: defaultTopics_1.clientEventTopics,
on: on,
once: once,
off: off,
fire: fire,
diagnostics: diagnostics,
addListener: addListener,
removeListener: removeListener
};