1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, '__esModule', {
|
4 | value: true
|
5 | });
|
6 |
|
7 | 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; }; })();
|
8 |
|
9 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
|
10 |
|
11 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
|
12 |
|
13 | var _LevelLoader = require('./LevelLoader');
|
14 |
|
15 | var _LevelLoader2 = _interopRequireDefault(_LevelLoader);
|
16 |
|
17 | var _Logger = require('./Logger');
|
18 |
|
19 | var _Logger2 = _interopRequireDefault(_Logger);
|
20 |
|
21 | var _constantsEventTypes = require('./constants/eventTypes');
|
22 |
|
23 | var Level = (function () {
|
24 | function Level() {
|
25 | _classCallCheck(this, Level);
|
26 |
|
27 | this._warrior = null;
|
28 | this._floor = null;
|
29 | this._timeBonus = 0;
|
30 | }
|
31 |
|
32 | _createClass(Level, [{
|
33 | key: 'loadLevel',
|
34 | value: function loadLevel(config, warrior) {
|
35 | new _LevelLoader2['default'](this).load(config, warrior);
|
36 | }
|
37 | }, {
|
38 | key: 'loadPlayer',
|
39 | value: function loadPlayer() {
|
40 | this.warrior.loadPlayer();
|
41 | }
|
42 | }, {
|
43 | key: 'play',
|
44 | value: function play(turns) {
|
45 | var _this = this;
|
46 |
|
47 | for (var n = 0; n < turns; n++) {
|
48 | if (this._passed() || this._failed()) break;
|
49 |
|
50 | _Logger2['default'].log(_constantsEventTypes.TURN_CHANGED, { turn: n + 1 });
|
51 |
|
52 | this.floor.units.forEach(function (unit) {
|
53 | return unit.prepareTurn();
|
54 | });
|
55 | this.floor.units.forEach(function (unit) {
|
56 |
|
57 | unit.performTurn();
|
58 |
|
59 | var floor = _this.floor.toViewObject();
|
60 | _Logger2['default'].log(_constantsEventTypes.FLOOR_CHANGED, { floor: floor });
|
61 | });
|
62 |
|
63 | if (this.timeBonus) this.timeBonus -= 1;
|
64 | }
|
65 |
|
66 | var events = _Logger2['default'].events;
|
67 | _Logger2['default'].clear();
|
68 |
|
69 | return {
|
70 | events: events,
|
71 | passed: this._passed(),
|
72 | score: {
|
73 | level: this.warrior.score,
|
74 | timeBonus: this.timeBonus,
|
75 | clearBonus: this.clearBonus
|
76 | }
|
77 | };
|
78 | }
|
79 | }, {
|
80 | key: '_passed',
|
81 | value: function _passed() {
|
82 | return this.floor.stairsSpace.isWarrior();
|
83 | }
|
84 | }, {
|
85 | key: '_failed',
|
86 | value: function _failed() {
|
87 | return !this.floor.units.includes(this.warrior);
|
88 | }
|
89 | }, {
|
90 | key: 'warrior',
|
91 | get: function get() {
|
92 | return this._warrior;
|
93 | },
|
94 | set: function set(warrior) {
|
95 | this._warrior = warrior;
|
96 | }
|
97 | }, {
|
98 | key: 'floor',
|
99 | get: function get() {
|
100 | return this._floor;
|
101 | },
|
102 | set: function set(floor) {
|
103 | this._floor = floor;
|
104 | }
|
105 | }, {
|
106 | key: 'timeBonus',
|
107 | get: function get() {
|
108 | return this._timeBonus;
|
109 | },
|
110 | set: function set(timeBonus) {
|
111 | this._timeBonus = timeBonus;
|
112 | }
|
113 | }, {
|
114 | key: 'clearBonus',
|
115 | get: function get() {
|
116 | return !this.floor.otherUnits.length ? Math.round((this.warrior.score + this.timeBonus) * 0.2) : 0;
|
117 | }
|
118 | }]);
|
119 |
|
120 | return Level;
|
121 | })();
|
122 |
|
123 | exports['default'] = Level;
|
124 | module.exports = exports['default']; |
\ | No newline at end of file |