UNPKG

3.64 kBJavaScriptView Raw
1'use strict';
2
3Object.defineProperty(exports, '__esModule', {
4 value: true
5});
6
7var _slicedToArray = (function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i['return']) _i['return'](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError('Invalid attempt to destructure non-iterable instance'); } }; })();
8
9var _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; }; })();
10
11function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
12
13function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
14
15var _abilitiesSensesSense = require('./abilities/senses/Sense');
16
17var _abilitiesSensesSense2 = _interopRequireDefault(_abilitiesSensesSense);
18
19var _decoratorsPlayerObject = require('./decorators/playerObject');
20
21var allowedMembers = ['attack', 'bind', 'detonate', 'directionOf', 'directionOfStairs', 'distanceOf', 'explode', 'feel', 'health', 'listen', 'look', 'pivot', 'rescue', 'rest', 'shoot', 'walk'];
22
23var Turn = (function () {
24 function Turn(abilities) {
25 var _this = this;
26
27 _classCallCheck(this, _Turn);
28
29 this._action = null;
30 this._senses = {};
31
32 Object.entries(abilities).forEach(function (_ref) {
33 var _ref2 = _slicedToArray(_ref, 2);
34
35 var name = _ref2[0];
36 var ability = _ref2[1];
37
38 if (ability instanceof _abilitiesSensesSense2['default']) {
39 _this._addSense(name, ability);
40 } else {
41 _this._addAction(name);
42 }
43 });
44 }
45
46 _createClass(Turn, [{
47 key: '_addAction',
48 value: function _addAction(name) {
49 var _this2 = this;
50
51 Object.defineProperty(this, name, {
52 value: function value() {
53 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
54 args[_key] = arguments[_key];
55 }
56
57 if (_this2.action) {
58 throw new Error('Only one action can be performed per turn.');
59 }
60
61 _this2._action = [name, args];
62 }
63 });
64 }
65 }, {
66 key: '_addSense',
67 value: function _addSense(name, sense) {
68 var _this3 = this;
69
70 this._senses[name] = sense;
71 Object.defineProperty(this, name, {
72 value: function value() {
73 var _senses$name;
74
75 return (_senses$name = _this3._senses[name]).perform.apply(_senses$name, arguments);
76 }
77 });
78 }
79 }, {
80 key: 'action',
81 get: function get() {
82 return this._action;
83 }
84 }]);
85
86 var _Turn = Turn;
87 Turn = (0, _decoratorsPlayerObject.playerObject)(allowedMembers)(Turn) || Turn;
88 return Turn;
89})();
90
91exports['default'] = Turn;
92module.exports = exports['default'];
\No newline at end of file