UNPKG

@csegames/camelot-unchained

Version:

Camelot Unchained Client Library

121 lines (120 loc) 6.03 kB
"use strict"; /** * 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/. */ Object.defineProperty(exports, "__esModule", { value: true }); var EventEmitter_1 = require("./EventEmitter"); var defaultTopics_1 = require("./defaultTopics"); var BuildingEventTopics_1 = require("../building/events/BuildingEventTopics"); 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"); var BlockSelect_1 = require("../building/events/BlockSelect"); var BuildingMode_1 = require("../building/events/BuildingMode"); var BlueprintSelect_1 = require("../building/events/BlueprintSelect"); var BlueprintCopy_1 = require("../building/events/BlueprintCopy"); var buildingEventTopics = BuildingEventTopics_1.default; // Listeners var listeners = (_a = {}, _a[defaultTopics_1.clientEventTopics.initialize] = new Init_1.default(), _a[defaultTopics_1.clientEventTopics.handlesAnnouncements] = new Announcements_1.default(), _a[defaultTopics_1.clientEventTopics.handlesBeginChat] = new BeginChat_1.default(), _a[defaultTopics_1.clientEventTopics.handlesChat] = new Chat_1.default(), _a[defaultTopics_1.clientEventTopics.handlesCharacter] = new Character_1.default(), _a[defaultTopics_1.clientEventTopics.handlesEnemyTarget] = new EnemyTarget_1.default(), _a[defaultTopics_1.clientEventTopics.handlesFriendlyTarget] = new FriendlyTarget_1.default(), _a[defaultTopics_1.clientEventTopics.handlesControlGame] = new ControlGame_1.default(), _a[defaultTopics_1.clientEventTopics.handlesControlGameScore] = new ControlGameScore_1.default(), _a[defaultTopics_1.clientEventTopics.handlesInventory] = new Inventory_1.default(), _a[defaultTopics_1.clientEventTopics.handlesEquippedGear] = new EquippedGear_1.default(), _a[defaultTopics_1.clientEventTopics.handlesConsole] = new Console_1.default(), _a[defaultTopics_1.clientEventTopics.handlesLogging] = new Logging_1.default(), _a[defaultTopics_1.clientEventTopics.handlesPlot] = new Plot_1.default(), _a[buildingEventTopics.handlesBlockSelect] = new BlockSelect_1.default(), _a[buildingEventTopics.handlesBuildingMode] = new BuildingMode_1.default(), _a[buildingEventTopics.handlesBlueprintSelect] = new BlueprintSelect_1.default(), _a[buildingEventTopics.handlesBlueprintCopy] = new BlueprintCopy_1.default(), _a); // 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) { var params = []; for (var _i = 1; _i < arguments.length; _i++) { params[_i - 1] = arguments[_i]; } emitter.emit.apply(emitter, [topic].concat(params)); } 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; exports.default = { clientEventTopics: defaultTopics_1.clientEventTopics, buildingEventTopics: buildingEventTopics, on: on, once: once, off: off, fire: fire, diagnostics: diagnostics, addListener: addListener, removeListener: removeListener }; var _a;