cu-events
Version:
Camelot Unchained Client Library - Events
98 lines (87 loc) • 11.2 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/.
*/
;
Object.defineProperty(exports, '__esModule', {
value: true
});
var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
var _cuCore = require('cu-core');
function run(emitter, topic) {
var info = {};
var instance = undefined;
// Event receivers
function nameChanged(name) {
if (name === "") {
instance.reset(); // reset if no target
}
instance.setName(name);
emitter.emit(topic, instance);
}
function raceChanged(race) {
instance.setRace(race);
emitter.emit(topic, instance);
}
function healthChanged(health, maxHealth) {
instance.setHealth(health, maxHealth);
emitter.emit(topic, instance);
}
function staminaChanged(stamina, maxStamina) {
instance.setStamina(stamina, maxStamina);
emitter.emit(topic, instance);
}
function injuriesChanged(part, health, maxHealth, wounds) {
if (instance.name) {
instance.setInjury(part, health, maxHealth, wounds);
emitter.emit(topic, instance);
}
}
// Hook up event receivers to the relevant cuAPI methods
switch (topic) {
case 'character':
instance = new _cuCore.Player({});
cuAPI.OnCharacterNameChanged(nameChanged);
cuAPI.OnCharacterRaceChanged(raceChanged);
cuAPI.OnCharacterHealthChanged(healthChanged);
cuAPI.OnCharacterStaminaChanged(staminaChanged);
cuAPI.OnCharacterInjuriesChanged(injuriesChanged);
break;
case 'enemytarget':
instance = new _cuCore.Combatant({});
cuAPI.OnEnemyTargetNameChanged(nameChanged);
cuAPI.OnEnemyTargetHealthChanged(healthChanged);
cuAPI.OnEnemyTargetStaminaChanged(staminaChanged);
cuAPI.OnEnemyTargetInjuriesChanged(injuriesChanged);
break;
case 'friendlytarget':
instance = new _cuCore.Combatant({});
cuAPI.OnFriendlyTargetNameChanged(nameChanged);
cuAPI.OnFriendlyTargetHealthChanged(healthChanged);
cuAPI.OnFriendlyTargetStaminaChanged(staminaChanged);
cuAPI.OnFriendlyTargetInjuriesChanged(injuriesChanged);
break;
}
}
var UnitFrameListener = (function () {
function UnitFrameListener(handles) {
_classCallCheck(this, UnitFrameListener);
this.listening = false;
this.topic = handles.topic;
}
_createClass(UnitFrameListener, [{
key: 'start',
value: function start(emitter) {
if (!this.listening) {
this.listening = true;
run(emitter, this.topic);
}
}
}]);
return UnitFrameListener;
})();
exports['default'] = UnitFrameListener;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRzL2xpc3RlbmVycy9fVW5pdEZyYW1lLnRzIl0sIm5hbWVzIjpbInJ1biIsInJ1bi5uYW1lQ2hhbmdlZCIsInJ1bi5yYWNlQ2hhbmdlZCIsInJ1bi5oZWFsdGhDaGFuZ2VkIiwicnVuLnN0YW1pbmFDaGFuZ2VkIiwicnVuLmluanVyaWVzQ2hhbmdlZCIsIlVuaXRGcmFtZUxpc3RlbmVyIiwiVW5pdEZyYW1lTGlzdGVuZXIuY29uc3RydWN0b3IiLCJVbml0RnJhbWVMaXN0ZW5lci5zdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O3NCQU9rQyxTQUFTOztBQUkzQyxTQUFBLEdBQUEsQ0FBYSxPQUFxQixFQUFFLEtBQWEsRUFBQTtBQUMvQ0EsUUFBTUEsSUFBSUEsR0FBUUEsRUFBRUEsQ0FBQ0E7QUFDckJBLFFBQUlBLFFBQW1CQSxZQUFBQSxDQUFDQTs7QUFHeEJBLGFBQUFBLFdBQUFBLENBQXFCQSxJQUFZQSxFQUFBQTtBQUMvQkMsWUFBSUEsSUFBSUEsS0FBS0EsRUFBRUEsRUFBRUE7QUFDZkEsb0JBQVFBLENBQUNBLEtBQUtBLEVBQUVBLENBQUNBO1NBQ2xCQTtBQUNEQSxnQkFBUUEsQ0FBQ0EsT0FBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsQ0FBQ0E7QUFDdkJBLGVBQU9BLENBQUNBLElBQUlBLENBQUNBLEtBQUtBLEVBQUVBLFFBQVFBLENBQUNBLENBQUNBO0tBQy9CQTtBQUVERCxhQUFBQSxXQUFBQSxDQUFxQkEsSUFBVUEsRUFBQUE7QUFDN0JFLGdCQUFRQSxDQUFDQSxPQUFPQSxDQUFDQSxJQUFJQSxDQUFDQSxDQUFDQTtBQUN2QkEsZUFBT0EsQ0FBQ0EsSUFBSUEsQ0FBQ0EsS0FBS0EsRUFBRUEsUUFBUUEsQ0FBQ0EsQ0FBQ0E7S0FDL0JBO0FBRURGLGFBQUFBLGFBQUFBLENBQXVCQSxNQUFjQSxFQUFFQSxTQUFpQkEsRUFBQUE7QUFDdERHLGdCQUFRQSxDQUFDQSxTQUFTQSxDQUFDQSxNQUFNQSxFQUFFQSxTQUFTQSxDQUFDQSxDQUFD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RUFBRUEsSUFBSUEsQ0FBQ0EsS0FBS0EsQ0FBQ0EsQ0FBQ0E7YUFDMUJBO1NBQ0ZBOzs7V0FYSCxpQkFBQTs7O3FCQUFBLGlCQUFBIiwiZmlsZSI6InRzL2xpc3RlbmVycy9fVW5pdEZyYW1lLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlzIFNvdXJjZSBDb2RlIEZvcm0gaXMgc3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhlIE1vemlsbGEgUHVibGljXG4gKiBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzXG4gKiBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLlxuICovXG5cbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSAnLi4vY2xhc3Nlcy9FdmVudEVtaXR0ZXInO1xuaW1wb3J0IHsgQ29tYmF0YW50LCBQbGF5ZXIgfSBmcm9tICdjdS1jb3JlJztcbmltcG9ydCB7IHJhY2UgfSBmcm9tICdjdS1jb3JlJztcbmRlY2xhcmUgY29uc3QgY3VBUEk6IGFueTtcblxuZnVuY3Rpb24gcnVuKGVtaXR0ZXI6IEV2ZW50RW1pdHRlciwgdG9waWM6IHN0cmluZykge1xuICBjb25zdCBpbmZvOiBhbnkgPSB7fTtcbiAgbGV0IGluc3RhbmNlOiBDb21iYXRhbnQ7XG5cbiAgLy8gRXZlbnQgcmVjZWl2ZXJzXG4gIGZ1bmN0aW9uIG5hbWVDaGFuZ2VkKG5hbWU6IHN0cmluZykge1xuICAgIGlmIChuYW1lID09PSBcIlwiKSB7XG4gICAgICBpbnN0YW5jZS5yZXNldCgpOyAgICAgICAgICAgICAvLyByZXNldCBpZiBubyB0YXJnZXRcbiAgICB9XG4gICAgaW5zdGFuY2Uuc2V0TmFtZShuYW1lKTtcbiAgICBlbWl0dGVyLmVtaXQodG9waWMsIGluc3RhbmNlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJhY2VDaGFuZ2VkKHJhY2U6IHJhY2UpIHtcbiAgICBpbnN0YW5jZS5zZXRSYWNlKHJhY2UpO1xuICAgIGVtaXR0ZXIuZW1pdCh0b3BpYywgaW5zdGFuY2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGVhbHRoQ2hhbmdlZChoZWFsdGg6IG51bWJlciwgbWF4SGVhbHRoOiBudW1iZXIpIHtcbiAgICBpbnN0YW5jZS5zZXRIZWFsdGgoaGVhbHRoLCBtYXhIZWFsdGgpO1xuICAgIGVtaXR0ZXIuZW1pdCh0b3BpYywgaW5zdGFuY2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gc3RhbWluYUNoYW5nZWQoc3RhbWluYTogbnVtYmVyLCBtYXhTdGFtaW5hOiBudW1iZXIpIHtcbiAgICBpbnN0YW5jZS5zZXRTdGFtaW5hKHN0YW1pbmEsIG1heFN0YW1pbmEpO1xuICAgIGVtaXR0ZXIuZW1pdCh0b3BpYywgaW5zdGFuY2UpO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5qdXJpZXNDaGFuZ2VkKHBhcnQ6IG51bWJlciwgaGVhbHRoOiBudW1iZXIsIG1heEhlYWx0aDogbnVtYmVyLCB3b3VuZHM6IG51bWJlcikge1xuICAgIGlmIChpbnN0YW5jZS5uYW1lKSB7XG4gICAgICBpbnN0YW5jZS5zZXRJbmp1cnkocGFydCwgaGVhbHRoLCBtYXhIZWFsdGgsIHdvdW5kcyk7XG4gICAgICBlbWl0dGVyLmVtaXQodG9waWMsIGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICAvLyBIb29rIHVwIGV2ZW50IHJlY2VpdmVycyB0byB0aGUgcmVsZXZhbnQgY3VBUEkgbWV0aG9kc1xuICBzd2l0Y2ggKHRvcGljKSB7XG4gICAgY2FzZSAnY2hhcmFjdGVyJzpcbiAgICAgIGluc3RhbmNlID0gbmV3IFBsYXllcig8UGxheWVyPnt9KTtcbiAgICAgIGN1QVBJLk9uQ2hhcmFjdGVyTmFtZUNoYW5nZWQobmFtZUNoYW5nZWQpO1xuICAgICAgY3VBUEkuT25DaGFyYWN0ZXJSYWNlQ2hhbmdlZChyYWNlQ2hhbmdlZCk7XG4gICAgICBjdUFQSS5PbkNoYXJhY3RlckhlYWx0aENoYW5nZWQoaGVhbHRoQ2hhbmdlZCk7XG4gICAgICBjdUFQSS5PbkNoYXJhY3RlclN0YW1pbmFDaGFuZ2VkKHN0YW1pbmFDaGFuZ2VkKTtcbiAgICAgIGN1QVBJLk9uQ2hhcmFjdGVySW5qdXJpZXNDaGFuZ2VkKGluanVyaWVzQ2hhbmdlZCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdlbmVteXRhcmdldCc6XG4gICAgICBpbnN0YW5jZSA9IG5ldyBDb21iYXRhbnQoPENvbWJhdGFudD57fSk7XG4gICAgICBjdUFQSS5PbkVuZW15VGFyZ2V0TmFtZUNoYW5nZWQobmFtZUNoYW5nZWQpO1xuICAgICAgY3VBUEkuT25FbmVteVRhcmdldEhlYWx0aENoYW5nZWQoaGVhbHRoQ2hhbmdlZCk7XG4gICAgICBjdUFQSS5PbkVuZW15VGFyZ2V0U3RhbWluYUNoYW5nZWQoc3RhbWluYUNoYW5nZWQpO1xuICAgICAgY3VBUEkuT25FbmVteVRhcmdldEluanVyaWVzQ2hhbmdlZChpbmp1cmllc0NoYW5nZWQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnZnJpZW5kbHl0YXJnZXQnOlxuICAgICAgaW5zdGFuY2UgPSBuZXcgQ29tYmF0YW50KDxDb21iYXRhbnQ+e30pO1xuICAgICAgY3VBUEkuT25GcmllbmRseVRhcmdldE5hbWVDaGFuZ2VkKG5hbWVDaGFuZ2VkKTtcbiAgICAgIGN1QVBJLk9uRnJpZW5kbHlUYXJnZXRIZWFsdGhDaGFuZ2VkKGhlYWx0aENoYW5nZWQpO1xuICAgICAgY3VBUEkuT25GcmllbmRseVRhcmdldFN0YW1pbmFDaGFuZ2VkKHN0YW1pbmFDaGFuZ2VkKTtcbiAgICAgIGN1QVBJLk9uRnJpZW5kbHlUYXJnZXRJbmp1cmllc0NoYW5nZWQoaW5qdXJpZXNDaGFuZ2VkKTtcbiAgICAgIGJyZWFrO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVuaXRGcmFtZUxpc3RlbmVyIHtcbiAgbGlzdGVuaW5nOiBib29sZWFuID0gZmFsc2U7XG4gIHRvcGljOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKGhhbmRsZXM6IGFueSkge1xuICAgIHRoaXMudG9waWMgPSBoYW5kbGVzLnRvcGljO1xuICB9XG4gIHN0YXJ0KGVtaXR0ZXI6IEV2ZW50RW1pdHRlcik6IHZvaWQge1xuICAgIGlmICghdGhpcy5saXN0ZW5pbmcpIHtcbiAgICAgIHRoaXMubGlzdGVuaW5nID0gdHJ1ZTtcbiAgICAgIHJ1bihlbWl0dGVyLCB0aGlzLnRvcGljKTtcbiAgICB9XG4gIH1cbn1cbiJdLCJzb3VyY2VSb290IjoiLi4vIn0=