ogamejs 2.1.4 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +22 -31
- package/{build → src}/buildings/crystal.js +16 -24
- package/{build → src}/buildings/deut.js +12 -22
- package/{build → src}/buildings/fusion-reactor.js +12 -22
- package/src/buildings/index.js +17 -0
- package/src/buildings/infocompte.js +91 -0
- package/{build → src}/buildings/metal.js +12 -21
- package/{build → src}/buildings/solar-plant.js +8 -17
- package/src/fleets/getDebris.js +20 -0
- package/src/fleets/index.js +7 -0
- package/src/index.js +17 -0
- package/{build → src}/models/buildings.js +14 -20
- package/{build → src}/models/destroyable.js +425 -332
- package/src/trades/crystal.js +16 -0
- package/src/trades/deut.js +16 -0
- package/src/trades/index.js +13 -0
- package/src/trades/metal.js +16 -0
- package/src/trades/parseRate.js +49 -0
- package/src/trades/utils.js +9 -0
- package/CHANGELOG.md +0 -50
- package/build/buildings/crystal.test.js +0 -32
- package/build/buildings/deut.test.js +0 -32
- package/build/buildings/fusion-reactor.test.js +0 -22
- package/build/buildings/index.js +0 -31
- package/build/buildings/infocompte.js +0 -150
- package/build/buildings/infocompte.test.js +0 -107
- package/build/buildings/metal.test.js +0 -32
- package/build/buildings/solar-plant.test.js +0 -21
- package/build/fleets/getDebris.js +0 -27
- package/build/fleets/getDebris.test.js +0 -26
- package/build/fleets/index.js +0 -16
- package/build/index.js +0 -30
- package/build/trades/crystal.js +0 -33
- package/build/trades/crystal.test.js +0 -16
- package/build/trades/deut.js +0 -33
- package/build/trades/deut.test.js +0 -16
- package/build/trades/index.js +0 -25
- package/build/trades/metal.js +0 -33
- package/build/trades/metal.test.js +0 -16
- package/build/trades/parseRate.js +0 -60
- package/build/trades/parseRate.test.js +0 -40
- package/build/trades/trades.js +0 -119
- package/build/trades/trades.test.js +0 -65
- package/build/trades/utils.js +0 -17
- package/build/trades/utils.test.js +0 -16
- package/build/winston.js +0 -16
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import parseRate from './parseRate.js';
|
|
2
|
+
|
|
3
|
+
function sellCrystal(crystal = 0, percentD = 40, percentM = 60, rate = '2:1.5:1') {
|
|
4
|
+
const pDeut = percentD / 100;
|
|
5
|
+
const pMetal = percentM / 100;
|
|
6
|
+
const { rateDeut, rateMetal } = parseRate(rate, 'crystal');
|
|
7
|
+
const deut = pDeut * rateDeut * crystal;
|
|
8
|
+
const metal = pMetal * rateMetal * crystal;
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
deut: Math.round(deut),
|
|
12
|
+
metal: Math.round(metal),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default sellCrystal;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import parseRate from './parseRate.js';
|
|
2
|
+
|
|
3
|
+
function sellDeut(deut = 0, percentM = 60, percentC = 40, rate = '2:1.5:1') {
|
|
4
|
+
const pMetal = percentM / 100;
|
|
5
|
+
const pCrystal = percentC / 100;
|
|
6
|
+
const { rateMetal, rateCrystal } = parseRate(rate, 'deut');
|
|
7
|
+
const metal = pMetal * rateMetal * deut;
|
|
8
|
+
const crystal = pCrystal * rateCrystal * deut;
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
metal: Math.round(metal),
|
|
12
|
+
crystal: Math.round(crystal),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default sellDeut;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import parseRate from './parseRate.js';
|
|
2
|
+
import sellDeut from './deut.js';
|
|
3
|
+
import sellCrystal from './crystal.js';
|
|
4
|
+
import sellMetal from './metal.js';
|
|
5
|
+
|
|
6
|
+
const Trader = {
|
|
7
|
+
parseRate,
|
|
8
|
+
sellDeut,
|
|
9
|
+
sellCrystal,
|
|
10
|
+
sellMetal,
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export default Trader;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import parseRate from './parseRate.js';
|
|
2
|
+
|
|
3
|
+
function sellMetal(metal = 0, percentD = 40, percentC = 60, rate = '2:1.5:1') {
|
|
4
|
+
const pDeut = percentD / 100;
|
|
5
|
+
const pCrystal = percentC / 100;
|
|
6
|
+
const { rateDeut, rateCrystal } = parseRate(rate, 'metal');
|
|
7
|
+
const deut = pDeut * rateDeut * metal;
|
|
8
|
+
const crystal = pCrystal * rateCrystal * metal;
|
|
9
|
+
|
|
10
|
+
return {
|
|
11
|
+
deut: Math.round(deut),
|
|
12
|
+
crystal: Math.round(crystal),
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export default sellMetal;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import hasNaN from './utils.js';
|
|
2
|
+
|
|
3
|
+
function extract(rate, type) {
|
|
4
|
+
let res = {};
|
|
5
|
+
const split = rate.split(':').map(Number);
|
|
6
|
+
const metal = split[0];
|
|
7
|
+
const crystal = split[1];
|
|
8
|
+
const deut = split[2];
|
|
9
|
+
|
|
10
|
+
if (type === 'metal') {
|
|
11
|
+
res = {
|
|
12
|
+
rateMetal: 1,
|
|
13
|
+
rateCrystal: crystal / metal,
|
|
14
|
+
rateDeut: deut / metal,
|
|
15
|
+
};
|
|
16
|
+
} else if (type === 'crystal') {
|
|
17
|
+
res = {
|
|
18
|
+
rateMetal: metal / crystal,
|
|
19
|
+
rateCrystal: 1,
|
|
20
|
+
rateDeut: deut / crystal,
|
|
21
|
+
};
|
|
22
|
+
} else if (type === 'deut') {
|
|
23
|
+
res = {
|
|
24
|
+
rateMetal: metal,
|
|
25
|
+
rateCrystal: crystal,
|
|
26
|
+
rateDeut: 1,
|
|
27
|
+
};
|
|
28
|
+
} else {
|
|
29
|
+
throw new Error(`${type} is not part of the game, try one of metal, crystal, deut`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return res;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
export default function parseRate(rate = '2:1.5:1', type = 'deut') {
|
|
36
|
+
const split = rate.split(':');
|
|
37
|
+
|
|
38
|
+
if (split.length !== 3) {
|
|
39
|
+
throw new Error('rate not parsed correctly');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const res = extract(rate, type);
|
|
43
|
+
|
|
44
|
+
if (hasNaN(Object.values(res))) {
|
|
45
|
+
throw new Error('rate not parsed correctly');
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return res;
|
|
49
|
+
}
|
package/CHANGELOG.md
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
-
|
|
5
|
-
### [2.1.3](https://github.com/rolljee/ogamejs/compare/v2.1.2...v2.1.3) (2020-04-16)
|
|
6
|
-
|
|
7
|
-
### [2.1.2](https://github.com/rolljee/ogamejs/compare/v2.1.1...v2.1.2) (2020-04-12)
|
|
8
|
-
|
|
9
|
-
### [2.1.1](https://github.com/rolljee/ogamejs/compare/v2.1.0...v2.1.1) (2020-04-12)
|
|
10
|
-
|
|
11
|
-
### [2.0.4](https://github.com/rolljee/ogamejs/compare/v2.0.3...v2.0.4) (2020-04-08)
|
|
12
|
-
|
|
13
|
-
### [2.0.3](https://github.com/rolljee/ogamejs/compare/v2.0.2...v2.0.3) (2020-04-08)
|
|
14
|
-
|
|
15
|
-
### [2.0.2](https://github.com/rolljee/ogamejs/compare/v2.0.0...v2.0.2) (2020-04-02)
|
|
16
|
-
|
|
17
|
-
## [2.0.0](https://github.com/rolljee/ogamejs/compare/v2.0.0-beta.0...v2.0.0) (2020-03-20)
|
|
18
|
-
|
|
19
|
-
## [2.0.0-beta.0](https://github.com/rolljee/ogamejs/compare/v1.1.2...v2.0.0-beta.0) (2020-03-06)
|
|
20
|
-
|
|
21
|
-
<a name="1.1.2"></a>
|
|
22
|
-
## [1.1.2](https://github.com/rolljee/ogamejs/compare/v1.1.1...v1.1.2) (2019-02-08)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
<a name="1.1.1"></a>
|
|
27
|
-
## [1.1.1](https://github.com/rolljee/ogamejs/compare/v1.1.0...v1.1.1) (2019-01-30)
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
### Bug Fixes
|
|
31
|
-
|
|
32
|
-
* 🐛 Fix issues in tests ([82bce05](https://github.com/rolljee/ogamejs/commit/82bce05))
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
<a name="1.1.0"></a>
|
|
37
|
-
# 1.1.0 (2019-01-29)
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
### Features
|
|
41
|
-
|
|
42
|
-
* 🎸 added metal and crystal calcul ([07371e0](https://github.com/rolljee/ogamejs/commit/07371e0))
|
|
43
|
-
* 🎸 Rework the way of parsing rates ([aa63c19](https://github.com/rolljee/ogamejs/commit/aa63c19))
|
|
44
|
-
* 🎸 SellDeut & ParseRate ([47b83f2](https://github.com/rolljee/ogamejs/commit/47b83f2))
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
# Change Log
|
|
49
|
-
|
|
50
|
-
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _crystal = _interopRequireDefault(require("./crystal"));
|
|
4
|
-
|
|
5
|
-
var _buildings = _interopRequireDefault(require("../models/buildings"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Crystal mine informations should be correctly return when', function () {
|
|
10
|
-
it('Level 30 is given and universe speed is 5 and position is 1', function () {
|
|
11
|
-
var mine = _buildings["default"][2].base;
|
|
12
|
-
var crystalMine = (0, _crystal["default"])(mine, 30, 1, 5);
|
|
13
|
-
expect(crystalMine).toEqual({
|
|
14
|
-
production: 68052,
|
|
15
|
-
energy: 5234,
|
|
16
|
-
metal: 39876839,
|
|
17
|
-
crystal: 19938419,
|
|
18
|
-
deuterium: 0
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
it('Level 30 is given and universe speed is 5 and position is 15', function () {
|
|
22
|
-
var mine = _buildings["default"][2].base;
|
|
23
|
-
var crystalMine = (0, _crystal["default"])(mine, 30, 15, 5);
|
|
24
|
-
expect(crystalMine).toEqual({
|
|
25
|
-
production: 52348,
|
|
26
|
-
energy: 5234,
|
|
27
|
-
metal: 39876839,
|
|
28
|
-
crystal: 19938419,
|
|
29
|
-
deuterium: 0
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _deut = _interopRequireDefault(require("./deut"));
|
|
4
|
-
|
|
5
|
-
var _buildings = _interopRequireDefault(require("../models/buildings"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Deut mine informations should be correctly return when', function () {
|
|
10
|
-
it('Level 30 is given and universe speed is 5 and average temperature is 37', function () {
|
|
11
|
-
var mine = _buildings["default"][3].base;
|
|
12
|
-
var crystalMine = (0, _deut["default"])(mine, 30, 37, 5);
|
|
13
|
-
expect(crystalMine).toEqual({
|
|
14
|
-
production: 31721,
|
|
15
|
-
energy: 10469,
|
|
16
|
-
metal: 28762658,
|
|
17
|
-
crystal: 9587552,
|
|
18
|
-
deuterium: 0
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
it('Level 32 is given and universe speed is 5 and average temperature is 138', function () {
|
|
22
|
-
var mine = _buildings["default"][3].base;
|
|
23
|
-
var crystalMine = (0, _deut["default"])(mine, 31, -138, 5);
|
|
24
|
-
expect(crystalMine).toEqual({
|
|
25
|
-
production: 56882,
|
|
26
|
-
energy: 11900,
|
|
27
|
-
metal: 43143988,
|
|
28
|
-
crystal: 14381329,
|
|
29
|
-
deuterium: 0
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _fusionReactor = _interopRequireDefault(require("./fusion-reactor"));
|
|
4
|
-
|
|
5
|
-
var _buildings = _interopRequireDefault(require("../models/buildings"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Fusion reactor informations should be correctly return when', function () {
|
|
10
|
-
it('Level 19 is given with ernergy tech 17', function () {
|
|
11
|
-
var reactor = _buildings["default"][5].base;
|
|
12
|
-
var fusionReact = (0, _fusionReactor["default"])(reactor, 19, 17, 5);
|
|
13
|
-
expect(fusionReact).toEqual({
|
|
14
|
-
production: 24929,
|
|
15
|
-
energy: 0,
|
|
16
|
-
metal: 35411767,
|
|
17
|
-
crystal: 14164706,
|
|
18
|
-
deuterium: 7082353,
|
|
19
|
-
consumption: 5810
|
|
20
|
-
});
|
|
21
|
-
});
|
|
22
|
-
});
|
package/build/buildings/index.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
|
|
8
|
-
var _crystal = _interopRequireDefault(require("./crystal"));
|
|
9
|
-
|
|
10
|
-
var _deut = _interopRequireDefault(require("./deut"));
|
|
11
|
-
|
|
12
|
-
var _metal = _interopRequireDefault(require("./metal"));
|
|
13
|
-
|
|
14
|
-
var _solarPlant = _interopRequireDefault(require("./solar-plant"));
|
|
15
|
-
|
|
16
|
-
var _fusionReactor = _interopRequireDefault(require("./fusion-reactor"));
|
|
17
|
-
|
|
18
|
-
var _infocompte = _interopRequireDefault(require("./infocompte"));
|
|
19
|
-
|
|
20
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
21
|
-
|
|
22
|
-
var Buildings = {
|
|
23
|
-
getCrystalMine: _crystal["default"],
|
|
24
|
-
getDeutSynth: _deut["default"],
|
|
25
|
-
getMetalMine: _metal["default"],
|
|
26
|
-
getSolarPlant: _solarPlant["default"],
|
|
27
|
-
getFusionReactor: _fusionReactor["default"],
|
|
28
|
-
parseInfoCompteData: _infocompte["default"]
|
|
29
|
-
};
|
|
30
|
-
var _default = Buildings;
|
|
31
|
-
exports["default"] = _default;
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
|
|
8
|
-
function _createForOfIteratorHelper(o) { if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (o = _unsupportedIterableToArray(o))) { var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var it, normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
9
|
-
|
|
10
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
|
|
11
|
-
|
|
12
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
13
|
-
|
|
14
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(n); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
15
|
-
|
|
16
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
17
|
-
|
|
18
|
-
function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; 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"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
19
|
-
|
|
20
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
21
|
-
|
|
22
|
-
function toNumber() {
|
|
23
|
-
var number = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
|
|
24
|
-
return Number(number.split('.').join(''));
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* Return information about the crystal mine given a specific level
|
|
29
|
-
* @param {object} data The infocompte bb-code
|
|
30
|
-
* @returns {Object} The parsed JSON object of infocompte
|
|
31
|
-
*/
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
function parseInfoCompteData(data) {
|
|
35
|
-
var universeDataRe = new RegExp('([0-9]{3}-[a-z]{2})');
|
|
36
|
-
|
|
37
|
-
var _data$match$1$split = data.match(universeDataRe)[1].split('-'),
|
|
38
|
-
_data$match$1$split2 = _slicedToArray(_data$match$1$split, 2),
|
|
39
|
-
universe = _data$match$1$split2[0],
|
|
40
|
-
lang = _data$match$1$split2[1]; // eslint-disable-next-line security/detect-unsafe-regex
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
var planetsRe = new RegExp('(?:Planète [0-9]+(.+))(?:s+(?:Planète [0-9]+))*', 'g');
|
|
44
|
-
var planets = data.matchAll(planetsRe);
|
|
45
|
-
var metalPointRe = new RegExp('Points dans les mines de métal : (.+)');
|
|
46
|
-
var metalPoint = toNumber(data.match(metalPointRe)[1]);
|
|
47
|
-
var crystalPointRe = new RegExp('Points dans les mines de cristal : (.+)');
|
|
48
|
-
var crystalPoint = toNumber(data.match(crystalPointRe)[1]);
|
|
49
|
-
var deutRe = new RegExp('Points dans les mines de deut : (.+)');
|
|
50
|
-
var deutPoint = toNumber(data.match(deutRe)[1]);
|
|
51
|
-
var plasmaRe = new RegExp('Technologie Plasma : (.+)');
|
|
52
|
-
var plasmaTechLevel = toNumber(data.match(plasmaRe)[1]);
|
|
53
|
-
var hourlyRe = new RegExp('Par heure : (.+)');
|
|
54
|
-
var hourly = data.match(hourlyRe);
|
|
55
|
-
|
|
56
|
-
var _hourly$1$split = hourly[1].split('/'),
|
|
57
|
-
_hourly$1$split2 = _slicedToArray(_hourly$1$split, 3),
|
|
58
|
-
hourlyMetal = _hourly$1$split2[0],
|
|
59
|
-
hourlyCristal = _hourly$1$split2[1],
|
|
60
|
-
hourlyDeut = _hourly$1$split2[2];
|
|
61
|
-
|
|
62
|
-
var _hourlyMetal$split = hourlyMetal.split(' '),
|
|
63
|
-
_hourlyMetal$split2 = _slicedToArray(_hourlyMetal$split, 1),
|
|
64
|
-
hourlyMetalValue = _hourlyMetal$split2[0];
|
|
65
|
-
|
|
66
|
-
var hourlyMetalNumber = toNumber(hourlyMetalValue);
|
|
67
|
-
|
|
68
|
-
var _hourlyCristal$split$ = hourlyCristal.split(' ').filter(Boolean),
|
|
69
|
-
_hourlyCristal$split$2 = _slicedToArray(_hourlyCristal$split$, 1),
|
|
70
|
-
hourlyCristalValue = _hourlyCristal$split$2[0];
|
|
71
|
-
|
|
72
|
-
var hourlyCristalNumber = toNumber(hourlyCristalValue);
|
|
73
|
-
|
|
74
|
-
var _hourlyDeut$split$fil = hourlyDeut.split(' ').filter(Boolean),
|
|
75
|
-
_hourlyDeut$split$fil2 = _slicedToArray(_hourlyDeut$split$fil, 1),
|
|
76
|
-
hourlyDeutValue = _hourlyDeut$split$fil2[0];
|
|
77
|
-
|
|
78
|
-
var hourlyDeutNumber = toNumber(hourlyDeutValue);
|
|
79
|
-
var response = {
|
|
80
|
-
planets: [],
|
|
81
|
-
production: {
|
|
82
|
-
hourly: {
|
|
83
|
-
metal: hourlyMetalNumber,
|
|
84
|
-
crystal: hourlyCristalNumber,
|
|
85
|
-
deut: hourlyDeutNumber
|
|
86
|
-
},
|
|
87
|
-
daily: {
|
|
88
|
-
metal: hourlyMetalNumber * 24,
|
|
89
|
-
crystal: hourlyCristalNumber * 24,
|
|
90
|
-
deut: hourlyDeutNumber * 24
|
|
91
|
-
},
|
|
92
|
-
weekly: {
|
|
93
|
-
metal: hourlyMetalNumber * 24 * 7,
|
|
94
|
-
crystal: hourlyCristalNumber * 24 * 7,
|
|
95
|
-
deut: hourlyDeutNumber * 24 * 7
|
|
96
|
-
}
|
|
97
|
-
},
|
|
98
|
-
points: {
|
|
99
|
-
metal: metalPoint,
|
|
100
|
-
crystal: crystalPoint,
|
|
101
|
-
deut: deutPoint,
|
|
102
|
-
total: metalPoint + crystalPoint + deutPoint
|
|
103
|
-
},
|
|
104
|
-
plasma: plasmaTechLevel,
|
|
105
|
-
universe: Number(universe),
|
|
106
|
-
lang: lang
|
|
107
|
-
}; // eslint-disable-next-line no-restricted-syntax
|
|
108
|
-
|
|
109
|
-
var _iterator = _createForOfIteratorHelper(planets),
|
|
110
|
-
_step;
|
|
111
|
-
|
|
112
|
-
try {
|
|
113
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
114
|
-
var planet = _step.value;
|
|
115
|
-
|
|
116
|
-
var _planet$0$split = planet[0].split('/'),
|
|
117
|
-
_planet$0$split2 = _slicedToArray(_planet$0$split, 4),
|
|
118
|
-
planetMetal = _planet$0$split2[0],
|
|
119
|
-
crystal = _planet$0$split2[1],
|
|
120
|
-
deut = _planet$0$split2[2],
|
|
121
|
-
temperatureText = _planet$0$split2[3];
|
|
122
|
-
|
|
123
|
-
var _temperatureText$spli = temperatureText.split('°'),
|
|
124
|
-
_temperatureText$spli2 = _slicedToArray(_temperatureText$spli, 1),
|
|
125
|
-
temperature = _temperatureText$spli2[0];
|
|
126
|
-
|
|
127
|
-
var _planetMetal$split = planetMetal.split(':'),
|
|
128
|
-
_planetMetal$split2 = _slicedToArray(_planetMetal$split, 2),
|
|
129
|
-
thePlanet = _planetMetal$split2[0],
|
|
130
|
-
metal = _planetMetal$split2[1];
|
|
131
|
-
|
|
132
|
-
response.planets.push({
|
|
133
|
-
planet: thePlanet.trim(),
|
|
134
|
-
metal: metal.trim().split(' ')[1],
|
|
135
|
-
crystal: crystal.trim().split(' ')[1],
|
|
136
|
-
deut: deut.trim().split(' ')[1],
|
|
137
|
-
temperature: Number.parseInt(temperature.trim(), 10)
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
} catch (err) {
|
|
141
|
-
_iterator.e(err);
|
|
142
|
-
} finally {
|
|
143
|
-
_iterator.f();
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
return response;
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
var _default = parseInfoCompteData;
|
|
150
|
-
exports["default"] = _default;
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _infocompte = _interopRequireDefault(require("./infocompte"));
|
|
4
|
-
|
|
5
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
6
|
-
|
|
7
|
-
describe('Infocompte informations should be correctly return when', function () {
|
|
8
|
-
it('Version is ', function () {
|
|
9
|
-
var params = "\n Niveau des mines du joueur Rolljee ( s165-fr ) le 07/04/2020, 16:40:32 :\n\n Plan\xE8te 01 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -94\xB0C\n Plan\xE8te 02 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -95\xB0C\n Plan\xE8te 03 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / 56\xB0C\n Plan\xE8te 04 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -118\xB0C\n Plan\xE8te 05 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -122\xB0C\n Plan\xE8te 06 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -97\xB0C\n Plan\xE8te 07 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 31 / -96\xB0C\n Plan\xE8te 08 : M\xE9tal 36 / Cristal 31 / Deut\xE9rium 33 / -108\xB0C\n Plan\xE8te 09 : M\xE9tal 38 / Cristal 31 / Deut\xE9rium 34 / -103\xB0C\n Plan\xE8te 10 : M\xE9tal 38 / Cristal 31 / Deut\xE9rium 34 / -76\xB0C\n Plan\xE8te 11 : M\xE9tal 38 / Cristal 31 / Deut\xE9rium 34 / -116\xB0C\n\n Points dans les mines de m\xE9tal : 4.832.457\n Points dans les mines de cristal : 2.807.321\n Points dans les mines de deut : 3.343.660\n Points dans les mines : 10.983.438\n Technologie Plasma : 15\n\n Par heure : 2.292.692 M\xE9tal / 726.693 Cristal / 718.186 Deut\xE9rium\n\n Par jour : 55.024.608 M\xE9tal / 17.440.632 Cristal / 17.236.464 Deut\xE9rium\n\n Par semaine : 385.172.256 M\xE9tal / 122.084.424 Cristal / 120.655.248 Deut\xE9rium\n\n Export with Infocompte v7.0.10\n ";
|
|
10
|
-
var response = (0, _infocompte["default"])(params);
|
|
11
|
-
expect(response).toEqual({
|
|
12
|
-
planets: [{
|
|
13
|
-
planet: 'Planète 01',
|
|
14
|
-
metal: '36',
|
|
15
|
-
crystal: '31',
|
|
16
|
-
deut: '31',
|
|
17
|
-
temperature: -94
|
|
18
|
-
}, {
|
|
19
|
-
planet: 'Planète 02',
|
|
20
|
-
metal: '36',
|
|
21
|
-
crystal: '31',
|
|
22
|
-
deut: '31',
|
|
23
|
-
temperature: -95
|
|
24
|
-
}, {
|
|
25
|
-
planet: 'Planète 03',
|
|
26
|
-
metal: '36',
|
|
27
|
-
crystal: '31',
|
|
28
|
-
deut: '31',
|
|
29
|
-
temperature: 56
|
|
30
|
-
}, {
|
|
31
|
-
planet: 'Planète 04',
|
|
32
|
-
metal: '36',
|
|
33
|
-
crystal: '31',
|
|
34
|
-
deut: '31',
|
|
35
|
-
temperature: -118
|
|
36
|
-
}, {
|
|
37
|
-
planet: 'Planète 05',
|
|
38
|
-
metal: '36',
|
|
39
|
-
crystal: '31',
|
|
40
|
-
deut: '31',
|
|
41
|
-
temperature: -122
|
|
42
|
-
}, {
|
|
43
|
-
planet: 'Planète 06',
|
|
44
|
-
metal: '36',
|
|
45
|
-
crystal: '31',
|
|
46
|
-
deut: '31',
|
|
47
|
-
temperature: -97
|
|
48
|
-
}, {
|
|
49
|
-
planet: 'Planète 07',
|
|
50
|
-
metal: '36',
|
|
51
|
-
crystal: '31',
|
|
52
|
-
deut: '31',
|
|
53
|
-
temperature: -96
|
|
54
|
-
}, {
|
|
55
|
-
planet: 'Planète 08',
|
|
56
|
-
metal: '36',
|
|
57
|
-
crystal: '31',
|
|
58
|
-
deut: '33',
|
|
59
|
-
temperature: -108
|
|
60
|
-
}, {
|
|
61
|
-
planet: 'Planète 09',
|
|
62
|
-
metal: '38',
|
|
63
|
-
crystal: '31',
|
|
64
|
-
deut: '34',
|
|
65
|
-
temperature: -103
|
|
66
|
-
}, {
|
|
67
|
-
planet: 'Planète 10',
|
|
68
|
-
metal: '38',
|
|
69
|
-
crystal: '31',
|
|
70
|
-
deut: '34',
|
|
71
|
-
temperature: -76
|
|
72
|
-
}, {
|
|
73
|
-
planet: 'Planète 11',
|
|
74
|
-
metal: '38',
|
|
75
|
-
crystal: '31',
|
|
76
|
-
deut: '34',
|
|
77
|
-
temperature: -116
|
|
78
|
-
}],
|
|
79
|
-
production: {
|
|
80
|
-
hourly: {
|
|
81
|
-
metal: 2292692,
|
|
82
|
-
crystal: 726693,
|
|
83
|
-
deut: 718186
|
|
84
|
-
},
|
|
85
|
-
daily: {
|
|
86
|
-
metal: 55024608,
|
|
87
|
-
crystal: 17440632,
|
|
88
|
-
deut: 17236464
|
|
89
|
-
},
|
|
90
|
-
weekly: {
|
|
91
|
-
metal: 385172256,
|
|
92
|
-
crystal: 122084424,
|
|
93
|
-
deut: 120655248
|
|
94
|
-
}
|
|
95
|
-
},
|
|
96
|
-
points: {
|
|
97
|
-
metal: 4832457,
|
|
98
|
-
crystal: 2807321,
|
|
99
|
-
deut: 3343660,
|
|
100
|
-
total: 10983438
|
|
101
|
-
},
|
|
102
|
-
plasma: 15,
|
|
103
|
-
universe: 165,
|
|
104
|
-
lang: 'fr'
|
|
105
|
-
});
|
|
106
|
-
});
|
|
107
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _metal = _interopRequireDefault(require("./metal"));
|
|
4
|
-
|
|
5
|
-
var _buildings = _interopRequireDefault(require("../models/buildings"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Metal mine informations should be correctly return when', function () {
|
|
10
|
-
it('Level 10 is given and universe speed is 5', function () {
|
|
11
|
-
var mine = _buildings["default"][1].base;
|
|
12
|
-
var metalMine = (0, _metal["default"])(mine, 10, 5);
|
|
13
|
-
expect(metalMine).toEqual({
|
|
14
|
-
production: 3890,
|
|
15
|
-
energy: 259,
|
|
16
|
-
metal: 2306,
|
|
17
|
-
crystal: 576,
|
|
18
|
-
deuterium: 0
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
it('Level 36 is given and universe speed is 5', function () {
|
|
22
|
-
var mine = _buildings["default"][1].base;
|
|
23
|
-
var metalMine = (0, _metal["default"])(mine, 36, 5);
|
|
24
|
-
expect(metalMine).toEqual({
|
|
25
|
-
production: 166928,
|
|
26
|
-
energy: 11128,
|
|
27
|
-
metal: 87366576,
|
|
28
|
-
crystal: 21841644,
|
|
29
|
-
deuterium: 0
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
});
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _solarPlant = _interopRequireDefault(require("./solar-plant"));
|
|
4
|
-
|
|
5
|
-
var _buildings = _interopRequireDefault(require("../models/buildings"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Solar plant informations should be correctly return when', function () {
|
|
10
|
-
it('Level 25 is given', function () {
|
|
11
|
-
var mine = _buildings["default"][4].base;
|
|
12
|
-
var solarPlant = (0, _solarPlant["default"])(mine, 25);
|
|
13
|
-
expect(solarPlant).toEqual({
|
|
14
|
-
production: 5417,
|
|
15
|
-
energy: 0,
|
|
16
|
-
metal: 1262558,
|
|
17
|
-
crystal: 505023,
|
|
18
|
-
deuterium: 0
|
|
19
|
-
});
|
|
20
|
-
});
|
|
21
|
-
});
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports["default"] = void 0;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* Returns the number of debris generated
|
|
11
|
-
* @param {number} shipId The ship identifier
|
|
12
|
-
* @param {number} number The number of ship
|
|
13
|
-
* @param {number} factor The universe debris factor
|
|
14
|
-
* @return {Object} The debris generated
|
|
15
|
-
*/
|
|
16
|
-
function getDebris(ship, number, factor) {
|
|
17
|
-
var cost = ship.cost;
|
|
18
|
-
var metalDebris = cost.metal ? cost.metal * factor : 0;
|
|
19
|
-
var crystalDebris = cost.crystal ? cost.crystal * factor : 0;
|
|
20
|
-
return {
|
|
21
|
-
metal: metalDebris * number,
|
|
22
|
-
crystal: crystalDebris * number
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
var _default = getDebris;
|
|
27
|
-
exports["default"] = _default;
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _getDebris = _interopRequireDefault(require("./getDebris"));
|
|
4
|
-
|
|
5
|
-
var _destroyable = _interopRequireDefault(require("../models/destroyable"));
|
|
6
|
-
|
|
7
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
8
|
-
|
|
9
|
-
describe('Debris should be correctly return when', function () {
|
|
10
|
-
it('A 10 light fighter crash with 60% in harvest fields', function () {
|
|
11
|
-
var ship = _destroyable["default"][1];
|
|
12
|
-
var debris = (0, _getDebris["default"])(ship, 10, 0.6);
|
|
13
|
-
expect(debris).toEqual({
|
|
14
|
-
metal: 18000,
|
|
15
|
-
crystal: 6000
|
|
16
|
-
});
|
|
17
|
-
});
|
|
18
|
-
it('A 10 light fighter crash with 30% in harvest fields', function () {
|
|
19
|
-
var ship = _destroyable["default"][1];
|
|
20
|
-
var debris = (0, _getDebris["default"])(ship, 10, 0.3);
|
|
21
|
-
expect(debris).toEqual({
|
|
22
|
-
metal: 9000,
|
|
23
|
-
crystal: 3000
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
});
|