UNPKG

camelot-unchained

Version:
113 lines (110 loc) 5.7 kB
/** * 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 };